여러 MIDI 파일을 MP3 파일로 일괄 변환하기 Shell Script

새해 드라마를 보면서, 옛날 만든 MIDI 파일을 MP3 로 해 정리하기 위해서 쉘 스크립트를 만들었습니다.

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


할 수 있었다!

참고



Mac에서 MIDI 파일 재생 및 WAV 출력 - Qiita

좋은 웹페이지 즐겨찾기