On most SoundCanvas models, you can access a variety of advanced functions via front-panel button sequences. Controlling the SoundCanvas through MIDI, however, offers substantial advantages — not only for models with limited front-panel access, but for sequencing and live applications on all models. For example, since edits can’t be saved in the SoundCanvas itself, to save the edits you make from the front panel in micro edit of part edit, you must do a part or bulk system-exclusive (sys-ex) dump into your sequencer. That’s fine if that particular dump will take care of the whole song, but if you want to make substantial changes in instrumentation, effects, or tunings in the middle of a song, sending the dump back to the SoundCanvas may cause unacceptable interruptions in playback. Using smaller controller and sys-ex messages will enable you to create more expressive performances and take greater advantage of Roland’s GS parameters. Small sys-ex messages are also a heck of a lot easier to edit once they’re in your sequence.
The tips that follow will introduce you to many highly musical avenues to explore when programming your SoundCanvas. Everything presented here will work on the following Roland products: SoundCanvas models SC-33, SC-55, SC-55mkII, and SC-155; the Boss DS-330 Dr. Synth sound module; the JV-30 and JW-50 synthesizers; the SCC-1 GS sound card; and the VE-GS1-01 GS expansion board for the JV-1000 music workstation.
(The following models, released after the original publishing date of this article will also respond to GS programming: SC-50, SC-88, JV-35, JV-50, W-50, SCD-15, RA-30 and RA-95.)
I. MIDI CONTINUOUS CONTROLLERS
Using continuous controllers is an easy way to begin exploring some of the hidden features of your SoundCanvas. Once you know which controllers access which features, you can experiment with them by entering the controller numbers and values into your sequencer’s event list and then playing the data into the SoundCanvas.
You’re probably already familiar with controllers such as modulation (CC1), volume (CC7), and pan (CC10), and the SoundCanvas of course responds to them. For some added finesse, however, let’s take a look at some special controller tricks and what you can do with Registered and Non-Registered Parameter Numbers (RPN and NRPN).
A. Mono and Portamento. If you want your SoundCanvas to go retro and sound a bit more analog, select a synth sound, such as #82 Saw Wave, and use continuous controllers to set part 1 to mono mode and add portamento . . . instant vintage synth! You may also want to add some chorus to fatten it up a bit. Send the following data values on the MIDI channel of the part that you want to edit:
CC126 Value 1 Mono On
CC65 Value 127 Portamento On
CC5 Value 40 Portamento Time
B. Volume and Expression. Another important aspect of successful sequencing with the SoundCanvas is the relationship between volume (CC7) and expression (CC11). Roland recommends using volume to set the maximum level for each part. Use this to set the initial balance of your sounds. Expression can then be used as a controller for adjusting volume between 0 and the level set by CC7. This allows you to retain a lower level, yet still have a full range of expressive control over your mix. It’s also very handy when you want a part’s maximum level to be an irregular value, such as 71. Using only CC7, it can be difficult to return a slider or pedal exactly to 71. However, if you assign the slider to CC11, you simply run the slider to the top, and the Level will return to 71.
C. Pitch-Bend Sensitivity. Registered Parameter Numbers CC100 and CC101 define the RPN functions, which include pitch-bend sensitivity, fine tuning, and coarse tuning. Use data entry CC6 (MSB — most significant byte) and CC38 (LSB — least significant byte) to set the values for the registered parameter you choose. (MSB and LSB commands allow two 7-bit data words to be used to send a single 14-bit word. “Most” and “least” simply refer to which byte is sent first.) Again, be sure to enter these MIDI messages into your sequence on the proper MIDI channel for the part you intend to edit. The SoundCanvas has a default pitch-bend range of a whole-step, which is fine for most musical uses. But to get a real bluesy string bend on a guitar part, a ribbon-bender effect on a synth lead part, or realistic fall-offs on brass stabs, you’ll need to increase the Pitch-Bend Range. You can set the bend range for an individual part to up to two octaves by inserting these messages into your event list:
CC101 Value 0
CC100 Value 0
CC6 Value X
X is the number of half-steps, from 0 to 24, to which you want the SoundCanvas to respond. CC101 and CC100 tell the SoundCanvas that pitch-bend is the parameter you want to adjust.
D. Coarse Tuning. The coarse tuning parameter lets you change the pitch of the SoundCanvas in half-steps over a four-octave range. Since all registered parameter functions affect only the channel on which they are sent, you can transpose just the parts you want to, and leave others unaffected. This lets you transpose a piece to suit a singer’s range, while leaving the drum and sound effects parts at their original pitch. On the other hand, you may want to tune the drums up or down to fatten or tighten them up, and leave the other parts untouched. If you try to do this by transposing your entire sequence, the note numbers in your drum tracks will be transposed as well, yielding some unexpected and possibly undesirable results. Add the following message to the event list of each track you wish to transpose:
CC101 Value 0
CC100 Value 2
CC6 Value X
X can be any value from 40 to 88, with 64 being standard tuning, and each number higher or lower than 64 representing a half-step up or down.
E. Fine Tuning. The pitch of standard tuning has not been consistent over the years, and indeed, many ensembles and orchestras today choose pitch references other than A=440Hz. With the Fine Tuning registered parameter function, the SoundCanvas can be tuned to match any modern or historical pitch level. Here’s the basic message:
CC101 Value 0
CC100 Value 1
CC6 Value X
For standard A=440Hz tuning, X=64. For each increment of X, the pitch of the SoundCanvas changes approximately 1.5 cents (a cent is 1/100 semitone), giving you a range from 415.3Hz to 466.2Hz. Here are the messages for three common historical pitch references (note that A=415Hz requires a coarse tune message to get beyond the 415.3Hz bottom limit). Insert them in each track you wish to tune.
A=430Hz A=460Hz A=415Hz
CC101 Value 0 CC101 Value 0 CC101 Value 0
CC100 Value 1 CC100 Value 1 CC100 Value 2
CC6 Value 36 CC6 Value 115 CC6 Value 63
CC101 Value 0
CC100 Value 1
CC6 Value 62
F. Synthesis Editing. The SoundCanvas synthesis engine comes alive with the NRPN controllers CC98 and CC99. Eight NRPNs let you control basic synthesis functions, and five are for editing the level, pitch, pan, reverb, and chorus amount for individual instruments within a drum kit.
Listed below are the synth editing NRPNs, their controller numbers, and their value ranges. A value of 64 is the default setting. You can raise or lower any of the values ±50; values above 64 will increase the effect, and values below 64 will decrease it. Some sounds may not respond as you’d expect because the ROM value is already maximized. For instance, if a sound’s factory default for filter cutoff is already wide open, adding +50 to it will have no effect. In this case, lowering the cutoff by -50 should produce a noticeable effect. Note: On some SoundCanvas instruments, you must first enable the device to receive NRPNs by sending a GS reset message (see the final tip in this article). The CC6 values of 64 are default settings, and 14 and 114 are the allowable minimum and maximum, respectively. (See Figure 1, page 3)
CC99 CC98 CC6
Vibrato Rate 01 08 14 – 64 – 114
Vibrato Depth 01 09 14 – 64 – 114
Vibrato Delay 01 10 14 – 64 – 114
Filter Cutoff 01 32 14 – 64 – 114
Resonance 01 33 14 – 64 – 114
TVF & TVA Attack Time 01 99 14 – 64 – 114
TVF & TVA Decay Time 01 100 14 – 64 – 114
TVF & TVA Release Time 01 102 14 – 64 – 114
To slow the attack time of a particular part, insert the message below into your sequencer on the MIDI channel the part is set to respond to. For a slower attack, X should be a value between 65 and 127.
CC99 Value 01
CC98 Value 99 (TVF & TVA Attack Time)
CC6 Value X
To get a musical wind instrument vibrato, try this message on a flute sound.
CC99 Value 01
CC98 Value 8 (Vibrato Rate)
CC6 Value 72
CC99 Value 01
CC98 Value 9 (Vibrato Depth)
CC6 Value 78
CC99 Value 01
CC98 Value 10 (Vibrato Delay)
CC6 Value 100
G. Drum Instrument Editing. NRPNs let you tweak any individual sound in a SoundCanvas drum kit. In this case CC99 defines the function, CC98 specifies the note number, and CC6 sets the value. The following table shows these controllers and values. (See Figure 2)
CC99 CC98 CC6
Drum Pitch Coarse 24 Note number 0 – 64 – 127
Drum Level 26 Note number 0 – 127
Drum Pan 28 Note number 00 = random
01 – 64 – 127
Drum Reverb send 29 Note number 00 – 127
Drum Chorus send 30 Note number 00 – 127
Try changing the pitch of the snare drum assigned to E2 with these messages:
CC99 Value 24
CC98 Value 40
CC6 Value 70
Once these NRPNs reside in your sequence, you can easily make subtle or drastic changes to any of these parameters by altering the corresponding CC6 value.
Sys-ex commands allow you to alter the entire sonic makeup of your SoundCanvas by typing a data string into your sequencer’s sys-ex list. If you haven’t used sys-ex before, check out the “What the Hex?” sidebar on page 6 for a tutorial on how it works with the SoundCanvas. (The first five bytes in the messages below, F0 41 10 42 12, are a header for all SoundCanvas sys-ex messages. The F0 is a sys-ex status byte, and the rest of the message consists of data bytes.) In all of the following examples, we have computed the checksum for you, so all you have to do is enter the data. Roland MC-series sequencers with Super MRC automatically compute the checksum when you enter 00 just preceding the F7 (end of exclusive) message. Refer to Section III for more info on checksums. A. Two Rhythm Parts. Enabling a second part for rhythm lets you mix the Jazz and Jazz Brush Kits, for example, combine the Electronic kit with the Standard kit, or use the SFX Kit along with any of the other drum kits. The first message below will change part 11 to drum part 2, after which you can send a program change on channel 11 to call your second drum kit. The second message changes part 11 back to a normal part.
F0 41 10 42 12 40 1A 15 02 0F F7
F0 41 10 42 12 40 1A 15 00 11 F7
B. Controller Routing. A common misconception is that the SoundCanvas doesn’t respond to aftertouch. It will actually receive both channel and polyphonic aftertouch, but first you need to assign aftertouch to a destination. All told, the SoundCanvas can accept six control sources: modulation, pitch-bend, channel and poly aftertouch, and two assignable MIDI controllers. What’s more, each of these can have up to 11 simultaneous destinations: pitch, filter cutoff, and amplitude, and rate, TVF depth, TVA depth, and pitch depth for each LFO. For a complete list, check addresses 40 2n 00 through 40 2n 5A on the MIDI Implementation Chart in your instrument’s owner’s manual. Note that the “n” in these addresses is the part number. The following message enables aftertouch to create volume swell and add a bit of vibrato on part 1:
F0 41 10 42 12 40 21 22 78 50 06 2F F7
Try this on #49 Strings to add a little intensity, or on a lead sound, such as #88 Bass & Lead. For other parts, change the second digit of the address byte (the sixth data byte, 21, in the above example) as needed. Note for hex-heads: When specifying parts, Roland uses 1 for part 1, 2 for part 2, and so on up through part 10, which is specified using 0. Parts 11 through 16 are specified with the hex digits A through F.
C. Alternate Scale Tunings. Through sys-ex, you can tune individual pitches to create scales that stray from the equal-tempered path. All kinds of historical and ethnic tunings are possible, and since a message affects only the part to which you send the string, you can even have interesting fusion effects like an ethnically tuned solo accompanied by an equal-tempered band. Increasing the value of any single data byte (the 12 bytes following the six address bytes) raises or lowers the pitch one cent, and standard equal temperament is represented by 40 (hex). These parameters are located with the Micro Edit functions on the MIDI implementation pages of the SoundCanvas manual. As with all Micro Edit functions marked in the manual with an asterisk, you must send the data for all addresses within the parameter; in this case, you must send data for all 12 notes of the chromatic scale, even if there are notes that you aren’t changing. The following example, set for part 1 (as denoted by the second digit in the sixth data byte), is one of many Arabic tunings, and it is effective with #16 Santur.
F0 41 10 42 12 40 11 40 40 72 40 40 0E 40 40 40 0E 40 40 0E 53 F7
D. Changing Effects. There’s a lot more to the effects capabilities of the SoundCanvas than most people realize: There are eight different reverbs, each with eight variations, plus two delays and a flanger. You can edit effect parameters, such as reverb master level and time, plus chorus rate, level, and feedback. You can use CC91 and CC93 to control the amount of reverb and chorus per part, but the master levels default to 50%. With sys-ex you can increase the level as well as edit all the effect parameters. For a complete list of editable parameters, consult addresses 40 01 30 through 40 01 3F on the MIDI Implementation Chart. Here’s how to select Room 2 reverb, and max its master level:
F0 41 10 42 12 40 01 30 02 04 00 7F 0A F7
Here’s how to max out the master levels and increase reverb time:
F0 41 10 42 12 40 01 33 7F 60 2D F7
This message switches chorus to flanger:
F0 41 10 42 12 40 01 38 04 03 F7
The chorus level for each part defaults to 0, so you’ll have to boost its level in order to hear the flanger.
E. Turning Channels Off. When using more than one sound module with a sequencer, you may want to thin out the orchestration by turning off a part or two on your SoundCanvas. Let’s say you want to have a piano module respond to MIDI channel 1 and the SC-55 to channels 2 through 16. Since the SoundCanvas listens on all 16 channels, you must use a short sys-ex message to turn part 1 off:
F0 41 10 42 12 40 11 02 10 0D F7
Any of the 16 parts can be turned off using the part numbering given in Figure 3 (page 5).
Fig. 3. The SoundCanvas listens on all 16 MIDI channels. Use the sys-ex messages in this chart to turn off individual parts.
Part 1: F0 41 10 42 12 40 11 02 10 1D F7
Part 2: F0 41 10 42 12 40 12 02 10 1C F7
Part 3: F0 41 10 42 12 40 13 02 10 1B F7
Part 4: F0 41 10 42 12 40 14 02 10 1A F7
Part 5: F0 41 10 42 12 40 15 02 10 19 F7
Part 6: F0 41 10 42 12 40 16 02 10 18 F7
Part 7: F0 41 10 42 12 40 17 02 10 17 F7
Part 8: F0 41 10 42 12 40 18 02 10 16 F7
Part 9: F0 41 10 42 12 40 19 02 10 15 F7
Part 10: F0 41 10 42 12 40 10 02 10 1E F7
Part 11: F0 41 10 42 12 40 1A 02 10 14 F7
Part 12: F0 41 10 42 12 40 1B 02 10 13 F7
Part 13: F0 41 10 42 12 40 1C 02 10 12 F7
Part 14: F0 41 10 42 12 40 1D 02 10 11 F7
Part 15: F0 41 10 42 12 40 1E 02 10 10 F7
Part 16: F0 41 10 42 12 40 1F 02 10 0F F7
F. Splits and Layers. For live performance, use your sequencer and sys-ex to instantly create complex splits and layers — even on keyboards that don’t have zoning capabilities or can’t transmit on multiple channels. First we assign part 2 to MIDI channel 1. To do this, create a sys-ex string in which part 2’s address, 40 1n 02 with n=2, is followed by the data byte 00, which denotes MIDI channel 1. (Part 1 is already assigned to MIDI channel 1, so we don’t have to tinker with it.) We now assign the parts to specific keyboard ranges using the Key Range Low and High addresses (40 1n 1D and 40 1n 1E). Now select tones for each part with the Tone Number address (40 1n 00 and 01; two bytes required). This is great if you want to play a bass and piano break in the middle of a song. Leave out the Key Range messages and you have an instant layer.
First, assign part 2 to MIDI channel 1:
F0 41 10 42 12 40 12 02 00 2C F7
Now let’s use modulation to control the level of the sound on Part 2. We’ll assign modulation to amplitude and turn the pitch modulation off, like this:
F0 41 10 42 12 40 22 02 7F 40 00 5D F7
You can use this example to fade in a string sound over a piano sound.
G. Voice Reserve. This parameter lets you assign a minimum number of voices and a hierarchy for each part, so that if the number of notes in a sequence exceeds the unit’s polyphony, it will borrow voices from the lower priority parts and keep the higher ones playing. If two parts are assigned the same number of voices, the lower-numbered part will take priority. The SoundCanvas has a default part priority where part 10 (the drum part) is highest, followed by parts 1 through 16 in ascending order.
The following message reassigns the voice reserves for parts 9 through 16, reserving a minimum of three voices each on parts 9, 11, and 12, and two each on parts 13 through 16:
F0 41 10 42 12 40 01 10 03 00 00 00 00 00 00 00 00 03 03 03 02 02 02 02 6C F7
H. GS Reset. This message will reset the SoundCanvas to its factory default condition. In the case of the newer SoundCanvas instruments, such as the SC-55mkII, you must send this message before using the NRPNs to program your sounds. Insert this message at the beginning of every song, in order to wipe the palette clean:
F0 41 10 42 12 40 00 7F 00 41 F7
The best thing about this message is that you don’t need to worry about messing up your SoundCanvas by entering any of the other messages in this article incorrectly. It will always return you to a clean condition. So have fun with your MIDI hacking!
III. WHAT THE HEX!
MIDI messages can be notated numerically in one of three ways: binary, decimal, or hexadecimal. The method the microprocessors in your MIDI equipment prefers is binary, in which each of the eight bits in a data byte is represented by either a 0 or a 1. You, though you may not realize it yet, prefer to use the decimal system, in which each of your ten fingers is represented by an Arabic numeral, the familiar 0 though 9. Hexadecimal notation (or “hex,” as it is affectionately known), makes working with MIDI messages easier than either of the other two systems. Hex is base 16, with the rightmost column being the “ones” column, and the column to the left being the “16s.” Our decimal system only has 10 symbols for representing numbers, but hex must have 16. To accommodate these six unrepresented values, we use the letters A through F to represent the values from 10 through 15 decimal. A value of 16 appears in hex as 10. (Some publications use an “H” after a hex number, to make it easy to tell the difference between 10 in decimal and 10H, which would be 16 in decimal.)
Contrary to popular belief, the engineers who invented the hex system did not have eight fingers on each hand. They did, however, have plenty of eight-bit bytes in binary to worry about. Since four digits of binary can represent a total of 16 different values, we can quickly translate an eight-digit binary number into a two-digit hex number. It’s easier to recognize status bytes and MIDI channels when they are in hex notation; consequently, it’s easier to keep track of MIDI messages when inserting them in a sequencer track or programming your SoundCanvas in Micro Edit mode, which displays all parameters in hex.
MIDI system-exclusive messages contain hexadecimal representations of a given instrument’s internal parameter settings. The SoundCanvas’s sys-ex messages are divided into three sections: header, body, and end. The header is virtually identical for most of the sys-ex messages you’ll use with the SoundCanvas. It simply identifies this message as sys-ex data for a Roland GS instrument.
F0 Begin sys-ex
41 Roland ID
10 Device ID
42 GS Model ID
12 Data Set Command
The body consists of a three-byte address, any number (up to 256) of data bytes, and the infamous Roland checksum. Each editable parameter in the SoundCanvas has its own sys-ex address. This allows you to send a sys-ex message to a specific address without bothering the neighboring parameters. Look for the Parameter Base Address near the back of your SoundCanvas manual, then find the table labeled Patch Parameters for the addresses used in these examples.
For our first example, we’ll change the reverb from the Hall 2 default setting to delay. Under Patch Parameters, Reverb Macro is listed next to the address 40 01 30. We enter those numbers as our three-byte address.
The address is a starting point for the data bytes to enter memory. The first data byte is entered at that address, and the remaining data bytes automatically flow to the following address locations. For Reverb Macro, the manual indicates there are eight choices, of which delay is number 06, so 06 becomes our first and only data byte.
Next, we need to compute a checksum for this message. The checksum is used to protect your SoundCanvas from receiving corrupted data by ensuring that the address and data bytes follow a precise mathematical formula. Corruption is usually not a problem when creating small messages, as in these examples, but can be when one missing byte in a bulk dump can ruin a dozen of your favorite patches! Here’s a simple translation of the checksum formula:
80 – (sum of address bytes + sum of data bytes) = Checksum
If the sum of the address and data bytes is greater than 80 (hex), the result will be a negative checksum. In that case, subtract 80 from the address and data sum as often as necessary until the sum is less than 80, so that the subtraction that computes the checksum yields a positive result. For our example, we have:
80 – (40 + 01 + 30 + 06) = Checksum
80 – 77 = Checksum
09 = Checksum
But hypothetically, if the sum of the address and data bytes had been greater than 80 (hex):
80 – (80 + 40 + 01 + 40 + 06) = Checksum
80 – 107 = Checksum (negative, so subtract 80)
80 – (107 – 80) = Checksum (still negative, so subtract 80 again)
80 – (87 – 80) = Checksum (positive) 79 = Checksum
So our body now becomes:
If you’re new to hex, you may be confused to see an equation like 80 – 77 = 09. You may find it easier to convert all the values to decimal, perform the subtraction, and then convert back. In this case, 128 (equal to 80 hex) minus 119 (equal to 77 hex) equals 9.
The checksum is followed by the end-of-exclusive byte F7. Our entire message would be:
F0 41 10 42 12 40 01 30 06 09 F7
For the SoundCanvas, there is a slight variation on this message format when we want to address parameters for a single part. Look in the Patch Parameter addresses in the manual to find:
40 1n 02 Rx Channel
40 1n 03 Rx Pitch-Bend
Notice all the addresses past this point have an “n” in the second address byte. In hex, the 16 SoundCanvas parts are numbered starting with 1. For part 1, n=1, for part 2, n=2, and so on. For part 10, n=0, after which part 11 is numbered A and so on. For this example, let’s say we want to change part 1 from MIDI channel 1 to channel 16, and not have it respond to pitch-bend messages. First, we use the same five-byte header, followed by the appropriate starting address as shown in the Patch Parameter list — with n=part 1 — and two data bytes, since we’re changing two consecutive parameters:
Header F0 41 10 42 12
Address 40 11 02
Data 0F 00
Our checksum for this message would be:
80 – (40 + 11 + 02 + 0F + 00) = Checksum
80 – 62 = Checksum
1E = Checksum
F0 41 10 42 12 40 11 02 0F 00 1E F7