
every sysex message begins and ends with these two bytes. The
Data
bytes
field indicates 1 data byte and it is represented by the xx in the
sample message. The
MSB location
tells the software where you want the
changing data to be placed within the message. Here, it is shown as byte
7. When trying to figure out the location, you never include the F0 in
your count, and you start counting with numeral 0. So in the
Message
format
area, the 41 would be zero, 00 would be one, 14 would be two, 12
would be three, etc.
To enable checksum calculations, the Checksum box must be…checked!
The
Checksum start location
indicates where the checksum should start
computing. In this case, it’s byte 4. If this is set incorrectly, the message
will not work. You must understand the sysex documents that came with
your particular equipment. It’s always a good idea to get one message
working before you continue on to other messages.
Now let’s visit the text file for the same instrument. This method is
better for setting up several parameters at one time.
The other method of creating definitions is the INI file as mentioned
previously. You can create several definitions at the same time using this
method. The top of the INI file defines how the messages are assembled
and it’s followed by a list of parameters and their ranges.
An INI file for the D50 would look like this:
[Roland D50 Lower Partial 1:Sysex]
MessageFormat = 41 00 14 12 00 01 00 00
DataBytes = 1
DataNybblize =1
ParameterBytes = 1
ParameterLocation = 6
MsbLocation = 7
DeviceIdLocation = 1
DeviceIdMask = 15
DeviceId = 0
ChecksumLocation = 4
…
77 = TVF Cutoff Frequency, 0, 100
64 = WG Pitch Coarse, 0, 72
65 = WG Pitch Fine, 0, 100
…
The INI file starts with the name of the instrument, along with a
designator that indicates what type of messages are defined in the
section. The designator must begin with one of the following strings:
:Sysex
:Controllers
:NRPN
The designator can then be followed by any text, separated from the first
word by a space. Note that the designator must begin with a colon (:),
and there must be no spaces to either side of the colon. This also means
that the name of the instrument itself cannot contain a colon.
The
MessageFormat
entry defines the bytes that make up the message. It
is subject to the same rules that govern the
Message format
field in the
Knob Properties dialog: all entries must be in hex, and there must be one
byte for each byte in the final message, except for the checksum and
bracketing F0/F7 bytes. Because this entry will be used for all
parameters, there is no need to enter the specific parameter byte(s); these
are taken from the individual parameter entries.
The
DataBytes, MsbLocation, LsbLocation, DataNybblize
, and
ChecksumLocation
entries are also similar to the corresponding fields in
the KnobbyEd dialog. The
LsbLocation
entry is not required if the
message only uses a single data byte, as in the example above.
DataNybblize
should be set to 0 for 7-bit data, or 1 for 4-bit (nybblized)
data.
DataNybblize
can also be considered optional if the data is 7bit
format.
ChecksumLocation
should be set to -1 if no checksum is
required.
The
ParameterBytes
and
ParameterLocation
entries determine how the
parameter number is inserted in the string, in much the same way that
DataBytes
and
MsbLocation
/
LsbLocation
do for data. However, when
two parameter bytes are present, it is assumed that they are adjacent. The
ByteOrder
entry determines the order of the parameter bytes, and should
be set to 0 if the MSB is first, or 1 if the LSB is first.
ParameterNybblize
is analogous to
DataNybblize
, and should be set to 0 for 7-bit parameter
number packing, or 1 for 4-bit (nybblized) packing. . (If there is only one
parameter byte, the
ByteOrder
and
ParameterNybblize
are optional.)