LoginSignup
3
3

More than 3 years have passed since last update.

複数の MIDI ファイルを MP3 ファイルに一括変換する Shell Script

Last updated at Posted at 2020-01-04

お正月ドラマを観ながら、昔作った MIDI ファイルを MP3 にして整理するためにシェルスクリプトを作りました。
midmp3.gif
MIDI ファイルは 2020 年現在、デフォルトで QuickLook できないので、MP3 の方が取り回しが楽ですね。

ツールのインストール

Homebrew を使えるようにしておき、 Fluid Synthffmpeg をインストールします。

$ brew install fluid-synth
$ brew install ffmpeg

Sound Font を入れる

S. Christian Collins--Pianist, Composer, Virtual Instrument Designer から、「GeneralUser GS 1.471」 をダウンロードして伸長し、好きなディレクトリに配置します。

Sound Font は超絶平たくいうと MIDI 音源の種類の一つです。
質の良い Sound Font を使うと音が良くなります。
上のやつはライセンス的にも良さげなのでこれを使います。

$HOME/Music/SoundFonts/GeneralUser GS 1.471/GeneralUser GS v1.471.sf2 に配置しました。

一括変換シェルスクリプトを作る

次の create_mp3_from_midi.sh ファイルを適当なディレクトリに配置して、実行権限を与えます。

$HOME/Music/create_mp3_from_midi.sh に配置しました。

「今見ているディレクトリ」にある .mid .MID 拡張子のファイルを一括で .mp3 に変換するスクリプトです。

create_mp3_from_midi.sh
#!/bin/sh
soundfont="$HOME/Music/SoundFonts/GeneralUser GS 1.471/GeneralUser GS v1.471.sf2"
echo "🎹 SoundFont の場所は $soundfont !"

for file in `\find . -maxdepth 1 -type f`; do
  filename=${file%.*}
  fileext=${file##*.}
  if [ $fileext = "mid" ] || [ $fileext = "MID" ]; then
    echo "🎹 ${file}"
    fluidsynth -F "${filename}".wav -i "$soundfont" $file 
    ffmpeg -i ${filename}.wav -f mp3 -b:a 192k ${filename}.mp3
    rm ${filename}.wav
    echo "🎹 ===== > ${filename}.mp3"
  fi
done

echo "🎹 おしまい!"

Sound Font を配置したパスを変えた場合は、soundfont 変数に指定してください。

実行権限を与えます。

$ chmod 755 create_mp3_from_midi.sh

スクリプトをどこからでも実行できるようにする

midimp3 コマンドを作って、どこでも実行できるようにエイリアスを作ります。

$ echo 'alias midimp3="~/Music/create_mp3_from_midi.sh"' >> ~/.bash_profile
$ source ~/.bash_profile

実行!

midi ファイルがあるディレクトリに Terminal で移動して、midimp3 コマンドを実行します。

$ midimp3

midmp3.gif
できた!

参考

MacでMIDIファイルを再生&WAV出力する - Qiita

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3