How to MID to WAV
Posted: Wed Feb 02, 2011 11:26 am
I saw in the request thread a request for this. I've done this in the past with timidity, so it can be done. It can also be done with fluidsynth. I created a short bash script for the fluidsynth way because I hate remembering complex command lines. Here's what my script does in it's ugly form.
And that's basically it. The timidity way is a much shorter command line, which you can fairly easily derive from it's help/man pages. But timidity .pat files can sound quite hideous. Feel free to add to this any other ways for the same deal.
The script looks like this, with the option of 1 parm for the input .MID file. Or two parms for the soundfont and .MID as the 2nd parm.
Code: Select all
$ fluidsynth -C no -R no -n -i -L 2 -r 48000 \
-a file -o audio.file.name="temp.RAW" \
/usr/share/sounds/sf2/FluidR3_GM.sf2 \
/home/user/file.MID
$ sox -s -2 -c 2 -r 48000 temp.RAW \
-s -2 -c 2 -r 48000 temp.WAV
The script looks like this, with the option of 1 parm for the input .MID file. Or two parms for the soundfont and .MID as the 2nd parm.
Code: Select all
#!/bin/sh
if [ ! $1 ]; then
echo "USAGE: fs2wave file.mid"
exit 0
fi
FILE_RAW="temp_test.raw"
FILE_WAV="temp_test.wav"
MIDI_INPUT=$1
SOUNDFONT="/usr/share/sounds/sf2/FluidR3_GM.sf2"
if [ $2 ]; then
SOUNDFONT=$1
MIDI_INPUT=$2
fi
OTHERPARM=" -C no -R no -n -i "
AUDIOPARM=" -L 2 -r 48000 "
FILERAW=" -a file -o audio.file.name="$FILE_RAW" "
echo -e "\nCreating -"$FILE_RAW"- ..."
fluidsynth $OTHERPARM \
$AUDIOPARM \
$FILERAW \
$SOUNDFONT \
$MIDI_INPUT
SOXINPUT=" -s -2 -c 2 -r 48000 "$FILE_RAW" "
SOXOUTPUT=" -s -2 -c 2 -r 48000 "$FILE_WAV" "
echo -e "\nConverting -"$FILE_RAW"- to -"$FILE_WAV"- ..."
sox $SOXINPUT \
$SOXOUTPUT
exit 0