前回までMIDIを演奏するPythonプログラムを紹介してきました。今回は前回までに使った音情報フォーマットからMIDIファイル自体を作成するプログラムを作ってみたので紹介します。

ソースコードはこちら

ソースコードの説明

今回、MIDIファイル作成はmidoというモジュールを用いています。以下のコマンドでインストールしてください。

midiのオブジェクトを生成した後、MidiTrackメソッドでMIDIのトラックオブジェクトを作成しています。トラックとは演奏情報を記録する場所のことです。生成したトラックオブジェクトをmidの変数tracksに追加しています。「tracks」と複数形になっていることから分かるように、複数のトラックオブジェクトを追加することができるようです。

このあと、midに追加したtrackオブジェクトに、演奏情報をメッセージとして追加していきます。X行目で演奏のテンポを120に指定しています。私は音楽に疎いのでよく知りませんが、1分間の四分音符の数として速さを指定するようです。

音階のコードをディクショナリ型変数 NOTES として作成しています。また無音部分を「間」として定義しています。

前回までと同様に「カエルのうた」の音情報を定義しています。

音情報に応じて、trackオブジェクトにメッセージを追加していきます。音を鳴らすときは「note_on」、音を止めるときは「note_off」とします。

最後にファイル名を指定して、データをファイルに保存します。

以上のプログラムを実行すると「カエルのうた.mid」というファイルが出来上がります。このファイルはWindowsのMediaPlayerなどで再生できます。

mid形式のファイルはwavやmp3など、もっと一般的な音楽フォーマットに変換するWebサービスもあります。気になる方はそちらもどうぞ。

midi → wav変換サービス
https://mp3cutterpro.com/jp/convert-midi-to-wav

midi → mp3変換サービス
https://www.bearaudiotool.com/jp/midi-to-mp3