音楽×機械学習で何かしたいと思った時に、最初にネックなのがデータの前処理だと思います。
便利なものがないか探していたら良いものがあったので、自分の勉強がてら紹介したいと思います。
music21とは?
MIT(マサチューセッツ工科大学)で開発されている音楽解析のためのPythonで動くオープンソースソフトウェアです。
MusicXMLやABC、ly言語(後述のLilypond用言語)のような記譜用のマークアップ言語で書かれたファイルを入力とし、音楽構造の抽出、変換、編集などといったことを記号操作によって行うことができます。MuseScoreやFinale(Finale Reader)、Lilypondなどの外部プログラムと連携して、抽出した情報の可視化(楽譜など)もできます。
また、MIDIファイルから上記のマークアップ言語に変換等も可能。
公式ドキュメントはこちら
何ができるの?使用例
楽曲の構成、パターンなどの解析はもちろん、機械学習の前処理などにも使えます。
以下は他記事へのリンクになります。
機械学習の前処理
Magenta
googleのプロジェクトMagenta(ニューラルネットワークを使って、美術や音楽を生成するプロジェクト)内でもデータの前処理等にmusic21が使われています。
DeepJazz
DeepLearningを使ってJazzの曲生成を行うソフトウェア。
MIDIデータを使用しているが、その前処理等にmusic21を使っています。
楽曲の解析
ショパンのエチュードを解析
記事の中でLilypond(ly言語)は入出力として使えない、とありますがバージョンアップにより現在は使えるようになっています。
宮城道雄の「春の海」を解析
楽譜の生成
楽譜生成の基本操作
インストール・動作確認
後ほど詳細を更新予定です。
- Python(3.x系)をインストール
- 楽譜ソフトMuseScore、Lilypond、Finaleのどれかをインストール(楽譜利用の場合)
~~- Python用のMIDI入出力ライブラリをインストール(MIDI利用の場合)~~→music21で入出力可能 - music21をインストール
- 楽譜ソフトにパスを通す(楽譜ソフト利用の場合)
こちらでもまとまっています
MIDIデータの前処理(例)
後ほど更新予定です。