Saturday, August 22, 2015

Playing General MIDI Files on Ableton Live Part 1: Getting Started

Ableton Live doesn't natively support the General MIDI standard, but with the right tools and techniques you can use it to load and play GM files the way they were meant to be heard.

This multi-part series describes how Live handles MIDI files and covers some applications and instruments that will help you make the thousands of free General MIDI files available on the Internet work inside Live. But before we get started, let's settle on some terminology.


Here are some important definitions:
  • MIDI is the Musical Instrument Digital Interface standard that defines a way for instruments by different manufacturers to communicate with one another, and with computers. The MIDI standard includes the protocol that instruments use to communicate, the physical connectors on MIDI instruments and devices, and how MIDI information is stored. Instead of streaming audio like the AU or VST standards, MIDI defines a number of MIDI events that instruct instruments what to do. Common MIDI events are note on/off, program change (patch selection), and CC (continuous controller) messages for things like pitch bend, stereo panning, or instrument volume.
  • Standard MIDI Files (SMFs) are files that contain MIDI data. Basically, whatever can travel down a MIDI cable can be stored in a Standard MIDI file, including not just note and program change data, but even proprietary SysEx data (like patch banks and firmware updates). One slightly confusing thing about Standard MIDI Files is that despite the SMF acronym, the files usually have a .MID filename extension. There are different kinds of Standard MIDI files:
    • Type 0 files contain a single data segment that includes the entire contents of the file. If the file contains a multitimbral song with parts intended for multiple MIDI channels, all of this data is jumbled together in the same data segment, and it's up to the sequencer or instrument loading the file to route events to the right channels during playback. These are the most common kind of MIDI file, and the most widely supported.
    • Type 1 files can include multiple "tracks" which are most commonly used to contain separate musical parts meant for different MIDI channels. The order of these tracks in the file does not necessarily correspond to the MIDI channels of the data they contain (so, track 1 might have notes meant for MIDI channel 10). Tracks can also be named, which many composers use to describe the musical role of each particular track.
    • Type 2 files are described by the MIDI standard, but they never caught on. (In fact I don't think I've ever seen one.) Type 2 files can contain multiple Type 1-style songs; kind of like a self-contained MIDI playlist. Since these files are so rare there are almost no tools available that support them.
  • General MIDI (GM) is a high-level standard that defines a common set of sounds, effects, and features that guarantee that a song composed for one GM-compatible instrument will sound more or less the same when played on another GM-compatible instrument, even if it was made by another manufacturer. Instruments that are certified to support General MIDI generally have a special logo indicating what level of General MIDI they support. There are different flavors of the general MIDI standard. The two most common are:
    • General MIDI 1 (GM1 or just GM) was inspired by the patch bank and drum layout of the Roland MT-32 multitimbral desktop sound module. While the MT-32 only supported 9 simultaneous MIDI channels (8 chromatic parts and 1 drum channel), the GM standard expanded the requirement to support 16 simultaneous MIDI channels. GM1 devices must also have on-board Chorus and Reverb effects and support a certain set of MIDI events and CC messages. GM1 is the most widely supported form of General MIDI.
    • General MIDI 2 (GM2) expands the required set of sounds and control messages, offering more variety and control in MIDI compositions.
  • And that leads us to General MIDI files, which are standard MIDI files that contain songs that conform to the General MIDI standard. All GM files are SMFs, but not all SMFs are GM files.


Many folks in synth and music production circles consider the term "General MIDI" a synonym for "cheap" or "cheesy," and that association is sometimes warranted. While I grant that very few devices with a "GM" logo on them were ever at the cutting edge of synthesizer technology, I think the core idea of General MIDI- the ability to write a song for one MIDI instrument that plays more or less the same on a different MIDI instrument regardless of the device's manufacturer- has true merit.

As an original owner of a Roland MT-32 (and its big brother, the D-110), I've grown so familiar with the GM sound set that I actually use it when I'm tracking out my own song projects. This way I spend almost no time programming patches or browsing presets; I just dial in basic sounds for the musical part I'm working on so I can get my performance down. Once all my MIDI is tracked out, I'll (usually) replace the GM patches with more suitable, customized sounds.

Another nice thing about GM files is they can be a good resource for new composers and producers, who want to look at how the MIDI tracks are laid out, what kind of controllers the original composers used to give their songs more life. You can examine both the musical structure and actual MIDI implementation/execution of a finished song.


