Numbers denoted like FF
represent a hexadecimal
number. Fx
means F0
plus
x, where x is a variable
number from 0-15 (0
to F
).
GENERAL NOTE: Roland's GS standard has the concept of parts as separate from MIDI channels. There are 16 of them, and by default, these match their respective MIDI channels (Part 1 maps to Ch.1, Part 2 maps to Ch.2, and so on).
Part IDs (which marks their location in a GS device's memory) are mapped in a weird way. Part 10 has ID 0. Parts 11 to 16 are assigned the IDs 10 - 15, while the rest has IDs matching their part numbers (e.g. Part 1 has ID 1).
8x
)
and note on (9x
)Bx
)Cx
)Ex
)For this section, CC numbers will be given in decimal and will be represented as regular text.
Sets the bank for the next program change. This allows the use for variations on instrument sounds. For example, patch 81 is a square wave lead, but setting the bank MSB to 1 will produce as pure as approximation of a 50% square wave as possible. Setting it to 8 will give you a sine wave instead. You can refer to this list for a short description of what variations are available.
Keep in mind that setting this CC after a program change will not have any effect! In addition, this will only work after the GS Reset SysEx has been sent. Some software such as vanBasco's Karaoke Player can do this automatically, however.
Normally sets NRPN to be affected by the Data entry CC. In MSGS however, no NRPNs are supported, leaving this effectively useless.
That's not to say it doesn't do anything, however.
If this CC is encountered, MSGS always sets it to
3FFF
, the RPN reset ID.
Kills all sound indiscriminately. Can also be used as a "panic" button.
NOTE: It has been reported that on 98 and XP, the effect of this CC is similar in description to "All notes off" (123).
2000
(2 semitones)Kills all notes on specified channels. If the Hold/Sustain Pedal is enabled, it waits until that particular CC is disabled first.
NOTE: It has been reported that on 98 and XP, this CC seems to release notes instead.
RPN numbers are given as xxyy
,
where xx is the RPN number's MSB, and yy is its LSB.
0000
)0001
)2000
(= A 440Hz)
Both LSB and MSB are accepted on data entry.
0002
)40
(= A 440Hz).
Upon data entry, only MSB is taken
into account, while LSB is ignored.
This section will use the following convention:
Let SYSEX, where SYSEX is an
array containing the entire SysEx string as a series
of 8-bit numbers from start (marked with F0
) to finish
(marked with F7
). The array starts at 0, so
SYSEX[0] = F0
.
Array slices are written in Python's slice notation, so
SYSEX[:3] == SYSEX[0:3] ==
{SYSEX[0], SYSEX[1], SYSEX[2]}.
Example: SYSEX = F0 41 10 42 12 40 00 7F 00 41 F7
F0
41 10
42 12 40 00
In general:
SYSEX[1] contains a vendor ID, of which only three are recognized:
7E
for
Universal non-realtime
7F
for
Universal realtime
41
for
Roland
Only GM Reset is supported by this vendor ID:
09
01
.
Only Set Master Volume is supported by this vendor ID:
04 01 ??
xx
For this vendor ID:
However, although the checksum byte must be present to fulfill the 11 bytes minimum, it is not actually checked. Keep in mind that setting an invalid checksum may render it not working on proper GS hardware.
42 12
(pick GS model ID, send the following SysEx data).
SYSEX[5:8] contains the GS address to be modified (and hence the operation to be done), and will be one of the following:
40 00 7F
= GS Reset.
This switches the synth to GS-compatible mode, and must be sent first in order to use the operations below, as well as the bank select CC. Any data following this reset address won't have any effect.
40 1x 02
= Set MIDI Channel for
This Part.
x is the part ID.
A single byte yy
follows, and is
the MIDI channel to map that part to. I believe this is
expressed normally, with 00
specifying
the first MIDI channel and 0F
specifying the
last one.
40 1x 15
= Set as Drum Channel.
x is the part ID.
A single byte yy
follows, and is
either 00
(for False) or 01
(for True).
40 1x 40
= Scale Tuning.
x is the part ID.
Directly following this is the tuning adjustment for
12 notes on the scale, made up of 7-bit numbers
where 00
is an adjustment of -64.
If tuning data is for less than 12 notes, it can
be terminated by inserting an 80
.
This effect may be used for echo effects or a quick release, however this may not work as expected on more advanced synths.
0000
appropriately.