I often need to convert a bunch of MIDI files to MP3 for teaching and lecturing. There are a few commercial graphical apps for the Mac and you can even use Garageband, but I always wanted to be able to convert MIDI files using the command line since it’s easier and I can automate the whole process. On the Mac we can use Timidity++ or Fluidsynth, both available using homebrew.

Fluidsynth

The easiest way to generate a MP3 from a MIDI on the Mac is by using fluidsynth. You can install it easily with homebrew:

brew install libsndfile lame
brew install --with-libsndfile fluidsynth

If everything is working properly, when you run fluidsynth -T help you should see something like the following:

kroger@orestes $ fluidsynth -T help
FluidSynth version 1.1.6
Copyright (C) 2000-2012 Peter Hanappe and others.
Distributed under the LGPL license.
SoundFont(R) is a registered trademark of E-mu Systems, Inc.

-T options (audio file type):
'aiff','au','auto','avr','caf','htk','iff','mat','mpc','paf','pvf','raw','rf64','sd2','sds','sf','voc','w64','wav','wve','xi'

auto: Determine type from file name extension, defaults to "wav"

With fluidsynth working, the conversion is simple. Just pass a SoundFont and a MIDI file as parameters and you should be good to go:

fluidsynth -F output.wav ~/Soundfonts/my-soundfont.sf2 myfile.midi
lame output.wav

If you are lazy, check this bash script. It accepts multiple MIDI files and removes the intermediate WAV file.

Timidity++

Timidity++ is my go to program to convert midi files to wav. To install just use homebrew:

brew install timidity

You may need to create a configuration file at /usr/local/Cellar/timidity/2.14.0/share/timidity/timidity.cfg and list where your SoundFonts are. For instance, in my timidity.cfg file I have:

soundfont /Users/kroger/Dropbox/Sfonts/Steinway-Grand-Piano1.2.sf2

You can read more about the configuration format by using its man page: man timidity.cfg.

There you go. We have two ways to convert MIDI files to MP3 on the Mac using free software.