sc55
12
12.5mb
MIDI file written for the Roland SC-55, an iconic Sound Canvas module from 1991 and the first to incorporate the then-new General MIDI standard.
::|CONTENTS
- Tools
- Getting started with the format
- Nuked-SC55 emulator controls
- Working with MIDI
- MIDI CCs on the SC-55
- SysEx Messages
- Restrictions on submit
- Playback (for voting)
- See also
The
Roland SC-55 (Sound Canvas) was a MIDI module released in 1991. It was the first to incorporate the brand-new General MIDI standard and the first installment of the now-infamous Sound Canvas series.
The SC-55 is in the same class as other so-called "ROMpler" sound modules (for example the MU-50 that our
XG format targets), it is half rackmount-width, with no attached keyboard of its own; MIDI data is simply fed through it to create sound, whether that's coming from a MIDI controller or a sequencer filled with song data.
... And that's what we're here to do with this BotB format! Create a MIDI file played through the SC-55. The sound is similar to good old
MSGS MIDI, but with improved sample quality and full support for Roland's GS standard; which provides features not specified in GM, like filters and effects (as with Yamaha's XG). Because the SC-55 adheres to the General MIDI standard, you can refer to
this patch list to see all the usable sounds.
Luckily, you don't need to own a Roland SC-55 to do this format - in 2024 an emulator called
Nuked-SC55 was released! This makes the SC-55 accessible in a similar way that
the Roland MT-32 is accessible via the Munt emulator. Using Nuked-SC55 and a MIDI loopback tool such as
loopMIDI to bridge the emulator and your sequencer, you'll be able to easily work on your entry like the other MIDI formats.
Tools
-
Nuked-SC55 if not using real SC-55/SC-55mkII hardware
-
loopMIDI
- Any software that can sequence MIDI notes (and preferably pipe the results to a MIDI output for testing - Nuked-SC55 in this case). This includes most DAWs such as
REAPER (which is not free but can be evaluated indefinitely), Logic, FL Studio, and Cubase. Many standalone applications have also been created over the years to work with MIDI, such as Cakewalk and (more recently)
Sekaiju and
Domino. Although piano roll interfaces reign supreme in the realm of MIDI,
OpenMPT can be used for this format, and a unique tracker by BotB's own
Jangler called
Faunatone (offering optional microtonal support) can be utilized. Notation software like Finale, Sibelius or
MuseScore (which is free) can also be utilized.
Getting started with the format
STEP 1: If you don't own your own Roland SC-55, you will need the
Nuked-SC55 emulator, as well as a set of SC-55 ROMs which you can find from your search engine of choice.
The format is restricted to SC-55 or SC-55mkII. Nuked's README.md indicates what to name the ROM files when you put them into the same folder as Nuked.
STEP 2: Once you've got your ROMs set up, you'll need a MIDI loopback tool such as
loopMIDI in order to get the emulator to receive MIDI data from whatever source you're using (like your DAW/sequencer).
STEP 3: Time to get set up with your MIDI creation software. If you're using a DAW you'll need to set up 16 MIDI channels. (
FL Studio 21 template. You can grab a REAPER template from the
MIDI format article that has done this work for you; you'll just need to output to Nuked-SC55 instead of MSGS.) Assign the loopback tool a MIDI input port in your MIDI creation software; Nuked defaults to port 0, so try that first. Once you've set a port and made sure your MIDI channels are outputting to that port, check and see if the emulator responds to your inputs.
>> If you need to use a port other than 0 for Nuked-SC55, open the command line and use
nuked-sc55 -p:X where X is your chosen MIDI input port. This starts a fresh instance of the emulator using the port you specified.
>> Other command line flags you can set include
-ab:X:Y to set the Audio Buffer (512:32 is the default, 1024:64 doubles it) - use this if you get periodic crackling sounds which are probably a buffer overrun. There is also
-a:X to select a different Audio Device than your default (which is 0).
Once you've gotten Nuked to make sound, you're good to go - sequence a beautiful new MIDI, export/save that .mid file and send it in!
If you find yourself in dire straits, you can write for MSGS and not worry too much about it; the comparison will be closer than it is to
XG. However someone else will have to render your entry. Also be careful of overloading the maximum polyphony or data intake of the SC-55. The SC-55 has a polyphony limit of 24 and the SC-55 mkII has a polyphony limit of 28.
Nuked-SC55 emulator controls
Although you're mostly going to be sending messages to it externally (through your DAW/sequencer of choice), the emulated system can be interacted with broadly using the following keys:
Q -> POWER
W -> INST ALL
E -> INST MUTE
R -> PART L
T -> PART R
Y -> INST L
U -> INST R
I -> KEY SHIFT L
O -> KEY SHIFT R
P -> LEVEL L
LEFTBRACKET -> LEVEL R
A -> MIDI CH L
S -> MIDI CH R
D -> PAN L
F -> PAN R
G -> REVERB L
H -> REVERB R
J -> CHORUS L
K -> CHORUS R
LEFT -> PART L
RIGHT -> PART R
One useful key sequence is to enable GS mode without sending GS reset SysEx: press Q to power off the emulator, hold U, press Q again to power on (it should ask you about GS mode), let go of U, and then press W to accept. Note that if you're using GS mode, you will still need to include GS reset SysEx (listed below) in your MIDI - such as with Sekaiju. Otherwise the information required to play it back as intended will not be contained in your entry. Don't fall for this!
Working with MIDI
There is already a healthy amount of documentation on the
MSGS MIDI article, so if you're new to MIDI and want maximum detail, check that one out.
MIDI can control common parameters like note velocity (which is individual note volume), channel pitch (for things like pitch bends and detunes), channel volume, channel panning, the chosen patch/instrument for the channel ("Program Change"), and more! Most of these are controlled through "MIDI CCs" (short for continuous controller) - a way to adjust specific parameters an even automate them within your MIDI. Below is a list of CCs that the SC-55 responds to.
MIDI CCs on the SC-55
CC1 - Modulation (channel vibrato)
CC5 - Portamento Time (use with CC65)
CC6 - Data Entry MSB [most significant byte]
CC7 - Channel Volume
CC10 - Channel Panning
CC11 - Channel Expression (a percentage of Volume)
CC16* - Assignable control 1
CC17* - Assignable control 2
CC38 - Data Entry LSB [least significant byte, for fine-tuning values if applicable]
CC64 - Hold1
CC65 - Portamento
CC66 - Sostenuto
CC67 - Soft
CC84 - Portamento Control [SC-55 mkII only?]
CC91 - Effect1 Depth (reverb send level)
CC93 - Effect3 Depth (chorus send level)
CC98 - NRPN LSB
CC99 - NRPN MSB
CC100 - RPN LSB
CC101 - RPN MSB
* - The SC-55 offers two configurable MIDI CC's that can each be mapped to one of many synthesis functions, such as cutoff frequency, tuning, and more. One use case for this is to map them to coarse tuning, which allows for formant shifting-like effects. By default, these are mapped to CC16 and CC17, however the actual CC used may be reassigned to any other continuous control not used for anything else. These must be assigned via SysEX if submitting a .MID to this site.
NRPNs and RPNs
These CCs work together to control something more specific; they're like an expanded CC combo. The pair of 98/99 both get set to select a specific parameter, then the Data Entry MSB (CC6) and occasionally the Data Entry LSB (CC38) are used to actually set the value of the parameter you chose.
You will need to include a GS reset SysEx in your MIDI to be able to use these.
Vibrato Rate
CC98 = 8
CC99 = 1
Then CC6 controls. 64 is middle, +/- 50 in either direction
Vibrato Depth
CC98 = 9
CC99 = 1
Then CC6 controls. 64 is middle, +/- 50 in either direction
Vibrato Delay
CC98 = 10
CC99 = 1
Then CC6 controls. 64 is middle, +/- 50 in either direction
TVF Cutoff Frequency
CC98 = 32
CC99 = 1
Then CC6 controls. 64 is middle, +/- 50 in either direction
TVF Resonance
CC98 = 33
CC99 = 1
Then CC6 controls. 64 is middle, +/- 50 in either direction
TVF&TVA Envelope Attack Time
CC98 = 99
CC99 = 1
Then CC6 controls. 64 is middle, +/- 50 in either direction
TVF&TVA Envelope Decay Time
CC98 = 100
CC99 = 1
Then CC6 controls. 64 is middle, +/- 50 in either direction
TVF&TVA Envelope Release Time
CC98 = 101
CC99 = 1
Then CC6 controls. 64 is middle, +/- 50 in either direction
Coarse Pitch of Drum Instrument
CC98 = X, where X is the key number of the relevant drum instrument
CC99 = 24
Then CC6 controls. 64 is middle, +/- 64 in either direction
TVA Level of Drum Instrument
CC98 = X, where X is the key number of the relevant drum instrument
CC99 = 26
Then CC6 controls, 0-127
Panning of Drum Instrument
CC98 = X, where X is the key number of the relevant drum instrument
CC99 = 28
Then CC6 controls. 0 is random, 64 is middle, +/- 63 in either direction
Reverb Send Level of Drum Instrument
CC98 = X, where X is the key number of the relevant drum instrument
CC99 = 29
Then CC6 controls, 0-127
Chorus Send Level of Drum Instrument [SC-55 mkII only?]
CC98 = X, where X is the key number of the relevant drum instrument
CC99 = 30
Then CC6 controls, 0-127
Pitch Bend Sensitivity
CC100 = 0
CC101 = 0
Then CC6 controls, 0-24 indicates number of semitones possible to bend (default is 2 semitones, the max of 24 means two octaves).
Master Fine Tuning
CC100 = 1
CC101 = 0
Then both CC6 and CC38 control, with CC6 being the coarser/wider setting and CC38 being finer. The default is both values set to 64, +/- 64 in either direction
Master Coarse Tuning
CC100 = 2
CC101 = 0
Then CC6 controls, 64 is default, +/- 24 in either direction (represents semitones, so two octaves in either direction)
You can set both the RPN and NPRN CC values to 127 to disable them for the channel. This may be useful to not accidentally set other values later on.
SysEx Messages
Much like the
MIDI and especially
XG formats, SysEx messages can be used to send more specialized commands to the SC-55. These are specific sequences of two-digit hex values that change certain parameters; though complicated, they are the only way to control certain things like adjusting the tone of the reverb/chorus or microtuning individual notes to adjust the scale. Check out pages 97-101 of
the manual if you're curious, as well as the checksum examples on page 104.
SysEx messages for this format will take the form of
F0 41 10 42 12 xx yy zz [aa, bb, ...] ss F7. The sequence of xx yy zz is where you set the address for the parameter in question - refer to the manual to find out what that is - while [aa, bb, ...] indicates the data you're trying to set the parameter to. This may be only a single value like aa, but it also might be multiple. The ss is your checksum, which is a very annoying value to calculate but you can read about how to do it on page 104. Basically you sum up all those variable values we just mentioned, convert to decimal, divide by 128, take the remainder and then subtract that remainder from 128. That value, converted back to hexadecimal, is the checksum. Easy, right? Right.
A few useful SysEx:
F0 41 74 42 12 40 00 7F 00 41 F7 - GS reset, required to use alternate-bank instruments and the RPN/NRPN CC settings listed above
F0 41 74 42 12 40 01 30 00 0F 7F - set reverb to Room 1
F0 41 74 42 12 40 01 30 01 0E 7F - set reverb to Room 2
F0 41 74 42 12 40 01 30 02 0D 7F - set reverb to Room 3
F0 41 74 42 12 40 01 30 03 0C 7F - set reverb to Hall 1
F0 41 74 42 12 40 01 30 04 0B 7F - set reverb to Hall 2 (default)
F0 41 74 42 12 40 01 30 05 0A 7F - set reverb to Plate
F0 41 74 42 12 40 01 30 06 09 7F - set reverb to Delay
F0 41 74 42 12 40 01 30 07 08 7F - set reverb to Panning Delay
F0 41 74 42 12 40 01 38 00 07 7F - set chorus to Chorus 1
F0 41 74 42 12 40 01 38 01 06 7F - set chorus to Chorus 2
F0 41 74 42 12 40 01 38 02 05 7F - set chorus to Chorus 3
F0 41 74 42 12 40 01 38 03 04 7F - set chorus to Chorus 4
F0 41 74 42 12 40 01 38 04 03 7F - set chorus to Feedback Chorus
F0 41 74 42 12 40 01 38 05 02 7F - set chorus to Flanger
F0 41 74 42 12 40 01 38 06 01 7F - set chorus to Short Delay
F0 41 74 42 12 40 01 38 07 00 7F - set chorus to Short Delay (FB)
(more reverb and chorus settings are listed on page 98 of the manual)
Restrictions on submit
Submission should be a .mid file playable on the Roland SC-55 (or SC-55mkII) or through Nuked-SC55 emulator using either of those two ROM sets.
Playback (for voting)
If you don't have an SC-55 to check out the entries on, you'll again be using
Nuked-SC55 emulator to listen.
Much like the
XG format, a useful MIDI player is
Falcosoft MIDI Player. Click the "Settings" icon near the top left and set the "Midi Out" Output Port setting to loopMIDI (or whatever loopback device you're using). You should see Nuked-SC55 respond once you start playing the MIDI back.
You could also use a MIDI sequencer such as
Sekaiju or
Domino being routed to the Nuked-SC55 emulator.
See also
-
midi (format)
-
mt32 (format)
-
xg (format)
-
C700 VST (if you are unsure how to set up a VST for MIDI, the C700 guide may help you)
-
Specification of General MIDI and Roland MT-32 patches
-
Probing the Depths of MIDI on the Roland SoundCanvas PDF Covering some MIDI tricks and parameters for Sound Canvas devices.
-
Tone-Browser Display tool for parameter and waveform data, includes multiple versions of the SC-55. By shingo45endo.
-
SoundPalette Browser-based sysex editor & viewer with support for the SC-55, by hikari_no_yume.
-
loopMIDI MIDI routing software
-
MIDIYoke - MIDI routing solution compatible with Windows XP