LoginSignup
60
75

More than 5 years have passed since last update.

Pythonで音楽解析する"music21"

Last updated at Posted at 2018-06-24

音楽×機械学習で何かしたいと思った時に、最初にネックなのがデータの前処理だと思います。
便利なものがないか探していたら良いものがあったので、自分の勉強がてら紹介したいと思います。

music21とは?

MIT(マサチューセッツ工科大学)で開発されている音楽解析のためのPythonで動くオープンソースソフトウェアです。
MusicXMLABC、ly言語(後述のLilypond用言語)のような記譜用のマークアップ言語で書かれたファイルを入力とし、音楽構造の抽出、変換、編集などといったことを記号操作によって行うことができます。MuseScoreFinale(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データの前処理(例)

後ほど更新予定です。

60
75
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
60
75