Live has some unique ways of handling MIDI that present challenges when it comes to working with GM files. Here's a quick rundown of Live's MIDI capabilities and limitations.
  • Live can import Type 0 and Type 1 MIDI files, but it can only export Type 0 files (via the Export MIDI Clip feature).
  • If you import a Type 0 file into Live, it will only appear as a single MIDI clip on a single Live track, even if the original file contained multiple musical parts intended for different MIDI channels. MIDI clips in Live can only play on a single MIDI channel, meaning that Type 0 files almost never play properly when loaded into Live.
  • If you import a Type 1 file, though, Live creates separate MIDI clips on separate tracks for each virtual track in the imported file.
  • Live 9 mysteriously lacks some nice features that Live 8 has when it comes to browsing and previewing MIDI files. In the Live 8 browser, Type 0 files expand to reveal a node named after the composition the file contains (assuming the person who created the file included a name). With type 1 files, the node expands to reveal separate lanes for each track in the file, which you can preview and import one-at-a-time.
    Browsing MIDI files in Live 8.
    Strangely, in the Live 9 browser, nodes for MIDI files are not expandable, so there is neither any information about the contents of the file, but you also can't preview or import separate tracks from a Type 1 file like you can in Live 8.
    Browsing the same MIDI files in Live 9.
  • When you preview a General MIDI file in the Live browser, it usually sounds terrible, since Live just uses a single simple tone for every part, even if the song includes many parts for different instruments. This is especially noticeable in songs with percussion parts, since Live employs a chromatic tone for all the different drum hits. Don't worry when your General MIDI files sound terrible in the Live browser!
    Live's browser preview for MIDI files uses the same tone for all parts in the song.
  • Unlike most other DAWs, Live discards or ignores certain kinds of MIDI data when you import MIDI clips. Program change and System Exclusive (SysEx) events are among the kinds of MIDI messages that Live discards. If the GM file you're importing contains program changes (patch selections) at the very beginning of the song, Live will attempt to set the MIDI Program Change property of the MIDI clips it creates when you first import the file. Any program changes that occur over the course of the song are completely lost, however.
  • Live generally preserves controller (CC) data in MIDI files, so things like volume, pan, and pitch bend tend to work as intended when imported. You can view and edit this controller information in the Envelopes panel of the selected clip.
  • Importing MIDI files in Live is quite simple. Just drag your file from the Live browser into Arrangement or Session view. If it's a Type 1 file, Live creates a different MIDI clip for each "track" inside the file, and will attempt to set the Program Change property of each MIDI clip to the first tone used on that track. Live adds additional MIDI tracks to your project if there are more tracks in the file than there are in the project.
  • Note that when you do import a MIDI file into Live, Live will not attempt to actually load any instruments or set MIDI channels on any new tracks it creates in your project. That's all up to you, and we'll cover how to do that stuff in the following posts.
All right, so now you know all about how Live handles MIDI files. Next we'll talk about how to get your MIDI files ready for a smooth import into Live.


In order to get your General MIDI files to play properly in Live, you'll need to use some external software to inspect and possibly convert the file. I have only found a couple of tools that do everything I need. Here they are:

 MidiYodi (by Canato)

  • Description: This is a multi-platform tool for examining, editing, and playing MIDI files. It's a Java application, and you need to already have version 1.7 or later of the Java Runtime installed for it to run, but it has a very usable and detailed user interface.
  • Platform: Mac, OS, Windows
  • Price: Free to download and try, $14.95 USD for a licensed version. (License is required for certain features, like converting Type 0 files to Type 1.)
  • Notes: This is a great tool, and the licensed version does everything we'll need for the purposes of this tutorial.
  • Download here.

MIDI Utility Pack (by KBD-Infinity)

  • Description: This is a collection of six different MIDI tools, but two in particular are useful for getting General MIDI files ready for Live. MIDI Microsope is a MIDI event viewer you can use to inspect MIDI files down to the byte level, and MIDI Typer converts between Type 0 and Type 1 MIDI files.
  • Platform: Windows
  • Price: Free to download and try, $19.95 USD for a licensed version. (The license is required to unlock features in the various tools, most importantly the ability to convert Type 0 files to Type 1.)
  • Notes: Functionality-wise, this is a veritable tool chest for anyone who works with MIDI files. The user interface seems to be geared toward more advanced users, especially the fact that the MIDI Microscope displays most values in hexadecimal format, and doesn't represent compound values (such as Channel/Program bytes) as separate values.
  • Download here.

Any others?

If you know of any tools that would be useful for any of the stuff covered in this series, please leave a note in the comments! Since MidiYodi is cross-platform and so easy to use, I chose it for the screenshots in the next part of the tutorial.


Two things we need to do before attempting to bring our MIDI files into Live are making sure we've got Type 1 files and determining which tones the composition calls for.


