Apr 03

DLS and General Midi Part one, GarageBand’s Best Kept Secrets.

This week I’m starting to tackle a little more complex subject than usual.
I’m working on a soon to be released Cell phone game (or as it’s known in the industry, a mobile entertainment project) and due to the paltry memory of some cell phones the music has to be delivered as a General MIDI file. No, General MIDI isn’t a French military officer; it’s the file format that we’ve come to know and hate from the animated Gif School of web design. The trouble with this project is that the original soundtrack was created in GarageBand. And I need to deliver a MIDI version of the thing. The reason is that as a WAV file the 30-second intro song would be well over 200K even at 8KHZ 16bit Mono. Whereas, the Midi file will be a modest 8K in size.

So the problem (challenge in suit speak) is to export MIDI from GarageBand. Impossible you say, “Everyone knows that GB can’t export MIDI.” Au Contraire, Mon fere!

Doable, yes. Easy Not so much. In fact this process involves at least three separate pieces of software. The first is an innocuous Audio Unit that’s included with GB called the DLS Music Device. The second is a freeware utility called MidiO (for Midi out) and the third is a MIDI sequencer like the relatively unknown shareware product, Easy Beat or a commercial product like Trackion, cubase or Logic Express.

First let’s attack composing for General MIDI in GB. A few of us already know that there are 126 General MIDI software instruments hidden within QuickTime. What if you could use them in GB? Well you can! I’ll try to make this as brief as possible so pay attention. If you open the Track info window for a software instrument in GB, you can scroll down the list of generators to the DLS Music Device. And if you click on the pencil icon for that device, it’ll bring up the interface for the DLS Device, such that it is.

Once there you will find a Sound bank menu that has a pull down menu that should say QuickTime Music Synthesizer by default. You may have some other items in this menu, if you have by chance come across some Sound Fonts in your travels, but I’ll get to these in a minute.

Right now let’s concentrate on the QuickTime Music Synthesizer (sounds sexy, doesn’t it?) If you were to play your MIDI controller at this point you would hear an acoustic Grand Piano. One that quite frankly sounds much worse than GB’s default Piano Software Instrument, but wait there’s more! The secret lies in your Midi controller’s program change command. Uh oh I hear brains frying. If you have a MIDI keyboard that’s worth any thing there is some way for you to do MIDI program changes. Which means you can change the Quicktime Music Synthesizer from its default piano sound to say something like a trumpet, which is sorely missed in the standard GB software instruments.

Read your keyboard’s documentation to see if your keyboard has a Program Change control. If it does your in luck. To overcome GarageBand’s glaring omission of a trumpet instrument, all we have to do is set our Program Change number to Number 57 and viola! Trumpet.

This seems to be an answer to many a GarageBand prayer. But wait because there is still evil afoot. If you record your newfound trumpet in GarageBand and then save the song you might be in for a surprise when you reopen the song. Your beloved trumpet has turned back into a piano. Bummer Dude!

Here is probably the coolest GB trick I Know. When you record your trumpet, hit a quick note at the beginning of your track and then do your Program Change as GarageBand is recording the track, this way the Program Change command is recorded in the Software Instrument track and will be there when you reopen the song. It is magic, No?

If you take it even further, you can record several Program Changes on a track. So not only could you have the number 57 trumpet but also the number 60 muted trumpet on the same track!

To find the program change numbers for all 128 General Midi instruments, Just Google General Midi Instruments and you’ll have a bunch of list to choose from.

While we have the track Info window open you might want to save a Software Instrument Called “DLS Device.” Make sure that you have the DLSMusicDevice selected in the Generator pull-down menu of the Track Info window.

Click Save Instrument button and save the instrument as “DLS Device.” And now you have an additional 127 software instruments for use in GB. Cool or what?

Okay, Okay I’m running out of time here, but there’s one more really cool thing about the DLSMusic Device. The DLSMusic device also plays Sound Fonts. What are Sound Fonts? Try Thousands, yes, thousands, of FREE downloadable software instruments. Whoa dude! Just search Sound fonts on the Web and you’ll come across more sounds than you can download in a lifetime. Take any of these .SF2 file and throw them into your Library> Audio>Sounds> Banks folder and they will be available to the DLSMusic device for use in GB. That ought to keep you busy for a while! Or at least until next week when I show you how to export MIDI files.

DLS and General Midi Part two, GarageBand’s Best Kept Secrets.

Last week I introduced you to the DLSMusicDevice which allows you to compose General MIDI songs within GarageBand. In part two of this series I’ll show you how to export your General MIDI compositions from GarageBand.

GarageBand is a powerful program but one of its most glaring faults is that it only allows you to export your music to iTunes. If you want to export a tune that you’ve composed using software instruments or the DLSMusicDevise you options are limited. The first and easiest method is to buy Logic Express and import your GarageBand composition into Logic express and then export a MIDI file from Logic Express. Of course if you have Logic Express it raises the question as to why you would compose in GarageBand instead of its big brother. For me, it’s a matter of simplicity. I like to sketch out my ideas using GarageBand as a “quick and dirty” tool then export the tune for polishing in a more sophisticated program. But I digress.

