Cakewalk supports new guidelines for Standard MIDI Files.
Standard MIDI Files enable musicians to share their work with a large number of people. The compact size of MIDI music files makes them particularly useful for delivering music online, further popularizing this format.
A potential disadvantage of using MIDI Files is due to variations in sound reproduction hardware: The same song played on two different synthesizers rarely sounds exactly the same.
Another issue is that the Standard MIDI File specification leaves some details open to interpretation by software and hardware manufacturers.
To address these issues, companies such as Roland, Yamaha, and Tune 1000 have cooperated to establish (1) specifications for sound generation hardware and (2) authoring guidelines for song publishers who wish to take advantage of the added features of newer synthesizers and karaoke players. These specifications provide common methods for selecting instrument sounds and for configuring effects such as reverb and chorus, regardless of the sound module being used. The authoring guidelines also help song writers to avoid problems caused by MIDI messages that occur too close together or in the wrong order.
Versions 4.5/5.0 and later of Cakewalk include support for the GM Score Production guidelines published by Roland Corporation. This specification provides important benefits by helping to standardize the MIDI file format for universal compatibility.
Special Handling of GM, GS, and XG MIDI Files
General MIDI compatibility of a song file is indicated by the presence of a special System Exclusive message at the beginning of the song. When Cakewalk finds a GM, GS or XG reset message, it assumes that you would like to work within the GM Score Production guidelines. This causes Cakewalk to use special timing for program change information when writing MIDI Files, and allows it to search more aggressively for track parameters when reading MIDI files. The result is that it is easier than ever to create and use General MIDI song files with Cakewalk.
Cakewalk does not enforce or even verify compliance with the GM guidelines for your music data. But Cakewalk does comply with them when generating events that represent track parameters. If necessary, Cakewalk will insert blank "setup measures" at the start of your song. This makes space for certain events to be inserted at the correct times at the start of each track: bank changes, patch changes, volume, and pan. This means that you can use Cakewalk's track parameters for these settings when composing songs: When you save as a MIDI File, Cakewalk will place these events in the track at the specific clock ticks recommended by the guidelines.
You can tell Cakewalk to follow the GM guidelines by loading the "Turn GM System On" sysx bank in the Sysx View (GMSYSTEM.SYX in your Cakewalk directory), and then either inserting a sysx event at time 1:1:0 or using the "Auto" setting for that bank.
When loading a GM file, each track's bank, patch, volume and pan parameters are lifted from the data stream and placed in Cakewalk's Track view for you to see and edit onscreen. The GM mode ensures that all patches, banks and controllers are placed at specified times throughout a setup measure when you save a .MID file. This ensures that all setup information can be digested by your synthesizer before it starts playback. If you don't have a setup measure in your song, Cakewalk will insert one for you.
If there is no GM, GS, or XG reset System Exclusive message present at the start of your song, Cakewalk will not operate in this GM mode.
If You Have Problems Playing MIDI Files
There is one case where you can run into trouble when loading .MID files using Cakewalk. Some users put all patches, banks and/or controllers in one track, but put the related note events in another track. This practice usually has no side effects. However, when Cakewalk is loading a GM-compatible Standard MIDI Format 1 file with tracks like these, it sometimes decides to "optimize" the program changes, causing incorrect selection of synthesizer voices during playback. [The GM, GS, and XG specifications all recommend the use of Standard MIDI Format 0 for distribution of music data, which will usually make this problem irrelevant.]
If you encounter this problem, you may need to re-select your instruments once the file is open in Cakewalk. Save it from there and it will be fine.
If You Plan To Publish Your Songs
A whole new industry of electronic music publishers is thriving. Also, more musicians are uploading their original songs to online services for free download. If you plan to publish your own songs, we encourage you to follow the General MIDI authoring guidelines.
The GM guidelines are quite detailed about the exact layout of many types of song data, and a complete discussion of them is beyond the scope of this document. However, Cakewalk can help you to conform with the GM guidelines if you follow these practices:
- Always save your master copy of any "works in progress" in Cakewalk's "Normal" (.WRK) file format. Use File | Save As to create a copy as a Standard MIDI Format 0 (.MID) file, only as a final production step. The "Normal" .WRK format most completely preserves all of Cakewalk's internal data for your song. (You can think of the .WRK file as the master tape, and the .MID file as the pressed CD.)
- All of the major publishing guidelines recommend that you use Standard MIDI File Format 0 (all channels of music data are mixed to a single track) instead of Format 1 (many separate tracks). Some sequencers cannot read the more complex Format 1 files, particularly sequencers embedded in some music hardware like karaoke players.
- Load the "Turn GM System On" system exclusive bank (GMSYSTEM.SYX in your Cakewalk directory) in the Sysx View, and set the bank to "Auto Send". This message will not only re-initialize a General MIDI compatible sound module to a known state, but will also tell Cakewalk to generate GM setup measures for your program changes when you save the song in Standard MIDI Format.
- For best results, you should always place program changes and other MIDI messages in the same tracks as the notes they affect. This keeps the data for each track together as a single unit, and avoids problems that might occur when Cakewalk cannot easily correlate the program changes with the note events.