Working With Midi Type 1 In Ableton Live

Introduction #

This post will show how to export and use MIDI type 1 in Ableton Live by using the Microsoft GM Wavetable Synth as an example. Of course, this should also apply to any other setup using MIDI type 1. If you’re facing any issues or have anything interesting regarding using MIDI type 1, please drop me an email at emanuel0xb at gmail.com!

A few months ago, I joined Battle of the Bits (BotB). BotB was created back in 2005 by puke7. It offers digital art competitions with an RPG feel in the form of battles. There are battle types, such as one-hour, two-hour, four-hour, or even major battles that last over a month or more. In a battle, one can submit to one or more formats. A format refers to the file type of submission. Such a file type could be a MIDI file in a battle with the MIDI format or a file for the adlib sound chip in a battle with the adlib format. There are a lot of formats!

I particularly enjoy the MIDI format, in which you must submit a MIDI file that only uses the sounds of the Microsoft GS Wavetable Synth. The Microsoft GS Wavetable Synth is the default SoundFont on Microsoft Windows for MIDI data. If you play a MIDI file in Windows Media Player or if you ever hear a random piano sound on your computer and can’t find where it’s coming from, it’s probably all coming from the Microsoft GS Wavetable Synth.

Most people seem to dislike the Microsoft GS Wavetable Synth and find it useless. This is because it can be a bit glitchy sometimes and that not all sounds are very high quality. Nevertheless, some people like and use the Microsoft GS Wavetable Synth on a regular occasion for their music.

Standard MIDI files #

To create and export a song with more than just one track, we need to know more about MIDI files. There are three formats, which either contain a single track (format 0), include one or more simultaneous tracks (format 1), or contain one or more independent tracks (format 2). While MIDI files may have the same file extensions (*.mid, *.midi or *.smf), it’s impossible to tell which format a specific MIDI file is using without looking at byte data of the file with e.g., a HEX editor. In case you want to find the file type in a HEX editor, it’s always in the 9th and 10th byte.

HEX editor view of a MIDI file showing the 9th and 10th byte HEX editor view of a MIDI file showing the 9th and 10th byte, hence format 1.

If you’ve worked with MIDI files before, you’ve probably used format 0 (SMF0), which is the most popular and standard MIDI file format. The reasons are that SMF0 is widely supported, whereas support for format 1 (SMF1) is a lot less common, and support for format 2 (SMF2) is rare. Support for MIDI files in digital audio workstations (DAWs) is generally a given, although it’s common that SMF2 is not supported.

As you might have guessed, for a song with more than one track, we need SMF1. Various DAWs let you write music using MIDI using format 1 and the Microsoft GS Wavetable Synth on Windows, such as Fruity LSD or FL Studio. Even on a Mac, you can create music using the Microsoft GS Wavetable Synth by using the Apple DLS Music Device and the corresponding SoundFont. This comes in quite handy if you’re using Ableton Live like I’m using on my Mac. One shortcoming with Ableton Live is that even though it fully supports SMF0, it only has partial support for SMF1 and SMF2.

Ableton Live only supports imports and playback for SMF1 and SMF2, but sadly no export function for SMF1 and SMF2. This implies that although you’re able to write a song using the Microsoft GS Wavetable Synth, you won’t be able to export it as a MIDI file, but only as an audio file.

Using the MIDI Recorder #

To export MIDI type 1, I created a Max for Live Instrument called MIDI Recorder, which lets you record, export, and play MIDI type 0 and MIDI type 1. This will enable you to work with the Microsoft GM Wavetable Synth in Ableton Live, using its features such as MIDI effects and automation functionality while also being able to export it as a MIDI file.

Picture of the MIDI Recorder Max for Live Device The MIDI Recorder with the DLSMusicDevice loaded.

To use the MIDI Recorder, you’ll need to download the instrument and place it on an empty MIDI track. To get started, load a VST, VST3, or AudioUnit instrument by clicking the Instrument button. The MIDI Recorder will use this instrument to generate your audio output by processing the incoming MIDI data. To use the Microsoft GM Wavetable Synth, we’ll use a instrument such as the DLS Music Device, which will let us play the SoundFont. Of coursee you can use any other instrument that plays SoundFonts or works with MIDI.

Once we’ve created the MIDI track with the recorder for the Microsoft GM Wavetable Synth on it, we can create additional MIDI tracks, which we can feed into the recorder’s track. Note that the MIDI channel needs to have no audio effect on it. If it does, you won’t be able to do MIDI routing. Within the IO tab in Ableton Live, you can route the MIDI track in one of the 16 channels of the recorder track, where every channel except channel 10 (used for the drum kit) can be used for playing various instruments. To select an instrument, you’ll need to select the corresponding program number within the MIDI clip you’re using. If you don’t specify an instrument, it’ll by default use the piano. Note that Ableton Live will only send the program changes once you play the MIDI clip. Once you’ve done this for your channels, you can start writing your music.

Picture of an Ableton Live project using the MIDI Recorder Max for Live Device An example of an Ableton Live project with the routing setup using DLSMusicDevice.

After you’ve written your music, you can record it by pressing the Record button on the MIDI Recorder. Once the record button has been pressed, all incoming MIDI data will be recorded. This recording will be used to later export SMF1. Pressing the button again will stop the recording. Starting a new recording will overwrite the previous recording.

Once you’ve played and recorded your song, you can replay the song and check what you’ve recorded by pressing the Play button. To stop the playback, press the button again. If you’re happy with what you’ve done, export your recording by pressing the Export button. This will allow you to write a MIDI file containing your recording. Your exported MIDI file is MIDI type 0 and MIDI type 1 compatible, depending on how many channels you input, and will also directly work with the used instrument. That’s it; you’ve now successfully exported your music from Ableton Live as SMF1.