First let's figure out what type of files we're dealing with, and convert them if necessary.
  1. Launch MidiYodi go to File > File Explorer.
  2. Use the navigation controls in the File Explorer to browse to a folder containing your MIDI files. In the lower pane of the window, you'll see many details about the MIDI files located in the current folder, including the file type.
  3. If the file you plan to use is Type 0, double-click it to load it into MidiYodi. If MidiYodi asks if you want to separate the channels onto different tracks, click Yes. (If it's a type 0 file, but MidiYodi doesn't ask, it probably means the file only contained a single track/channel anyway.)
  4. Close the File Explorer dialog and go to File > Save As. Enter the name of the file you would like to save, and make sure to select Type 1 under MIDI file type before clicking Save.


As mentioned before, Live will make an attempt at setting the correct Program Change values of your MIDI clips when you drag your MIDI file into your project, but this doesn't always work, and some MIDI files select different patches during the course of a song, and you will only be able to determine that this happens by examining the file outside of Live. This is easy to do in MidiYodi.
  1. Go to File > File Explorer to locate and load your MIDI file. If MidiYodi asks if you want to separate the channels onto different tracks, click Yes. (This means it's a type 0 file with data for multiple MIDI channels.)
  2. In the MidiYodi main window, each MIDI track appears on a different row. The track's name (if it has one) appears above the patch/tone name for each part. (Note that the number that appears before the track name does not necessarily correspond to the actual MIDI channel used on that track.) Each tone name listed also includes a numerical value- these are the actual MIDI Program Change numbers used in the song.

    Note that the program change numbers that you see in the Main Window are only the first ones used for each track. If the song you loaded contains program changes that occur during the song, they will not appear on this screen, even as the song plays.

    In the MIDI standard, program change values are the same as they are represented in MidiYodi- from 0 to 127. In Ableton Live, program change values range from 1 to 128. So when setting the program change properties on your MIDI clips in Live, just add 1 to whatever value MidiYodi reports.
  3. To see if there are any "hidden" program change events in your song, you need to inspect the tracks individually. In the MidiYodi main window, select the track you'd like to inspect and then go to Window > Event Examiner. This opens a list of all MIDI events on that track. Program Change messages appear in blue. Scroll through the list to look for any other changes, and take note of the program change number, as well as where it occurs in the song.
    MidiYodi highlights program change numbers in blue.


Since Live doesn't include any multi-timbral instruments that respond to program change events or include a General MIDI sound set, we'll have to use third-party GM-compatible plugins or hardware instruments.


In the early days of VSTs there used to be a number of software instruments with General MIDI support. Two notable such products were Native Instruments Bandstand and Roland's Virtual Sound Canvas. These days, true GM-compatible virtual instruments on PC and Mac are quite rare- especially if you're looking for something with native 64-bit support. Here are some options I've tried.

Full GM support (GM sound set, multi-timbral, respond to program change events):
  • HALion 5 and HALion Sonic 2 (by Steinberg) are the only fully GM-compatible plugins I know of that have both 32-bit and 64-bit support on both Mac and PC.
  • Purity (by Sonic Cat) is a nice-sounding multi-timbral synth with full GM capabilities. It is much less expensive than the Steinberg products, but it is also 32-bit only on both Mac and PC.
  • Sound Canvas VA (Roland)  - Roland released this instrument about a year after I first wrote this post. It is almost the perfect GM plugin. It's got 32-bit/64-bit support, and works on Mac or Windows. It has the entire sound libraries of Roland's various Sound Canvas synthesizers, and is 16-part multitimbral. My only complaint is that although it's multitimbral, it lacks multi-out support. In other words, if you want to process each MIDI part as a separate audio channel in your DAW you have to use multiple Sound Canvas VA instances (one per track) instead of using just a single instance and routing separate MIDI tracks to it. But you can't beat this plugin's sound sets. The Sound Canvas line was the benchmark for General MIDI sound. I'm not going to write instructions for this one like I did for HALion and Purity, but in practice it's more like using the Purity plugin, so you can probably refer to those instructions to figure out how to get Sound Canvas VA working right inside of Live.
Limited GM support:
  • Jeskola XS-1 is a free multi-timbral Sound Font player that you can use with GM sound fonts. It is a Windows-only 32-bit plugin, but it works and it's free. I have used it successfully with both the Arachno SoundFont and the Merlin GM v32 SoundFont. XS-1 doesn't respond to program change events, so you have to load your SoundFonts and patches individually for each channel.
  • UVI Workstation with PlugSound Pro. UVI Workstation is a powerful, free multi-timbral synth for Windows and Mac, available in both 32-bit and 64-bit flavors, and UVI sells a sample library called PlugSound Pro that includes a full GM1 sound set. This doesn't really qualify as fully GM compatible, since UVI Workstation doesn't respond to program change messages (you have to manually select the individual patches for each part in your DAW project), but if you know what patches to use and you happen to pick up PlugSound Pro during one of UVI's frequent sales, this can be a fine option.
  • SampleTank with OmniSynth 2. This is confusing as heck, so bear with me: Sonic Reality's OmniSynth 2 library for SampleTank 2 includes a General MIDI sound set, and there are instructions on the Internet for setting up SampleTank 2 to respond to program change events, making the SampleTank + OmniSynth combo a fully GM-compatible instrument. This worked with both the full commercial SampleTank product and SampleTank Free. The two gotchas here are that SampleTank 2 is 32-bit only and it is also no longer available (free or otherwise) unless you already have a license for it in your IK Multimedia account. With the current version of SampleTank, things have changed. The new free version, SampleTank Custom Shop, does not load any libraries for previous SampleTank versions, so it won't work with OmniSynth. The full commercial version of SampleTank 3 will load all SampleTank-compatible libraries (including OmniSynth 2), however SampleTank 3 doesn't let you configure how it responds to program change messages, meaning it's no longer fully GM-compatible. SampleTank 3 is also 64-bit only... one of very few products I know of with no 32-bit version.


These days it's actually easier (and sometimes even cheaper) to find a GM-compatible hardware synth or sound module than it is to find viable plugin solutions. What follows are just a few options.

  • Roland Sound Canvas. Being the General MIDI standard-bearer, Roland has released more General MIDI compatible instruments than any other vendor, and a lot of them are extremely affordable on eBay and other places where you can get used gear. Specifically, Roland released several dozen different models in their Sound Canvas series, almost all of which can be found for good prices online.
  • Roland JV-1080. This is a popular rack sound module from the late 90s that is fully GM compliant, with lots of other tricks up its sleeve.
  • Yamaha MU Series. Similar to Roland, Yamaha had its own line of affordable sound modules, known as the MU series. All of these devices had full GM support, but some of the later models supported different MIDI standards as well.
  • Roland INTEGRA-7. This may be the best rack sound module ever built. It has thousands of sounds and not one, but two GM sound banks. One is a special "HQ" version with sounds that are only available on the INTEGRA-7.
  • Roland FA-06 and FA-08. These are Roland's current top-of-the-line workstation keyboards. They have a selection of sounds from the INTEGRA-7 library and a serviceable GM bank. (This is not the same as the HQ bank from the INTEGRA-7.)
  • Roland SD-50 Studio Canvas. This is a spiritual successor to the Sound Canvas series, with full GM2 support and a built-in USB audio interface.
  • Yamaha offers a number of workstation keyboards with General MIDI banks, including the Motif and MOXF lines.
  • Most of Kurzweil's "Pro Keyboards" line include General MIDI banks as well.


Now that we've covered all of the basics, it's time to actually load some MIDI files into Ableton Live. Below you can find my step-by-step guides for using the following synths to play General MIDI files in Live:


Unknown said...

Thanks for your great series of articles on this.
I have been trying to work my head around these concepts and you have helped me to understand things a little better.
I just tried loading up the "Free" SampleTank 3 Custom Shop version and was able to import Omnisynth II from Esoundz. They had it on sale for $5 so I thought I would give it a shot.

I was able to import the Omnisynth library into the free version of SampleTank 3 and have been working with it using my test project. I am looking for a sort of self contained package for users with Live to be able to playback my projects without having to much to set up if they do not already have an external module. I am trying it both ways using the Software instruments as well as my Roland XP-50 which I really love.

Thanks again,

Ultimate Outsider said...

@Simeon - Thanks for the heads-up about Omnisynth. When the SampleTank Custom Shop came out I was told explicitly that Omnisynth wouldn't be supported, but it sounds like the person who told me that had incorrect information. Might be worth a shot if I can still find it for $5.

Simeon said...

Just did a short video demonstrating SampleTank3 Custom Shop within Ableton Live 9. I set it up on both my MacBook Pro and my Windows 10 PC and was able to move the project back and forth between the two machines and the live set played back fine. Thanks again for your blog. You can watch the video here:


Ultimate Outsider said...

I enjoyed the video. Thanks for the tip about putting the lyrics in your Live set!

Christoph said...

Thanks, this was super helpful!

Matt Black said...

thanks for the help . this article put me on another track as I didnt fancy paying $125 for Roland and Im on the Mac.:

basically Apple provide a built in sampler AudioUnit called DLSMusicDevice, and this can use the built in QuickTime Instruments. It can also easily load .sf2 GM banks, some are listed here