What Is System Exclusive?
System Exclusive data is MIDI's way of letting each synthesizer manufacturer transmit private data about their products. A System Exclusive message has a manufacturer ID, and the rest of the message is completely proprietary and varies for each manufacturer and even each of their products. Cakewalk does not understand what this data means, it simply can hold onto it for you. You can take snapshots of your equipment's configuration and store it in Cakewalk's System Exclusive banks for transmitting back to the equipment. You may want to do this simply to back up your equipment's memory, much like backing up your computer's hard drive in case something goes wrong. Or you may configure your equipment differently for each song's requirements - which is why storing System Exclusive banks with each Cakewalk file can be useful. Of course, for merely backing up your equipment, you can have a file containing only System Exclusive data and no notes.
Dump Request Macros
When you press the Receive button in the SYSX window, you may pick from a list of Dump Request Macros. These are short System Exclusive messages sent to a synthesizer to make it dump (send back) System Exclusive data. DRMs are defined in your WINCAKE.INI file in the [Dump Request Macros] section. You may add your own DRMs or modify the ones that we have provided. Use the Windows Notepad to edit the file. Comments in the WINCAKE.INI file itself describes how to write DRMs. The specific SYSX messages can either be found in the instrument manual, or can be obtained by contacting the manufacturer. Remember that a DRM must start with F0, and end with F7.
When using a DRM, remember to connect both the MIDI In and Out ports of the synthesizer to the MIDI interface. If you will only be sending SYSX data from Cakewalk, it is sufficient to connect only the MIDI In port of the synthesizer. Make sure instruments are set up to receive and/or transmit SYSX.
Sometimes you will find that the byte size will be different when you use a DRM, as opposed to initiating the dump from the instrument. It is possible the instrument is dumping some additional information when you initiate the dump from the instrument, but you should be able to use either method without any problems.
Please note that many of the DRMs included with Cakewalk have been donated by customers who are using the particular equipment. In some cases we have not been able to test those DRMs because we do not have access to that equipment. We are redistributing such DRMs on an as-is basis. Additional user-supplied DRMs may be available on BBSs like CompuServe.
SYSX Meta Events
You can use a SYSX Meta Event to send any of the 256 available SYSX banks at any time in a sequence. MIDI is a serial data transmission, meaning it can do only one thing at a time. If you try to upload a huge sampler dump during a fast drum solo, playback will noticeably lurch. MIDI must complete the System Exclusive message before it can resume playback. The SYSX Meta Event is appropriate only for very short System Exclusive messages. The exact length depends on various factors such as the speed of your computer, but as a rule of thumb, 100 bytes is a likely maximum, and maybe less.
You don't need to use a SYSX Meta Event to transmit system data at the beginning of your song. Use the Auto option for sending SYSX banks during playback instead. Use the SYSX Meta Event only when you need to change a synthesizer setting during the middle of a song.
Sending a SYSX Bank in the Middle of a Sequence
If for some reason you need to send a SYSX bank in the middle of a sequence, this can be done with a SYSX Meta Event. You can send any of the 256 SYSX banks at any time in a sequence. To do this you have to insert an event in the Event List using the Insert key on the PC keyboard. Next you have to double click on the Event Kind and change it to System Exclusive. In the Values column you select the bank (0-255) you want to send.
Saving MIDI Files Containing System Exclusive Banks
If a MIDI (.MID) file has System Exclusive Auto-Send banks, then Cakewalk saves these in a MIDI File as System Exclusive messages at the very beginning of the song (1:1:0). If the song has other MIDI data starting at 1:1:0 -- for example, notes -- it won't get played correctly because the System Exclusive transmission will delay the start. The beginning of the song will sound garbled.
The solution is to start the song at measure 2, leaving room for the System Exclusive. (A good rule of thumb is to slide everything later by 1 measure, but you could make it longer if need be.) If you have Tempo changes, Meter/Key changes, or Markers in your song, you'll have to use Cut and Paste to cut the entire song and paste it a measure later. If you have only notes in your song, you may use the Slide command instead, which is a little quicker.
Read the Saving SYSX In .MID Files section of this document for more information.
You can load and save individual SYSX banks to the file format used by the popular public-domain MIDIEX bulk dump utility. The file extension used is .SYX.
Because the file format is the same as MIDIEX, you can load SYSX files you've obtained from friends or BBSs.
You may also use this feature to copy a SYSX bank between two Cakewalk song files. Save the bank to a .SYX file, load the other Cakewalk file, then load the .SYX file. This is also a good way to copy one bank to another in the same song file.
The SYSX View
By clicking the Name button, you may enter a description for a bank. Names will only be saved in .WRK files.
Select the Right Port
When you want to send a SYSX bank to an instrument, it is important to tell Cakewalk to which port the instrument is connected. If you only have a one-port MIDI interface you don't have to worry about this setting. The port numbers are based on the order of the highlighted MIDI Out ports in the Settings | MIDI Devices section in Cakewalk.
The Auto option tells Cakewalk to transmit that bank every time it loads the file. You might use this option for banks that contain System Exclusive messages that load a set of sounds for a synthesizer at or before the start of a song.
Saving SYSX in .MID Files
Make sure you set the SYSX bank to Auto send in the SYSX View before saving the .MID file. Once saved as a .MID file, use File | Open to load it again and open the SYSX view. You'll notice that the SYSX has been split up onto many different banks. There is necessarily an 1/18 second delay after each SYSX bank is sent. Basically, you can send all these banks of SYSX submessages by pressing the Send All button in the SYSX View. Any names you give the banks will not be saved as part of the .MID file.
Read the Saving MIDI Files Containing System Exclusive Banks section of this document for more information.
Adding a Line to the TTSSEQ.INI File
You can modify the [Options] section of the TTSSEQ.INI file from the Windows Notepad, or from the Settings | Initialization Files section in Cakewalk. Every time you add or change a line in TTSSEQ.INI, you have to restart Cakewalk for the change to take effect.
This setting causes Cakewalk to delay SYSX transmission for a certain amount of time if it encounters an F7 in a System Exclusive bank. This gives some instruments a required amount of "breathing" time which is necessary to process the SYSX transmission. The default delay is 1/18 of a second, but can be changed by also adding the SysxSendDelayMsecs=n line.
n = 0 no delay
n = 1 delay between each SYSX string
This line was introduced in Cakewalk Professional for Windows version 2.01 and Cakewalk 5.0 for DOS. (Please note that there is no fix for Cakewalk 4.0 or earlier for DOS users, or for Cakewalk Pro for Windows v1.0 users.)
System Exclusive bytes are transmitted in packets, with a 1/18 second delay between each packet. Setting this value smaller will help slower synthesizers avoid overflowing their internal buffers. This line sets the number of bytes between each SYSX transmit delay.
n = 1024 Default value (in bytes)
This setting causes Cakewalk to delay <n> milliseconds if it encounters an F7 in a System Exclusive bank.
n = 60 Default value (in milliseconds)
When Cakewalk receives SYSX messages, it needs to set up buffers ahead of time, since the messages can be very fast and long. This line sets the number of buffers.
n = 128 Default value
This line sets the size to allocate to each SYSX receive buffer.
n = 512 Default value (in bytes)
You don't normally need to have the total buffer space be as large as the largest SYSX message you want to receive, because during SYSX receive, Cakewalk processes each buffer, saving its data and recycling the buffer for further use. But if you have a slower PC and the message arrives very fast, there may be no time to empty and recycle buffers, so you would have to set up enough space in advance for the whole message. Note that you may not have enough available system memory in your machine to actually allocate all the buffers you request.
Also note one final detail: A long SYSX message is often composed of many little SYSX messages, each starting with F0 and ending with F7. MME drivers, in order to promptly return completed SYSX messages, stop filling the current buffer when an F7 arrives and move on to the next buffer. This is why it is better to use many, smaller buffers rather than fewer, larger ones.
Adding a line to the CAKEWALK.INI File
You can modify the [Wincake] section of the WINCAKE.INI file from the Windows Notepad, or from the Tools | Initialization Files section in Cakewalk. Every time you add or change a line you have to restart Cakewalk for the change to take effect.
This line controls whether or not you are asked before System Exclusive Auto send banks are transmitted when a file is loaded. You may set this to n = 0 if you do not load files from other people and aren't concerned about uploading System Exclusive data that might modify your equipment's configuration.
n = 0 Disabled
n = 1 Enabled (default)
This is where Cakewalk looks for .SYX files when you select Load Bank and Save Bank in the SYSX View.
n = <pathname>
Cakewalk Is Not Receiving SYSX Messages
Make sure you have the right MIDI In port selected in the Tools | MIDI Devices section in Cakewalk. Also, make sure that your instrument is set up to transmit System Exclusive data. If you are using a Roland MPU-401 compatible card, try using the Twelve Tone Systems MPU-401 driver. Important: Be sure to Remove the Roland MPU-401 driver before you Add ours. If both drivers are installed, you will experience problems. The Twelve Tone Systems MPU-401 driver handles SYSX more efficiently than the Roland MPU-401 driver.
Please see the Cakewalk Professional Installation Guide for instructions on adding or removing drivers using the Drivers icon of the Windows Control Panel. Insert the Cakewalk Professional diskette in the drive when prompted.
If your MIDI interface is not Roland MPU-401 compatible, make sure you have the latest driver available for your interface.
SYSX Bank Names Don't Show When I Open a File
SYSX bank names are only saved in .WRK files (not in .MID files).
If you use the Save Bank button in the SYSX View, the data is saved as a standard MIDIEX format file. There are no provisions for MIDIEX to remember the bank names.
MIDI Error Messages from Instrument
Some synthesizers will report data errors when you try to send SYSX information to them. This usually happens when Cakewalk sends data at a rate too fast for the synthesizer to keep up. You can use the SYSXSendPacketSize=n setting in TTSSEQ.INI to make Cakewalk transmit SYSX data more slowly. Try setting <n> to 64. If that does not solve the problem, try successively smaller values. If 64 works, you may try larger values until it stops working; go back to the largest value that worked and you will have the fastest transmission rate that the problematic synthesizer can keep up with.
Cakewalk Doesn't Include a Dump Request Macro for My Instrument
If there is no DRM for your instrument, you should select <You start dump on instrument>, then initiate the SYSX dump from the instrument. Once the bytes received count stops increasing, click Done to tell Cakewalk to stop receiving. The currently selected bank now holds the received SYSX data.
You can also add a DRM for any unlisted instrument. For more information on how to do this, read the Dump Request Macros section of this document.
My Equipment Is Not Receiving SYSX from Cakewalk
Make sure the instrument is set up to receive System Exclusive messages. In the SYSX View, make sure the right destination port is selected. Was the SYSX message originally transmitted from the same kind of instrument? An instrument will not recognize SYSX messages from a different make or model of instrument.
Try adding the SYSXDelayAfterF7=n line to the TTSSEQ.INI file. If that doesn't help, you can experiment with the following lines:
Read the TTSSEQ.INI Parameters section of this document for a more detailed description of what each of these lines do.
Timing Requirements When Receiving SYSX
Some MIDI equipment have special timing requirements when receiving System Exclusive transmissions. If your equipment has problems receiving System Exclusive from Cakewalk, you might need to introduce some small delays to allow the equipment to digest the information it is receiving.
Two TTSSEQ.INI settings control the timing of System Exclusive transmissions.
SYSXDelayAfterF7 = <0 or 1> Default: 0
SysxSendDelayMsecs = <milliseconds> Default: 60
Earlier versions of Cakewalk have a SysxSendPacketSize (default = 1024 bytes) setting, which is the number of bytes sent before a delay is introduced. The delay was previously hardwired at 60 milliseconds. The new setting SysxSendDelayMsecs (default = 60 milliseconds) adjusts the length of the delay.
The new setting SYSXDelayAfterF7 (default = 0), causes Cakewalk to delay if it encounters an F7 in a System Exclusive bank. This delay amount is also controlled by the new setting SysxSendDelayMsecs.
Some devices have problems receiving System Exclusive sent from Cakewalk until you add this single line:
SysxDelayAfterF7 = 1
This gives the device extra time to process each System Exclusive message.
Most Ensoniq instruments have problems receiving SYSX from earlier versions of Cakewalk Professional. This problem was caused by Cakewalk's lack of required delays when transmitting certain types of SYSX dumps to Ensoniq equipment. (The SYSX messages affected were Sequencer dumps on all Ensoniq gear, and Preset dumps on KS/SQ family products.)
To fix the SYSX timing problem, the following 3 configuration lines must go in the [OPTIONS] section of TTSSEQ.INI:
SysxDelayAfterF7=1 Enables delay
SysxSendDelayMsecs=200 Sets delay time to 200 milliseconds
SysxSendPacketSize=65535 Increases packet size to 65k
Some Roland equipment will have problems receiving SYSX packets in fast succession.
You can use the new Cakewalk TTSSEQ.INI parameter described earlier in this document to allow breathing room between SYSX submessages (F0 to F7).
Roland GR-1 & GR-50
The GR-1 and GR-50 Guitar Synthesizers will have problems receiving SYSX from Cakewalk until you add the SysxDelayAfterF7=1 line to the TTSSEQ.INI file.