The second, and somewhat harder method of exporting MIDI from GarageBand involves the use of an Audio Unit plug-in called MidiO. MidiO is a freeware utility from RetroWare and can be downloaded from: http://home.comcast.net/~retroware/. Don’t worry I’ll post the link in the Noise section of MacAudioGuy.com. This plug-in will allow you to export a garageBand Software Instrument track as a MIDI stream. What this means is that you can only export one track at a time and you will have to a have some form of MIDI sequencer in order to record the MIDI stream. Kludgy? Sure, but you get what you pay for. So in order to use MidiO, you have to have some sort of MIDI Sequencer program. I like a cool shareware program called EasyBeat. Which is available from: http://www.macility.com/ . The next step is to set the generator of the track that you wish to export from GarageBand to MidiO.. Also set the MIDI output to MDI Virtual source in the edit window. Make sure that no tracks in GarageBand are set to record ready, because you’re likely to create a MIDI feedback loop. It’s far too easy to create a MIDI feedback loop with MidiO so be very careful. Next set EasyBeat or your MIDI Sequencer to use the MidiO as a MIDI Source and then set the sequencer to record. Once the MIDI sequencer is recording then hit play in GarageBand. If you’re lucky and did every thing right you should now be recording MIDI from GarageBand. Once you’ve recorded the stream, you’ll have to repeat the process for each track you want export and then you will have to offset the tracks so that they all start at measure one in your MIDI Sequencer. This process sounds more difficult than it is, but after a couple of tries, you’ll find it becomes at least tolerable.

Okay so now you’ve exported your software instrument tracks from GarageBand and have them as MIDI tracks in your sequencer. How do we turn them into a General MIDI file? The good news is that most sequencers make this fairly simple. In the case of Easy Beat, all you have to do is set the tracks instrument to an appropriate General MIDI instrument, and then after you have set all the instruments, export a MIDI file. And again if you’re lucky you will have a General MIDI file of your song.

Exporting MIDI from GarageBand is much more difficult than it should be, but now you know that it is possible, if your willing to jump through a few hoops.

written by macaudioguy

One Ping to “MIDI and GarageBand”

  1. Garageband and MIDI – 4 things you should know » Online Recital - thoughts on music making and music technology Says:

    [...] http://macaudioguy.com/midi-and-garageband/ [...]

9 Responses to “MIDI and GarageBand”

  1. 1. lisa Says:


  2. 2. Matty Says:


    cheers for this, it’s been a great help. Trying to export midi from GB into Ableton Live so my keyboardist can stay at home without me going round to pester her for more tunes. The only problem is I can’t stop getting midi feedback loops. I think the problem maybe that I’m using GB 1.1.0 and there is no record enabled, so the midi track is always armed, so to speak. Does that sound feasible?

    many thanks,


  3. 3. matty Says:

    further to my above post. yes you do have to have a newer version of garageband. The older versions don’t allow you to arm and disarm tracks, they are just always on. Mine now works a charm.

    cheers macaudioguy.


  4. 4. raoul Says:

    Hey Great little tutorial!
    seems like one of a kind.
    I just figured out a way to record a number of tracks all at the same time using your method. You need to use ableton live though. midi0 lets you output each track on a different midi channel.. and abletonlets you arm multiple tracks and each record on a different midi track.. oila!
    thanks heaps

  5. 5. Justin Says:

    There is a much simpler, albeit more expensive way. Apple Logic Studio opens garageband files and then they can be exported as midi.

  6. 6. scooter Says:

    Im very new at all this. I want to play my Garage Band compositions live
    through a sound system so my band can play live with it and i want garage band
    to be able to trigger our drummers yamaha click station so he can use it to
    sync with the timing of the garage band track. Can this be done and how?

  7. 7. Blah! Says:

    No MIDI export in GarageBand = EPIC FAIL.
    Locking us in to buy Logic.
    Thanks a lot Microsoft… I mean Apple.

    OK, maybe that’s mean. Maybe I’m not being fair. Maybe they omitted it out of carelessness, not an attempt at dominating GB users. But I mean, look at how much time was spent on making the interface pretty. It’s hard to imagine that MIDI export never came up in conversation among the developers.

    As MIDI export is a feature included in every DAW ever made except maybe ReBirth (if you can call that a DAW), I think it’s reasonable to expect that when you open up a program and begin creating music in it using MIDI (the standard of all standards) that you will be able to save your MIDI data and move it around from one piece of software to the next. After all, it’s your data and you have a right to access it!

    Well I have Logic, so in my case it’s no big deal. And still this upsets me. I was mighty shocked to Google “garageband midi export” and find it can’t be done (without an elaborate hack at least). I just happened to get lucky by owning Logic Express… (Please don’t ask why I bothered making anything in GB when I have Logic.)

    Do I sound crazy? Irrational? Il-Logic-al?
    OK, I need to calm down and get back to composing…

  8. 8. Blah! Says:

    Hey guess what… I’m not really bothered by this anymore.

    Because I thought of another hack that is less steps and requires no MIDI hardware. It’s more of a “life hack” though:

    Walk into an Apple store.
    Find a Mac with Logic installed.
    Discreetly open your GarageBand file in Logic.
    Export the MIDI from Logic.
    Email the MIDI file to yourself.


  9. 9. Garrett Toren Says:

    OK so I can’t use Garagedoor to work with the MIDI tracks coming out of my Roland GW-8. But all I need to do is a few simple cut and pastes, to make three verse hymns for our church from the two verses that an organist played into it. Does anyone know of a simple program that will let me do a few simple things with MIDI ‘s and get them back into my keyboard? I use an SD reader in the USB port. Thanks, Garrett Toren garretttor@yahoo.com