Zaquencer Preset Data: 8 SysEx Messages per Preset, each of 273 Bytes: 12 Bytes Header 256 Bytes data (SysEx Nibbles) 5 Bytes footer Only the data (8x256) gives 2048 SysEx Nibbles These combine to 1024 full Bytes for 4 tracks => 256 full Bytes per track Of these: 12 Bytes - per Track Data 248 Bytes - per Step Data ================================================================================================ Preset Hex Data for one track: 000 00 00 00 00 00 00 01 20 00 04 00 00 00 00 00 00 ....... ........ 010 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ???????????????? 020 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ???????????????? 030 7f ff 7f 7f 7f ff 7f 7f 7f ff 7f 7f 7f ff 7f 7f .ÿ...ÿ...ÿ...ÿ.. 040 7f ff 7f 7f 7f ff 7f 7f 7f ff 7f 7f 7f ff 7f 7f .ÿ...ÿ...ÿ...ÿ.. 050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 070 22 22 22 22 22 22 22 22 22 22 22 22 ff ff ff ff """"""""""""ÿÿÿÿ 080 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 090 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 0a0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 0b0 ff ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 ÿÿÿÿÿÿÿÿÿÿÿÿ.... 0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ ================================================================================================ per Track Data: unsigned int skipStep; /* 4; flag register of 32 flags */ /* skipStep is absolute step in 32 BCR steps */ /* per page parameters */ char trackMute; /* 5 */ /* 1 bit; determines if the track gives any output. 0 = unmuted; 1 = muted */ signed char dir; /* 6 */ /* 2 bits */ char sequenceStart; /* 7 */ /* 5 bits */ char sequenceLength; /* 8 */ /* 5 bits */ char sequenceOffset; /* 9 */ /* 5 bits */ unsigned char selectedClockDivider; /* 10 */ /* 4 bits */ char shuffleEvenTicks; /* 11 */ char shuffleOddTicks; /* 12 */ unsigned short drumMutes; /* 13-14 */ /* flag register of 16 flags */ unsigned short generalPurposeMemory; /* 15-16 */ BYTE NR DATA ================================================ 0-3 skipStep 4 trackMute 5 dir 6 sequenceStart 7 sequenceLength 8 sequenceOffset 9 selectedClockDivider 10 shuffleEvenTicks 11 shuffleOddTicks 12-13 drumMutes 14-15 generalPurposeMemory (unused) ================================================================================================ per Step Data: (NR_HARDWARESTEPS = 32) char noteVal[NR_HARDWARESTEPS]; /* noteVelocity 7Bit MIDI Value; reuse 8th bit for noteLength parameter */ char noteVelocity[NR_HARDWARESTEPS]; signed char noteStartTimeOffset[NR_HARDWARESTEPS]; /* noteLength is a 4Bit value (0-15); we provide 24 steps here (12x8bits = 24x4) and get the missing 8 steps (8x4bit = 32) from the unused 8th bit in noteVelocity */ char noteLength[12]; /* CCVal is a 8Bit value 7 Midi Bit (0-127) and -1 for off! */ signed char CCVal[NR_OF_CC][NR_HARDWARESTEPS]; /* 16 Bits per Step for the Polyphony function (one bit for each possible note) */ unsigned short notePolyphony[NR_HARDWARESTEPS]; unsigned int noteMute; /* flag register of 32 flags; */ BYTE NR DATA ================================================ 16-47 noteVal (7 bit) 48-79 noteVelocity (7 bit, 8th bit reused for NoteLength) 80-111 noteStartTimeOffset 112-123 noteLength 124-187 CCVal 1 + 2 188-251 notePolyphony 252-255 noteMute ================================================================================================ ================================================================================================ ================================================================================================ ================================================================================================ Global Data: Track 1 00 00 00 00 00 0X 00 00 00 0Y 00 00 00 00 Z1 Z2 00 ................ X: MidiOutAB (0-2) Y: MidiChannel (0-15) Z1+2: CCNr1+2 (0-127) 10 00 00 0U 00 00 00 0V 01 02 03 04 05 06 07 08 09 ................ U: PolyMode 0-1 (Drums/chords) V-W next line: drum note mapping inst 1-16 (0-127) 20 0a 0b 0c 0d 0e 0W Track 2 00 00 00 00 0X 00 00 00 0Y 00 ................ X: MidiOutAB (0-2) Y: MidiChannel (0-15) Z1+2: CCNr1+2 (0-127) 30 00 00 00 Z1 Z2 00 00 00 0U 00 00 00 0V 03 02 03 ..ü............. U: PolyMode 0-1 (Drums/chords) V-W next line: drum note mapping inst 1-16 (0-127) 40 04 05 06 07 08 09 0a 0b 0c 0d 0e 0W Track 3 00 00 00 00 ............ú... 50 0X 00 00 00 0Y 00 00 00 00 Z1 Z2 00 00 00 0U 00 ........ü....... X: MidiOutAB (0-2) Y: MidiChannel (0-15) Z1+2: CCNr1+2 (0-127) 60 00 00 0V 01 05 03 04 05 06 07 08 09 0a 0b 0c 0d ................ U: PolyMode 0-1 (Drums/chords) V-W next line: drum note mapping inst 1-16 (0-127) 70 0e 0W Track 4 00 00 00 00 0X 00 00 00 0Y 00 00 00 00 Z1 ..ú...........ü. X: MidiOutAB (0-2) Y: MidiChannel (0-15) Z1+2: CCNr1+2 (0-127) 80 Z2 00 00 00 0U 00 00 00 0V 01 02 07 04 05 06 07 ................ U: PolyMode 0-1 (Drums/chords) V-W next line: drum note mapping inst 1-16 (0-127) 90 08 09 0a 0b 0c 0d 0e 0W Clock (F1 F2 F3 F4) F1-4: 4 Bytes of BPM float value, in this case: 0x42f00000 = 120 BPM 00 0X 00 00 00 00 f0 42 ..............ðB X: Clock Source 0: internal, 1: external a0 0Y 00 Y: Clock midiClockOutputAB; /* 0=disabled, 1=A, 2=B, 3=AB */ Miscellaneous 0G 0H 0I 0J 0K 0K 0M ff ff ff 0N 0O 0P 0Q .........ððð.... G-R: see below b0 0R 0V 01 02 03 04 05 06 07 08 09 0a 0W 0X ............. V-W: 12 UserScale Notes (0-127) X: Quantize Mixer (0-1) G: NoteDisplay 0-3 (OcMi, OcNa, AlMi, AlNa) H: Scale -1-15 (-1 for UserScale) I: ScaleBase 0-11 (Notes C-b) J: Transpose Enable 0-30 (see modes skipping through Global Menu) K: Trigger Enable 0-16 (Off and 16 Midi Channels) L: Trigger CC Nr 0-127 M: Quantization 0-15 (see modes skipping through Global Menu) N: gDrumDisplayMode O: gMidiThrough P: gPatternChainEnable Q: gPatternChainStart R: gPatternChainEnd 1-190