To create User Drum Sets on the Roland Sound Canvas, you could use a utility to do the work for you, however, if you want to get your hands dirty you need to be familiar with using System Exclusive Messages (SysEx).
As you know, on the part assigned to a drum set (usually part 10), different notes play
different percussion instruments. There are different preset drum sets available by sending
a Patch Change on the percussion part. Drum sets 65 and 66 of the SC-88 map
are set aside as "user drum sets" which retain their settings even after a GS reset.
Creating a user drum set is a fairly simple matter of telling the Sound Canvas what instrument to use when each note is played. You can specify a number of other parameters at the same time, as listed in the manual.
*d: drum set number (0H = User drum set number 65, 1H = GS Variation number 66) *rr: drum part note number (00-7F) Address(H) Size(H) Data(H) Parameter Description 21 d0 00 00 00 0C 20-7F User drum set name  32-127 : (ASCII 12 characters) 21 d0 0B# 21 d1 rr 00 00 01 00-7F Play Note  0 - 127 21 d2 rr 00 00 01 00-7F Level  0 - 127 21 d3 rr 00 00 01 00-7F Assign Group  0 - 127 21 d4 rr 00 00 01 00-7F Pan  0 - 127 21 d5 rr 00 00 01 00-7F Reverb Send Level  0 - 127 21 d6 rr 00 00 01 00-7F Chorus Send Level  0 - 127 21 d7 rr 00 00 01 00-01 RX Note Off  Off/On 21 d8 rr 00 00 01 00-01 RX Note On  Off/On 21 d9 rr 00 00 01 00-7F Delay Send Level  0 - 127 21 dA rr 00 00 01 01-02 Source Drum Set# (Map)  1 - 2 21 dB rr 00 00 01 00-7F (PG#)  0 - 127 21 dC rr 00 00 01 00-7F Source Note Number  0 - 127
By default user drum set 65 is the same as the SC-88 drum set called "STANDARD Set1", while
user drum set 66 is the same as the SC-55 drum set called "STANDARD".
Each drumset may contain a maximum of 84 instruments.
The user drum set name must be sent as a packet of 12 bytes, even if the name is shorter! Pad it with spaces. (Character 32 / 20H)
Example 1: Easy
To change the "first" note in user set 1 from "Snare Roll" to "Finger Snap", that is, make the first two notes play the same sound, send the following message:
F0 41 10 42 12 21 0C 19 1A 20 F7The address is 21 0C 19 which is the first (by default) assigned note with a sound associated with it. (You can assign sounds to notes that have no default assignment.)
Example 2: More complex
To change the "first" note in user set 1 from "Snare Roll" to "CM Kick Drum", from the "CM-64/32L Set" drum set.
First send the SysEx to change the map from 88 to 55 (the "Source Drum Set# (Map)" parameter):
F0 41 10 42 12 21 0A 19 01 3B F7Then send the SysEx to change the drum set (the "PG#" parameter):
F0 41 10 42 12 21 0B 19 7F 3C F7Then send the SysEx to change the "source note number" parameter:
F0 41 10 42 12 21 0C 19 23 17 F7These three SysEx messages cannot be combined into one message because their addresses are not consecutive.
By way of demonstration here are three MIDI files. The first selects Drum Set 65 and plays Db
three times, which by default should be "Snare Roll". The second file changes Db to "Finger
Snap", the same instrument as D, as seen in example 1. The third file changes Db to "CM Kick
Drum" as seen in example 2.
Play the first MIDI file and note what instrument plays. Play the second MIDI file and then play the first MIDI file again. Note the difference? Now try playing the third MIDI file and then the first yet again. Hear how the same note has been assigned a different instrument?
After playing the third file, play the second file again and then the first file again. Hear anything? No you haven't gone deaf. The second MIDI file only changes the "Source Note Number" parameter. The third MIDI file changes three parameters as detailed in example two. When you play file two after playing file three, file two is suddenly trying to access an instrument that doesn't exist and therefor no sound is heard at all. Moral of the story is "be careful" or more importantly, "be specific!"
That's it! You can build up a user drum set with any percussion instrument on any note of your choice!!
Note that to hear the changes you make with SysEx, you need to send a patch change on the drum channel. This tells the Canvas to read and use the new values.
If you know for a fact that I have made any mistakes above, please let me know.
Feed back on clarity and semantics will also be greatly appreciated.
Thanks, Eddie Lotter