AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Introduction
This document details the specification for the MIDI System Exclusive protocol for the Akai Z4 and Z8
samplers and the sampling engine of the Akai MPC4000 Music Production Centre. System Exclusive (or
SysEx) is a feature of
for a computer (or anything else which can send customised
configure the samplers.
MIDI which allows custom information to be sent to an instrument, making it possible
MIDI SysEx messages) to remotely control and
On the samplers, SysEx messages are decoded on each port independently (A or B), so both ports can be used
at the same time if desired
†
. If the SysEx Manufacturer ID‡ is not AKAI <&47{71}>, the entire SysEx
message is ignored. To allow for feedback from a SysEx message, the out port is used to send SysEx
confirmation back to the controller (port A
received by B
).
in
confirms data received by Ain and port B
out
confirms data
out
The SysEx messages received by the samplers are buffered, so it is possible to send several messages without
pauses. However, if this is done, it is possible that the internal buffers of the samplers will fill up, resulting in
lost data. Therefore, it is recommended that the confirmation messages are used to ensure that data was
received and processed correctly.
In this document, hexadecimal notation is used where appropriate and designated by the “&” symbol. Where
this is used, decimal values are also given as follows: &
HEX{DECIMAL}.
Note: Several functions provided by the System Exclusive specification can take a noticable
amount of time to complete, which may interrupt normal (musical)
MIDI processing. Therefore, it
is recommended that only those functions specifically designed for real-time control (e.g.,
adjustment of some Multi parameters) be used when normal
real-time items are marked with the (
) symbol in this document.
RT
MIDI information is being sent. Such
†.
If ports A and B are used simultaneously for SysEx transmissions, care should be taken to ensure that the function performed
on one port does not depend on the completion of a function on another port.
‡.
The standard format of a SysEx message is “<&F0> <Manufactured ID> … <&F7>”, where the Manufacturer ID is assigned by the
sures that instruments from other manufacturers will ignore SysEx messages not intended for them.
MIDI Manufacturers’ Association. The assigned ID for AKAI is &47{71}. The use of a manufacturer ID en-
•Several additional errors were corrected throughout the document.
†.
AKAI professional M.I. Corp. reserve the right to change this SysEx specification without prior notice. However, such
changes are likely to be minimal, only being implemented to improve the performance of the product. If you encounter
problems, please ensure that you are using the latest SysEx document.
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
System Exclusive Protocol
The System Exclusive feature is used to remotely control and configure the sampler. To provide feedback to
the host (e.g., a
of and after processing of viable SysEx messages. If desired, this confirmation can be turned off via SysEx
commands.
Control Message Format
To allow several devices to coexist on the same MIDI bus used for system exclusive messages, several
identifiers are used by the Z4/Z8/MPC4000 to ensure that it only responds to those messages which are
intended for it. Thus, all system exclusive messages begin with the following bytes:
Where the values of the bytes are:<&F0> <&47> <&5F> <0..&7F> …
AKAI ID <&47{71}> and Z4/Z8/MPC4000 ID <&5F{95}>
The AKAI ID and the Z4/Z8/MPC4000 ID ensure that only AKAI Z4/Z8/MPC4000 samplers respond to
these messages.
PC or MAC) the MIDI out port is used to transmit SysEx confirmation messages upon reception
The user-selectable DeviceID allows more than one AKAI Z4/Z8/MPC4000 sampler to coexist on the same
MIDI bus, but be configured independently via SysEx. The default DeviceID is zero.
The DeviceID has been limited to the range: 0–31. This is because the top 2 bits (bits 5 and 6) are used to
determine the number of User-Ref bytes being sent— bits 0–4 represent the DeviceID. The number of UserRefs expected is as shown in Table 1. This then provides a flexible means of sending User-Ref bytes; zero
bytes to conserve bandwidth, more bytes if required by your application. Moreover, this method allows the
number of User-Refs sent to vary on a per-message basis.
Table 1: Number of User-Refs Being Sent
Device ID bit 6 Device ID bit 5 Num User-Refs
000
011
102
113
Note: If the Z4/Z8/MPC4000 is set to have a user-selectable DeviceID of zero (0), then it will
respond to all SysEx messages regardless of the DeviceID transmitted. Similarly, if a DeviceID
of zero is transmitted by the controller (i.e., bits 0–4 = 0), all Z4/Z8/MPC4000s will respond
regardless of which DeviceID is set.
For non-zero DeviceIDs, the sampler will only respond to SysEx messages if its DeviceID
matches that sent.
User-Refs <0..&7F {0..127}>
The User-Ref parameters can be set to any value. It is only useful when confirmation messages are enabled
(or if a
REPLY is requested) where the User-Ref parameter is echoed with every confirmation message. This
is to allow flexibility in the design of control software where each SysEx message can be stamped with an ID
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
so that the confirmation messages can be matched to the commands sent. This is especially useful if the
control software sends buffered messages out-of-sequence.
Either 0, 1, 2, or 3 User-Refs can be sent with any message. To allow for this, the top 2 bits of the DeviceID
contain a count of the number of User-Refs which will be sent. The default number of User-Refs is 0: see
Table 1 for more details.
In this document, optional User-Refs will be shown as:
<…>.
Checksums
The checksum provides a means of error-detection in the SysEx message. The checksum is a single data byte
sent as the last item before the End-of-SysEx byte <&F7{247}>. By default, checksums are disabled making
sending SysEx messages as simple as possible. Enabling and disabling of checksums can only be done via
SysEx messages.
Note that because the SysEx specification for the Z4/Z8/MPC4000 supports a variable number of parameters,
if checksums are disabled, the calculated checksums may still be transmitted; although they will be ignored.
A checksum calculation begins at the first User-Ref byte (if any) — there is no point in calculating the
checksum earlier than this because if an error occurs in the first bytes, the SysEx message will be ignored
anyway — and the calculation stops before the End-of-SysEx byte.
To calculate the checksum, unsigned 8-bit addition is used, which wraps on overflow (i.e., 255+1 = 0). To
ensure compatibility with the
MIDI data byte specification, the high-bit of the checksum is set to zero (logical
AND with &7F{127}) once the checksum has been calculated.
This allows the selection of various Sections, such as “Multi”, “Sample”, “Program”, “Config”, and the
variable number of data parameters allows the efficient passing of strings (which, for example, are used to
name programs, multis, etc.). The Section numbers are detailed in Table 4.
If extensive use is made of the System Exclusive protocol, it is recommended that checksums are
enabled so that transmission errors can be detected and handled.
The first 6 bytes (or more if <User-Refs> are used) are the same as those transmitted in the original message,
except that the
<Reply ID> item has been inserted. This format ensures that confirmation messages from
different devices can be distinguished, and the insertion of the
messages are not confused with other SysEx messages. Moreover, the
be used by a controlling computer to determine which SysEx message generated the confirmation message.
The values of Reply ID and Data1 … DataN are explained in Table 2. Note that the
sent if checksums are enabled (see Table 6).
Table 2: SysEx Confirmation Messages
Reply IDData1Data2Meaning
&4F{79} ‘O’
&44{68} ‘D’
&52{82} ‘R’Reply TypeReply 1…“
&45{69} ‘E’<
NANA“OK” Valid SysEx has been received and is being processed.
NANA“DONE” SysEx instruction has been completed successfully.
LSB 0–127><MSB 0–127> “ERROR” An error has occurred, Error Number = Data1 + 128×Data2
<DataN> <checksum> <&F7>
<Reply ID> item ensures that confirmation
<User-Ref>, <Section> and <Item> can
<checksum> will only be
REPLY” A variable number of bytes is returned as a reply (data
returned depends on SysEx message sent). Every piece of reply data
is preceded with a single
making it easier to interpret the data received.
The values of these
ID byte indicating the type of data following,
ID bytes are shown in Table 5.
Note that because the user-selectable DeviceID is returned in these messages, a controller can establish the
number of devices and their DeviceIDs connected in a chain by using the “Query” SysEx command with the
DeviceID set to be zero (all devices), which will return an “
the chain. The DeviceID will also have it’s top 2 bits set to show how many
the message (see Table 1 for more information). The number of and the values of
OK” and a “DONE” message from each sampler in
<User-Ref> bytes are included in
<User-Ref> bytes in the
confirmation message will always be the same as those in the message which caused the confirmation
message to be generated.
The normal flow of confirmation messages is that the “
OK” message will be transmitted as soon as a valid
Sysex message (i.e., manufacturer = &47{71}, model = &5F{95}, DeviceID = set value) has been received.
If there is an error in this message, or the message is unsupported, then the “
ERROR” confirmation message
will be returned—possible error numbers are explained in Table 3. If the message is supported, the function
will be performed then, once processing is complete, the “
Alternatively, if a request for information was issued, the “
message with the appropriate data contained within it. Note that it is possible, but unlikely, that a “
message may be followed by an “
ERROR” message if an error occurred during the generation of the reply.
DONE” confirmation message will be transmitted.
DONE” message will be replaced by a “REPLY”
REPLY”
Note: Although “OK”, confirmation messages can be turned on and off via SysEx, the “DONE”
“
REPLY” and “ERROR” messages cannot. This is to ensure that at least one message is returned for
every SysEx message received; thus making synchronisation of a controller easier.
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Table 3: Error Numbers Returned
Error NumberMSBLSBDescription of Error
&202{514}42WAV format is incorrect
&203{515}43File not found
&204{516}44File already exists
Control Messages
The functions of the Z4/Z8/MPC4000 which can be controlled via SysEx are grouped into Sections. For
example, there is a section to configure a Multi, and a section to change the
Sections then have several functions associated with them, called an Item. Thus each SysEx control message
consists of the appropriate device header:
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Format of Message Data
The Z4/8 SysEx protocol supports variable-length messages, making it both flexible and adaptable.
Therefore, it is possible to send differently formatted data depending on the function to be performed and in
some cases, more than one piece of data is required in a single message. The format of the data required in
the messages should be strictly followed to avoid problems — although in most cases, an incorrect message
will simply generate an
Note
: Data bytes sent within SysEx messages must not exceed a value of 127 (or &7F). This
limitation is imposed by the
ERROR confirmation message.
MIDI specification. Failure to observe this limit may lead to undefined
behaviour!
Numeric data is always sent as 7-bit bytes (i.e., the top bit of each byte must be zero). Numbers which require
more than one byte to represent them are always sent least-significant byte first. Character strings can be any
length, but must always have a terminating character of value zero. A summary of all the data types is given
in Table 5. Note that the data format
ID is the value returned with every piece of reply data in confirmation
messages, a feature which makes automatic decoding of replies easier.
Table 5: SysEx Data Formats
Name IDByte FormatDescription (Range)
BYTE1<value>byte (0–127)
SBYTE2<sign><value>signed byte (±127)
WORD3<LSB><MSB>word (0–16383)
SWORD 4<sign><LSB><MSB>signed word (±16383)
DWORD 5<LSB><SB1><SB2><MSB>double word (0–268,435,455)
SDWORD 6<sign><LSB><SB1><SB2><MSB>signed double word (±268,435,455)
QWORD 7<B1><B2><B3><B4><B5><B6><B7><B8>quad word (0–72,057,594,037,927,935)
SQWORD 8<sign><B1><B2><B3><B4><B5><B6><B7><B8> signed quad word (±72,057,594,037,927,935)
BYTES 10<value1><value2>2 data bytes (command-specific)
2
3
BYTES 11<value1><value2><value3>3 data bytes (command-specific)
CUSTOM 32specific to commandCustom data (command-specific)
a. <sign>: 0 = positive, 1 = negative.
a
Arrays
If an array of values is to be sent, this is indicated by [n] following the data type. For example, an array of
signed bytes with 10 entries would be shown as
SBYTE[10].
Use of Ellipsis
The ellipsis, “…”, is used to illustrate that more data may be transmitted than the explicit data values shown
in the tables. For example, <Data1>…<DataeN> means that there may be additional bytes between Data1 and
DataN. The number of additional bytes depends on the both format and the content of the data being sent.
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Item List for SysEx Configuration section [&00{0}]
These options control how the sampler responds to SysEx messages. These options only apply to the
MIDI
port on which the SysEx command was sent. This allows different applications to coexist on different ports
without interfering with the other’s communications. For example, problems would arise if port A disabled
checksums when port B required them.
To ensure that operations on one port do not interfere with those on another, LCD
Note:
synchronisation should be turned off when it is not essential (e.g., if editing a program) and only
used when required, e.g., when selecting the current multi to be played.
Table 6: Control Items for Section &00{0} — SysEx Configuration
<Item><Data1><Data2>Description of Item
&00{0}
RT
&01{1}
RT
&03{3}
&04{4}
&05{5}
&06{6}
&07{7}
b
RT
RT
RT
RT
d
RT
&08{8}BYTE(0, 1)NAEnable/Disable synchronisation between the current playback item
&10{16}
RT
a. The state of this option at power-on is ON.
b. Note that if synchronisation is enabled and the current muti, program or sample is changed by SysEx on a different port which also
has synchronisation enabled, the currently selected item on the current port will also change because the item displayed on the
will have changed. To avoid this situation, synchronisation should be turned off, and enabled only when required.
c. The state of this option at power-on is OFF.
d. Some SysEx messages may require substantial time to execute. This can result in large delays between an OK and a DONE (or REPLY/
ERROR) message which the host could interpret as “samper not responding”. To avoid this, if the Still Alive monitor is enabled, a NULL
message (<&F0><&F7>) will be transmitted to the host approximately every second, whilst the host is awaiting a response.
NANA“Query” — use with user-selectable DeviceID=0 to get an “OK!” and
a “DONE” reply with DeviceID returned
BYTE(0, 1)NAEnable/Disable received message notification (“OK!”)
<Data1> = (0=
BYTE(0, 1)NAEnable/Disable synchronisation between the currently selected
OFF, 1=ON)
samples/programs/multis and those displayed on the front-panel
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Item List for the Keygroup Zones section [&0C{12}]
For convenience, Keygroup Zones have their own dedicated section, rather than being manipulated as part of
the Keygroup section. Unlike in many of the other sections, selection of a zone is not required before it can
be manipulated. Instead each of the zone manipulation functions includes the zone number as the first
parameter. The value of zone = 0 means
ALL zones, in which case all 4 zones will be updated simultaneously.
Note that zones always refer to the currently selected keygroup in the currently selected program. So if
another keygroup, or program, is to be adjusted the functions in the appropriate sections must be used to select
the desired keygroup or program.
Table 12: Control Items for Section &0E {14} — Keygroup Zone Set Parameter
<Item><Data1>
<Data2>…Description of Item
(Zone number)
&01{1}
&02{2}
&03{3}
&04{4}
&05{5}
&06{6}
&07{7}
&08{8}
BYTE(0, 1–4)STRINGSet Zone Sample <Data2…0> = name of sample to assign to zone.
BYTE(0, 1–4)SWORD(−600–+60)Set Zone Level <Data1> = level in 10×dB
RT
BYTE(0, 1–4)BYTE(0– 100)Set Zone Pan/Balance <Data2> = Pan/Bal, where
RT
BYTE(0, 1–4)BYTE(0 –15)Set Zone Output <Data2> = output, where
BYTE(0, 1–4)SBYTE(0– ±100)Set Zone Filter
RT
BYTE(0, 1–4)SWORD(0 – ±3600)Set Zone Cents Tune
RT
BYTE(0, 1–4)BYTE(0, 1)Set Zone Keyboard Track <Data2> = (0=OFF, 1=ON)
BYTE(0, 1–4)BYTE(0–6)Set Zone Playback <Data2> = mode, where
&09{9}BYTE(0, 1–4)SWORD
(0–±9999)
&0A{10}
&0B{11}
&0C{12}
&0D{13}
BYTE(0, 1–4)BYTESet Zone Low Velocity
BYTE(0, 1–4)BYTESet Zone High Velocity
BYTE(0, 1–4)BYTE(0, 1)Set Zone Mute <Data2> = (0=OFF, 1=ON)
RT
BYTE(0, 1–4)BYTE(0, 1)Set Zone Solo <Data2> = (0=OFF, 1=ON)
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Table 13: Control Items for Section &0F {15} — Keygroup Zone Get Parameter
<Item><Data1>
&07{7}BYTE(0, 1–4)BYTE(0, 1)Get Zone Keyboard Track
&08{8}
&09{9}
&0A{10}
&0B{11}
&0C{12}
&0D{13}
(Zone number)
BYTE(0, 1–4)BYTE(0–6)Get Zone Playback
BYTE(0, 1–4)SWORD
BYTE(0, 1–4)BYTEGet Zone Low Velocity
BYTE(0, 1–4)BYTEGet Zone High Velocity
BYTE(0, 1–4)BYTE(0, 1)Get Zone Mute <Reply> = (0=OFF, 1=ON)
BYTE(0, 1–4)BYTE(0, 1)Get Zone Solo <Reply> = (0=OFF, 1=ON)
When information about a Keygroup Zone is requested with a Get message, the data is returned in a “
<Reply>…Description of Item
Get Zone Mod→Start
(0–±9999)
REPLY”
confirmation message (see Confirmation Messages on page 5). The format of the data content of these
messages is summarised in Table 13.
If the selected Zone is set to be 0 (zero), then the
REPLY message will contain additional data (one set for every
Zone in the current Keygroup). The format of this extra data is the same as that shown in Table 13 where the
set of data bytes is repeated four times (once for each Zone) in a single
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Item List for the Keygroup section [&10 {16}]
Although Keygroups are really part of a program, it is more convenient to edit them as separate entities.
Before a Keygroup can be used, it must be selected to be current. This is done using the Select Keygroup
function where the number of the keygroup is specified. Note that this keygroup always refers to the
appropriate keygroup in the currently selected program, so care must be taken to ensure that the current
keygroup remains valid when a different program is selected. All of the keygroups in a program can be edited
simultaneously by selecting keygroup edit mode to be
ALL or ADD. Note that, for convenience, Keygroup
Zones are manipulated using functions in the Keygroup Zone section.
When information about a Keygroup is requested with a Get message, the data is returned in a “
REPLY”
confirmation message (see Confirmation Messages on page 5). The format of the data content of these
messages is summarised in Table 17 and Table 15.
Table 14: Control Items for Section &10 {16} — Keygroup Main
<Item><Data1><Data2>…Description of Item
&01 {1}
&02 {2}
BYTENASelect Keygroup to be current <Data1> = Keygroup number
NANAGet Current Keygroup
Table 15: Format of “REPLY” confirmation messages for Section &10 {16} — Keygroup
<Item> requested<Data1><Data2>Description of Data Returned
&02 {2}
BYTENACurrent Keygroup <Data1> = Keygroup number
Table 16: Control Items for Section &12 {18} — Keygroup Set Parameter
<Item><Data1><Data2>…Description of Item
Setting General Options
&01{1}
&02{2}
&04{4}
&05{5}
&06{6}
&07{7}
&08{8}
RT
&09{9}BYTE(0–2)NASet Zone Crossfade <Data1> = (0=OFF, 1=VELOCITY, 2=REAL-TIME)
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Item List for Program section [&14{20}]
When changing the parameters of a Program, it is not necessary to send the name with every parameter
change SysEx message. Instead, the currently selected Program is always acted on with these messages.
There are three ways to select a Program: (i) Create a new Program; and (ii) select an existing Program in
memory to be the current one; and (iii) change the current Program via the sampler’s front panel. The first
method can only be used if a Program of the specified name does not already exist in memory. The last method
will only work if the synchronisation option is on (this is the default option; see SysEx section on how to
change this) and the current mode is “
PROGRAM” mode.
Handles used to access Programs are special 28-bit values which uniquely identify Programs in memory.
All of the parameters of a Program can be edited using the functions in this section, with the exception of
Keygroups which, for convenience, are edited using their own functions.
When information about a Program is requested with a Get message, the data is returned in a “
REPLY”
confirmation message (see Confirmation Messages on page 5). The format of the data content of these
messages is summarised in Table 19. The parameters for the modulation sources used in the Programs are
detailed in Table 24.
Table 18: Control Items for Section &14 {20} — Program Main
<Item><Data1><Data2>…Description of Item
Generic List Functions
&01 {1}
&02 {2}
&03 {3}
&04 {4}
&05 {5}
&06 {6}
&07 {7}
&08 {8}
&09 {9}
&0A{10}
&0B {11}
&0C {12}
&0D{13}
&0E{14}
&0F{15}
&10{16}NANAGet name of current item with modified/tagged info.
&11{17}
&18{24}
&40{64}
&41{65}
NANAGet number of items in memory
BYTE(0–3)NAGet list of info for all items:
DWORDNASelect current item by handle
STRINGNASelect current item by name
NANAGet handle of current item
NANAGet name of current item
DWORDNAGet item name from handle
STRINGNAGet item handle from name
NANADelete ALL items from memory
NANADelete current item from memory
DWORDNADelete item represented by handle <Data1>
STRINGNARename current item
DWORDSTRINGRename item represented by handle <Data1>
BYTE(0–7)BYTE(0, 1)
BYTE(0, 1)
NANAGet Tag Bitmap <Reply> = WORD
NANAGet modified state of current item.
BYTE(0–7)NADelete tagged items <Data1> = tag bit
WORDSTRINGCreate New Program <Data1> = number of keygroups;
BYTENAAdd Keygroups to Program <Data1> = number of keygroups to add
<Data1>: 0=list of handles; 1=list of names; 2=list of handle+name;
Table 19: Format of “REPLY” confirmation messages for Section &14 {20} — Program Main
<Item> requested<Reply>…Description of Data Returned
&01{1}
&02{2}
&05{5}
&06{6}STRINGGet name of current item
&07{7}
&08{8}
&0F{15}WORDGet Tag Bitmap
&10{16}
&11{17}BYTEGet modified state of current item <Reply> = (0=NOT MODIFIED, 1=MODIFIED)
&40{64}
&4A{74}
&54{84}BYTEGet Number of Modulation Connections
DWORDGet number of items in memory
DWORD[n] or
STRING[n] or
DWORD, STRING)[n]
(
<Data1>: 0=list of handles; 1=list of names; 2=list of handle+name;
Get list of info for all items:
3=list of handle+modified/tagged name
An array of handles, names, or a combination of both (handle, name) will be returned in
a single data stream. There will be n sets of data, where n = number of items in memory.
DWORDGet handle of current item
STRINGGet item name from handle
DWORDGet item handle from name
STRINGGet name of current item with modified/tagged info. The name is modified to indicate
the current modified and tagged state of the item.
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Item List for Multi section [&18{24}]
The simplest functions of the Multi section allow control of all of the parameters of a Multi in real-time. For
example, you can create a mixermap (or control panel) in a sequencer and use this to adjust the pan and level
settings of each part while a sequence is playing. Moreover, if these adjustments are recorded by the
sequencer, automated control of the part settings can be realised. In addition, “Get” options allow suitable
software to determine the current settings of a Multi.
More advanced functions are also provided to facilitate control over the multis, including creation, deletion
and selection of a part’s program. Note that modification of a Multi part’s program must be done through the
Program Section [&14{20}]. This can be easily achieved by getting the name of the requested part’s program,
and using this name to select the program in the Program Section, whereupon changes may be made.
When modifying a Multi, it is not necesary to send the Multi’s name with every SysEx message. Instead, the
currently selected Multi is always acted on with these messages. There are three ways to select a Multi and
make it current: (i) Create a new Multi; (ii) select an existing Multi in memory to be the current one; and (iii)
change the current Multi via the sampler’s front panel. The first method can only be used if a program of the
specified name does not already exist in memory, the last method will only work if the synchronisation option
is on (this is the default option; see SysEx section on how to change this) and the current mode is “
MULTI”
mode.
Handles used to access Multis are special 28-bit values which uniquely identify Multis in memory.
When information about a Multi is requested with a Get message, the data is returned in a “
REPLY”
confirmation message (see Confirmation Messages on page 5). The format of the data content of these
messages is summarised in Table 27 and Table 29.
Table 26: Control Items for Section &18{24} — Multi Main
<Item><Data1><Data2>…Description of Item
Generic List Functions
&01{1}
&02{2}
&03{3}
&04{4}
&05{5}
&06{6}
&07{7}DWORDNAGet item name from handle
&08{8}
&09{9}
&0A{10}
&0B{11}
&0C{12}
&0D{13}
&0E{14}
&0F{15}
&10{16}
NANAGet number of items in memory
BYTE(0–3)NAGet list of info for all items:
DWORDNASelect current item by handle
STRINGNASelect current item by name
NANAGet handle of current item
NANAGet name of current item
STRINGNAGet item handle from name
NANADelete ALL items from memory
NANADelete current item from memory
DWORDNADelete item represented by handle <Data1>
STRINGNARename current item
DWORDSTRINGRename item represented by handle <Data1>
BYTE(0–7)BYTE(0, 1)
BYTE(0, 1)
NANAGet Tag Bitmap
NANAGet name of current item with modified/tagged info.
<Data1>: 0=list of handles; 1=list of names; 2=list of handle+name;
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Table 26: Control Items for Section &18{24} — Multi Main
<Item><Data1><Data2>…Description of Item
&11{17}NANAGet modified state of current item.
&18{24}
BYTE(0–7)NADelete tagged items <Data1> = tag bit
General Multi Functions
&40{64}
&41{65}
&42{66}
&43{67}
&44{68}
WORDSTRINGCreate New Multi <Data1> = number of parts, <Data2> = name
STRINGNACopy Multi <Data1> = name of new multi
BYTENADelete Part <Data1> = index of part to delete
NANADelete Unused Parts
NANAArrange Parts (sort by MIDI channel)
Table 27: Format of “REPLY” confirmation messages for Section &18 {24} — Multi Main
<Item> requested<Reply>…Description of Data Returned
&01{1}
&02{2}
&05{5}
&06{6}
&07{7}
&08{8}
&0F{15}
&10{16}
&11{17}
&40{64}
DWORDGet number of items in memory
DWORD[n] or
STRING[n] or
DWORD, STRING)[n]
(
<Data1>: 0=list of handles; 1=list of names; 2=list of handle+name;
Get list of info for all items:
3=list of handle+modified/tagged name
An array of handles, names, or a combination of both (handle, name) will be returned in
a single data stream. There will be n sets of data, where n = number of items in memory.
DWORDGet handle of current item
STRINGGet name of current item
STRINGGet item name from handle
DWORDGet item handle from name
WORDGet Tag Bitmap
STRINGGet name of current item with modified/tagged info. The name is modified to indicate
the current modified and tagged state of the item.
BYTEGet modified state of current item <Reply> = (0=NOT MODIFIED, 1=MO DIFIED)
DWORDCreate Item <Reply> = handle of new item
Table 28: Control Items for Section &1A {26} — Multi Set Parameter
<Item><Data1><Data2>…Description of Item
Setting General Multi Information
&01{1}
&02{2}
&03{3}
&04{4}
&08{8}
&09{9}
BYTENASet Group ID
BYTE(0–2)NASet Multi Select <Data1> = (0=OFF, 1=BANK, 2=PROGCHANGE)
BYTE(0–31)NASet Multi Select Channel <Data1> = (1A=0, 2A=1, …, 16B=31)
WORDNASet Multi Tempo <Data1> = 10×bpm
WORD(0–128)NASet Multi Program Number Data1: (0=OFF, 1–128)
BYTE(0–127)
a
DWORDSet Multi Part by handle <Data1> = Part Number;
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Item List for Sample section [&1C {28}]
The Sample section provides a means to determine which samples are currently in memory and to determine
or modify their basic parameters — off-line sample processing functions are not supported. Once the names
of samples are determined, they can be assigned to a keygroup zone using the functions of the Keygroup Zone
section &0E{14}.
Note that the active sample displayed on the
LCD screen will only correspond to the one selected via SysEx
if the synchronisation option is on (this is the default option; see SysEx section on how to change this) and
the current mode is “
SAMPLE” mode.
Handles used to access Samples are special 28-bit values which uniquely identify Samples in memory.
When information about a Sample is requested with a Get message, the data is returned in a “
REPLY”
confirmation message (see Confirmation Messages on page 5). The format of the data content of these
messages is summarised in Table 31 and Table 33.
Table 30: Control Items for Section &1C {28} — Sample Main
<Item><Data1><Data2>…Description of Item
Generic List Functions
&01{1}
&02{2}
&03{3}
&04{4}
&05{5}
&06{6}
&07{7}
&08{8}
&09{9}
&0A{10}
&0B{11}
&0C{12}
&0D{13}
&0E{14}
&0F{15}
&10{16}
&11{17}
&18{24}
&40{64}
&41{65}
&42{66}
&43{67}
NANAGet number of items in memory
BYTE(0–3)NAGet list of info for all items:
<Data1>: 0=list of handles; 1=list of names; 2=list of handle+name;
3=list of handle+modified/tagged name
DWORDNASelect current item by handle
STRINGNASelect current item by name
NANAGet handle of current item
NANAGet name of current item
DWORDNAGet item name from handle
STRINGNAGet item handle from name
NANADelete ALL items from memory
NANADelete current item from memory
DWORDNADelete item represented by handle <Data1>
STRINGNARename current item
DWORDSTRINGRename item represented by handle <Data1>
BYTE(0–7)BYTE(0, 1)
BYTE(0, 1)
NANAGet Tag Bitmap
NANAGet name of current item with modified/tagged info
NANAGet modified state of current item.
BYTE(0–7)NADelete tagged items <Data1> = tag bit
Set Tag Bit <Data1> = bit to set, <Data2> = (0=
<Data3> = (0=
CURRENT, 1=ALL)
OFF, 1=ON)
General Sample Functions
BYTEBYTEStart auditioning the current sample <Data1> = velocity
<Data2> = (
NANAStop playback of the current sample
BYTEQWORDPlay To <Data1> = velocity, <Data2> = sample position
BYTEQWORDPlay From <Data1> = velocity, <Data2> = sample position
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Table 30: Control Items for Section &1C {28} — Sample Main
<Item><Data1><Data2>…Description of Item
&44{68}BYTEQWORDPlay Over <Data1> = velocity, <Data2> = sample position
&45{69}
&46{70}
BYTEBYTEPlay Loop <Data1> = velocity, <Data2> = loop index
BYTEBYTEPlay Region <Data1> = velocity, <Data2> = region index
Loop and Region Creation/Deletion
&48{72}
&49{73}
&4A{74}
&4B{75}
NANACreate New Loop
BYTENADelete Loop <Data1> = index
NANACreate Region
BYTENADelete Region <Data1> = index
Table 31: Format of “REPLY” confirmation messages for Section &1C{28} — Sample Main
<Item> requested<Reply>…Description of Data Returned
&01{1}
&02{2}
&05{5}
&06{6}
&07{7}
&08{8}
&0F{15}
&10{16}
&11{17}
DWORDGet number of items in memory
DWORD[n] or
STRING[n] or
DWORD, STRING)[n]
(
<Data1>: 0=list of handles; 1=list of names; 2=list of handle+name;
Get list of info for all items:
3=list of handle+modified/tagged name
An array of handles, names, or a combination of both (handle, name) will be returned in
a single data stream. There will be n sets of data, where n = number of items in memory.
DWORDGet handle of current item
STRINGGet name of current item
STRINGGet item name from handle
DWORDGet item handle from name
WORDGet Tag Bitmap
STRINGGet name of current item with modified/tagged info. The name is modified to indicate
the current modified and tagged state of the item.
BYTEGet modified state of current item <Reply> = (0=NOT MODIFIED, 1=MO DIFIED)
Table 32: Control Items for Section &1E {29} — Sample Parameter Set
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Item List for Disk Tools section [&20 {32}]
All disk operations are performed on the currently selected disk. Therefore, before the first disk access is
attempted, one must select a disk. (Note that the selected disk is NOT the same as that selected via the front
panel.) Disks are selected using a unique 14-bit handle, initially obtained when the list of connected disks is
determined (Item &05{5}).
Before any disk operations are performed, the disk list must be updated. This can either be done via the
sampler’s front panel, or via SysEx. Indeed, the disk list is always updated when the sampler is first switched
on. Note that if a disk is added to, or removed from, the sampler, the disk list must always be updated, or
incorrect operation may result. A disk must be selected before any further disk operations will be valid. Once
this is done, information about the files and folders on the disk can be obtained.
Table 34: Control Items for Section &20{32} — Disk Tools
<Item><Data1><Data2>Description of Item
General Disk Functions
&01 {1}
&02 {2}
a
&03{3}
b
&04{4}
&05 {5}
&09 {9}
&0D{13}
&10{16}
&12{18}
&13{19}
&15{21}
&16{22}
&17{23}STRINGNADelete Sub-Folder.
&18{24}STRINGSTRINGRename Folder: <Data1> = name of folder to rename,
&20{32}
&22{34}
&28{40}
&29{41}STRINGNADelete File. <Data1> = name of file to delete.
&2A{42}
c
NANAUpdate the list of disks connected
WORDNASelect Disk <Data1> = Disk Handle
WORDNATest if the disk is valid <Data1> = Disk Handle
NANAGet the number of disks connected
NANAGet list of all connected disks
NANAGet current path of current disk
WORDNAEject Disk <Data1> = Disk Handle
Folder Functions
NANAGet number of sub-folders in the current folder.
NANAGet the names of all of the sub-folders in the current folder.
STRINGNAOpen Folder. This sets the current folder to be the requested one.
(Move down one level in the folder heirarchy.)
<Data1> = name of folder to open..
(If <Data1> = 0, the root folder will be selected.)
STRINGNALoad Folder: the selected folder, and all its contents (including sub-
folders) are loaded into memory.
<Data1> = name of folder to load.
STRINGNACreate Folder: Creates a sub-folder in the currently selected folder.
<Data1> = name of folder to create.
<Data1> = name of folder to delete.
<Data2> = new name for folder.
File Functions
NANAGet number of files in the current folder.
NANAGet the names of all of the files in the current folder.
STRINGSTRINGRename File: <Data1> = name of file to rename,
<Data2> = new name for file.
STRINGNALoad File <Data1> = name of file to load.
The filename must include the correct file extension.
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Table 34: Control Items for Section &20{32} — Disk Tools
<Item><Data1><Data2>Description of Item
&2B{43}
&2C {44}
&2D{45}
d
STRINGNALoad File including all dependent child files.
<Data1> = name of file to load.
The filename must include the correct file extension.
DWORDBY TE(1–4)
BYTE(0, 1)
BYTE(0, 1)
<Data2> = Type = (1=Multi; 2=Program; 3=Sample; 4=
Save Memory Item to Disk
<Data1> = Handle of Memory Item
SMF)
<Data3> = (0=Skip if file exists; 1=Overwrite existing files)
<Data4> = (0=Don’t save children; 1=Save Children)
BYTE(0–4)BYTE(0, 1)
BYTE(0, 1)
<Data1> = Type = (0=All; 1=Multi; 2=Program; 3=Sample; 4=SMF)
Save All Memory Items to Disk
<Data2> = (0=Skip if file exists; 1=Overwrite existing files)
<Data3> = (0=Don’t save children; 1=Save Children)
a. If the currently selected disk is valid, a DONE message will be returned, otherwise an ERROR reply will be returned.
b. Before the number of disks is determined, the list of disks connected must have been updated. If this is not the case, the value
returned will be invlaid.
c. Loading a file will load a multi, program, sample, etc., depending on the type of file supplied. Note that if the requested file has
child files which it depends upon (e.g., a program’s children are the sample files it requires) then these child files will not be
loaded automatically. To load child files automatically, another function must be used.
d. This operation ensures that all child files (e.g., the samples of a program, or the programs of a multi) are also loaded
automatically.
When information is requested in the Disk Tools section, it is returned in a
occurs, whereupon an
ERROR confirmation message is returned instead. The format of these REPLY messages
REPLY message — unless an error
is detailed in Table 35.
Table 35: Format of “REPLY” confirmation messages for Section &20 {32} — Disk Tools
<Item> requested<Reply…>Description of Data Returned
General Disk Functions
&04{4}
&05{5}
&09{9}
&10{16}
&12{18}
&20{32}
&22{34}
a
a
a
BYTENumber of logical disks connected to the sampler.
WORD
BYTE
BYTE
BYTE
BYTE
STRING
(0, 1)
<Reply2> = Disk type = (0=floppy; 1=hard drive; 2=cd-rom;
<Reply3> = Disk Format = (1=
S3000; 6=EMU; 7=Roland; 8=CD-AUDIO; 100=empty)
5=
<Reply1> = Disk handle
3=optical; 4=unknown)
FAT; 2=FAT32; 3=ISO9660; 4=S1000;
<Reply4> = Physical Disk
ID
<Reply5> = (0=not-writable; 1=writable)
<Reply6> = Volume name
This sequence is repeated for each of the logical disks connected to
the sampler.
STRING<Reply1> = current path on the current disk. If the root folder is
selected, this will return a single byte = 0.
Folder Functions
WORDThe number of sub-folders in the current folder
STRING[]Returns a list of the names of all of the sub-folders
File Functions
WORDThe number of files in the current folder
STRING[]Returns a list of the names of all the files in the current folder
a. It is recommended that the control computer determines the amount of data it expects before this <Item> is
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Item List for Multi FX Control section [&24 {36}]
Effects settings belong to a Multi, and this section enables the adjustment of effects for the currently selected
multi (see Section &18 for information on how to select a multi to be current). The SysEx protocol for
controlling the effects has been designed to be as flexible and extensible as possible; rather than being tied to
a particular hardware architecture. To achieve this, the hardware is presented as a series of effects channels,
each with a certain number of modules. These modules can be set to include an effect (or no effect). Note that
certain restrictions may apply to which combinations of effects may be used simultaneously depending on the
hardware installed. To illustrate the layout, an example
M
ODULE INDEX:
012
FX configuration is shown in Figure 1.
3
CHANNEL 0:
C
HANNEL 1:
HANNEL 2:
C
EQ
EQREVERBEMPTYEMPTY
EMPTYEMPTYEMPTYEMPTY
COMPRESSORCHORUSDELAY
Figure 1: Example FX configuration
Prior to use, the configuration of all of the effects channels and modules must be determined so that the layout
of the current hardware is known. Only then should parameters be modified or effects be selected into
modules.
Note that all of the index values are zero-based. (i.e., the first item = 0, the second item = 1.)
Parameter values are always passed as as
SDWORD even although many parameters only require
a single unsigned byte. This provides flexibility and means that different messages do not need to
be used for different parameter types.
Table 36: Control Items for Section &24{36} — Multi FX Main
<Item><Data1><Data2>…Description of Item
Determine if there is an
&01{1}
&10{16}
&11{17}
&20{32}NANAGet Number of effects available
&21{33}
&22{34}
&24 {36}
a
b
NANAGet FX card installed
Determine the characteristics of the installed FX hardware
NANAGet Number of FX channels
BYTENAGet Maximum Number of FX modules on given channel
Get Information about available
WORDNAGet Name of effect <Data1> = index of effect
WORDNAGet Unique ID of effect <Data1> = index of effect
WORDNAGet Parameter Index for Output Control <Data1> = index of effect
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Table 36: Control Items for Section &24{36} — Multi FX Main
<Item><Data1><Data2>…Description of Item
Get Information about FX parameters: <Data1> = channel, <Data2> = module, <Data3> = parameter
&30{48}
&31{49}
&32{50}BYTEBYTE
&33{51}
&34{52}BYTEBYTE
&35{53}BYTEBYTE
&36{54}
c
&38{56}BYTEBYTE
&40 {64}
d
&41{65}
&42{66}BYTEBYTE
BYTEBYTEGet Number of Parameters
BYTEBYTE
BYTE
Get Parameter Minimum
Get Parameter Maximum
BYTE
BYTEBYTE
BYTE
Get Parameter Name
Get Parameter Units
BYTE
Get Parameter Type
BYTE
BYTEBYTE
BYTE
Get Display Template for parameter
Get Parameter Position ID
BYTE
BYTEBYTEGet Number of Parameter Groups
BYTEBYTE
BYTE
Get Group Name <Data3> = Index of Group
Get Group Index of Parameter
BYTE
a. Each effect has a globally unique ID: the top 14 bits represent a manufacturer ID, the bottom 14 bits represent the effect ID.
b. The parameter index for the output control is a special index used to access the output control parameter. This parameter is not
actually a part of the parameter list, and is not included in the number of parameter count. Using a parameter index provides a
consistent interface to access the control. This index must not clash with any existing parameters.
c. Display templates are used to provide a hint as to how the parameter should be displayed and implicity defines any scaling
required. For example, a level might have the template 0.00, which means that a value of 100 would be displayed as 1.00 (i.e., the
integer representation of the number is divided by 100 to yield the floating point representation). This makes it simple to transfer
both integer and floating point values using an
d. To provide a guide to displaying parameters on a user-interface, parameters may be grouped into logical sections. Each parameter
can have a group index associated with it, and each group can have a name. For example, a stereo delay could have 3 groups:
delay, damping and feedback. An effect does not need to contain groups, in which case Number of Groups = 0.
SDWORD.
Table 37: Format of “REPLY” confirmation messages for Section &24{36} — Multi FX Control
<Item> requested<Reply>…Description of Data Returned
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Table 41: Format of “
REPLY” confirmation messages for Section &28{40} — Song File Main
<Item> requested<Reply>…Description of Data Returned
&01{1}
&02{2}
DWORDGet number of items in memory
DWORD[n] or
STRING[n] or
DWORD, STRING)[n]
(
<Data1>: 0=list of handles; 1=list of names; 2=list of handle+name;
Get list of info for all items:
3=list of handle+modified/tagged name
An array of handles, names, or a combination of both (handle, name) will be returned in
a single data stream. There will be n sets of data, where n = number of items in memory.
&05{5}
&06{6}
&07{7}
&08{8}
&0F{15}
&10{16}
DWORDGet handle of current item
STRINGGet name of current item
STRINGGet item name from handle
DWORDGet item handle from name
WORDGet Tag Bitmap
STRINGGet name of current item with modified/tagged info. The name is modified to indicate
the current modified and tagged state of the item.
&11{17}BYTEGet modified state of current item <Reply> = (0=NOT MODIFIED, 1=MODIFIED)
Table 42: Control Items for Section &2A {42} — Song File Parameter Set
<Item><Data1><Data2>…Description of Item
Setting General Options
&01{1}
&10{16}
&11{17}
&12{18}
&13{19}
&18{24}BYTE(0–2)NASet MIDI output port <Data1> = (0=NONE, 1=MIDI A, 2=MIDI B)
BYTENASet Group ID
Setting Parameters
WORDNASet From Bar
WORDNASet To Bar
BYTENASet Tempo Mode <Data1> = (0=FILE, 1=MA NUAL, 2=MULTI)
WORDNASet Manual Tempo <Data1> = (tempo×10)bpm
Table 43: Control Items for Section &2B{43} — Song File Parameter Get
<Item><Data1>…<Reply>…Description of Item
Getting General Options
&01{1}
NABYTEGet Group ID
Getting Parameters
&10{16}
&11{17}
&12{18}
&13{19}
NAWORDGet From Bar
NAWORDGet To Bar
NABYTEGet Tempo Mode <Reply> = (0=FILE, 1=MANUAL, 2=MULTI)
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Table 43: Control Items for Section &2B{43} — Song File Parameter Get
<Item><Data1>…<Reply>…Description of Item
&18{24}NABYTE(0–2)Get MIDI output port <Reply> = (0=NONE, 1=MIDI A, 2=MIDI B)
Getting Status Information
&20{32}
&21{33}
&22{34}
&23{35}
&24{36}
NABYTEGet (Time Signature) Beat Value
NABYTEGet (Time Signature) Beats-per-Bar
NABYTEGet Current Beat
NAWORDGet Current Bar
NAWORDGet Current Tempo <Reply> = (tempo×10) bpm
Item List for Front Panel Control section [&2C{44}]
To facilitate a Remote Control facility, this section allows the controls of the front panel to be manipulated
directly via SysEx. The control codes which must be sent with some of these messages, are detailed in
Table 45 – Table 47.
Note that if a “Key Hold” message is sent, this must eventually be followed by a “Key Release”
message, although there can be a delay between sending the release message. This is useful, for
example, if the
PLAY is pressed for a few seconds to hear a sample, before being released.
Table 44: Control Items for Section &2C{44} — Front Panel Control
<Item><Data1><Data2>…Description of Item
Control Activation
&01 {1}
&02 {2}
&03 {3}
&04 {4}
b
BYTE
b
BYTE
SBYTENAMove the data wheel forwards or backwards a certain amount
BYTE(0–7)WORD(0–1023)Set the value of a Q-link control. <Data1> = Qlink control,
NA“Key Hold”: hold down panel key: <Data1> = keycode
&20{32}WORDWORDMouse Click at Screen Coordinate (Select Parameter)
<Data1> = x-coord, <Data2> = y-coord.
&21{33}
WORDWORDMouse Double Click at Screen Coordinate (open Parameter Window)
<Data1> = x-coord, <Data2> = y-coord.
a. These functions cause the data to be queued within the sampler, it does not wait until the data has been processed. Thus the DONE
confirmation message simply confirms that the data has been queued, not processed. If the data is not queued successfully, an
ERROR will be returned.
b. Only those keycodes defined in Table 45 should be used. Use of other values may lead to undefined behaviour.
c. Standard ASCII codes can be used, as well as the virtual codes defined in Table 46.
d. The flags contains a combination of the values detailed in Table 47. These indicate which combination of modifier keys are
currently being held down.
e. Mouse operations are used by remote displays, where a mouse and cursor system could be used.
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Alternative Operations Sections [&60 {96} – &64{100}]
When adjusting the parameters of a multi, program or sample, it is necessary to select which item is to be
current before any operations can be performed. Whilst this provides a convenient means of operation, it is
sometimes better if the item can be specified by handle for each operation — a typical example would be to
obtain the lengths of each of the samples in memory, where it would be tedious to select the current sample
before every operation.
Additional, alternative, Sections (&60{96} – &64 {100}) simply provide a back-door way to access the usual
Sections where the handle of the requested item is always represented in the first 4 bytes of the SysEx
message. The subsequent bytes are exactly the same as those used for the usual Sections.
These messages also facilitate user-defined blocking of parameter requests into one message. For example,
rather than using 13 different messages to determine the setup of an
LFO in a program, one message containing
all of these requests can be generated and the resultant data returned within a single reply message. Obviously,
this can substantially reduce the communications overhead.
To use this feature to combine several calls to the same section into one message, one sends blocks of data of
the form:
and
(<length=N> <Item> <Data1> <…> <Data
<Item> represents the item part of the protocol. Note that the number of bytes must be set correctly as it
>). Where <length=N> is the number of raw bytes to follow
N−1
is used by the device to determine where the next block of parameter data begins.
Following a succesful Get operation, a single
REPLY confirmation message will be generated containing all
of the requested data; the data being a concatenation of the reply data found when a normal message is used.
If an error results, 2 outcomes may result: (i) an
REPLY confirmation message (in this case, the error number will explain the cause of the error) or (ii) the
REPLY confirmation message will be incomplete, and will only contain data up to the point the error occurred.
ERROR confirmation message will be returned but without a
A summary of the format of the required messages is shown in Table 52. Note that all of these functions
change the currently selected item.
Table 52: Message Format for Alternative (By-Handle) Operations
AKAI professional Z4/Z8/MPC4000 MIDI System Exclusive Protocol Specification
Program Automation Sections [&68{104} – &69{105}]
While the SysEx protocol provides complete control of Multis and Programs, it requires that the item to be
edited is current, or that the handle for the item is known. In many cases, this is not desirable, or even possible.
In particular, it is difficult to configure a sequencer to control a Program’s parameters in real-time, when
playing back in
MULTI mode.
To get around these problems, and allow Programs to be fully automated by a sequencer, additional SysEx
has been provided. This works in a way similar to the Alternative Operations Section (page 50), but uses the
current Multi’s part number instead of the Program’s handle. Thus, only programs assigned to the current
Multi can be modified by this Section.
A summary of the format of the required messages is shown in Table 53. Note that none of these functions
change the currently selected item, unlike the Alternative Operations Section.
Table 53: Message Format for Program Automation
<Section> Section Offset
&68 {104}
&69{105}
b
BYTE (0–7)BYTEBYTEBYTEsee Table 12– Table 17 Keygroup and Keygroup Zone
a. The value of Section Offset is added to the destination section. For example, calling Program Automation will cause <Item><Data…> to
be redirected to Section &14 (Program Main). To access Section &16 (Program Parameter Set) Section Offset must be set to 2.
b. Note that Keygroup Zone=0 (all Zones) must not be used with this message to Get data as it may yield unpredictable results.
To demonstrate how this protocol is used, the following example shows how to mute all Keygroup Zones
within a Keygroup of the first Program in a Multi. The section which does this is “Keygroup Zone Set
Parameter &0E {14}” (Table 12, page 16). Which means that we must use
Offset> = &02
<Part> = &00, since this is zero-based. <KG> is the zero-based index of the the keygroup we wish to mute.
The
<Item>, <Data…> part is simply the same as in Table 12. We want to mute all the zones, so <Item> = &0C,
<Data1> = &00 (all zones), and <Data2> = &01 (mute ON). Since this is 3 bytes, <Nbytes> = &03.
(since the base section is &0C). We want to change the program in the first part, so
<Section> = &68, and <Section
Combining this into a complete message, as previously discussed (page 4), we have:
Note: If the same Program is assigned to multiple parts in a Multi, changes to that Program will
affect all the parts which use it, not just the part specified in the SysEx message.