pythonプログラミング で楽譜作成!| music21 ~インストール

pythonプログラミング で楽譜作成!| music21 ~インストール

みなさん、こんにちは!

今回はpythonライブラリ「music21」についてご紹介します。

music21とは?

まず「music21」ですが、こちらは「音楽解析を素早く、簡単に」をモットーにMIT(マサチューセッツ工科大学)が開発したpython用ライブラリです。

そもそも音楽と数学は親和性が高く、古代ギリシャの学者たちは学問としても取り上げていました。

それぐらい、数字と音は結び付けやすいんですね。

ちなみにMITと言えば、リベラルアーツ教育を活発に行っており、工学系大学でありながら本格的な芸術部門の授業を提供していることでも有名です。なんとも羨ましい( ^ω^)・・・

以前の記事でも取り上げている書籍にて、授業内容が取り上げられていますので、気になる方は以下からどうぞ!

音楽と数学を、プログラミングを通して学べる環境を提供するMIT・・・さすがですね!

インストールするには?

前置きはここまでにして、早速インストールしてみましょう!

今回「music21」をインストールした環境は以下の通りです。

*********

OS:Windows10(ver 21H1)

python:3.9.7

Musescore:3.5.2

*********

macLinuxに関してもインストール方法が提供されていますが、本ページでは割愛します。

① pipコマンドでインストール

コマンドプロンプトからpipコマンドでインストールします。

pip install music21

※2022/2/14時点:music21 7.1.0をインストール

※proxy等でpipが通らない場合はpypiからダウンロードしてくださいね。

② Musescore(もしくはFinaleなど)をインストールする

music21ライブラリをインストールするだけでは利用できないので注意です。

MusesocreやFinale、Lilypondを端末にインストールし、music21側がこれら(ヘルパープログラム)のプログラムを利用して「楽譜描画」等を行います。

下記にリンクを掲載しますが、私が試したのは「Musescore」のみとなります。(悪しからず)

・Musescore

・Finale

・Lilypond

※ソフトウェアのインストールに関しては別記事でご紹介します。(後日予定)

環境準備としては以上となります。

③ ヘルパープログラムを設定する

上記②で説明した通り、musi21ライブラリと上記②のソフトウェアの紐づけを行います。

以下のコードを実行する事で、ヘルパープログラムの検索が実行されます。

※ pythonのIDELであれば以下のコード↓

import music21
music21.configure.run()


※ コマンドプロンプトであれば以下のコード↓

python -m music21.configure 

以下はコマンドプロンプトで実行した場合の画面です。

(1)コマンドを実行して暫し待ったのち、XML Readerのヘルパープログラムを選択する。

【翻訳】

XML Readerを定義することで、music21が生成したXMLを自動的に開くことができます。
show()メソッドを呼び出すと、エディタでMusicXMLを表示・操作することができます。このオプションを設定することを強く推奨します。

→ 私の端末には、以下の場所にMuseSocre3.exeが入っているようです。

→ オプション番号の入力を求められるため、「1」を入力しEnterを押下

(2)BSDライセンスの規約を理解し、オプションを選択する。

【翻訳】

BSDライセンスのmusic21ソフトウェアは、エンコードされた楽曲のコーパスとともに配布されます。これらは、エンコード者、および必要に応じて作曲家または編曲家の許可を得て、米国の著作権法の下で許可された場合に配布されます。

コーパスに含まれるいくつかのエンコーディングは、商業的な使用やその他の制限があります。詳細については、個々の作曲家やディレクトリに埋め込まれたライセンスを参照してください。

music21で配布されるコーパスの他に、他の楽曲はこの配布物には含まれませんが、ダウンロード可能な他のウェブサイトへのリンクとしてインデックス化されています(「仮想コーパス」)。

もしあなたが望むなら、music21はあなたのコンピュータが自動的にこれらのリンクを解決し、解析のためにあなたのハードディスクに持ち込むのを助けることができます。

私たちの知る限り、コーパスに含まれる音楽は(エンコーディングは別として)米国での著作権が切れているか、非商用利用が許可されているかのどちらかです。これらの作品は、仮想コーパスにリンクされている作品とともに コーパスは、あなたの管轄区域で無料であるかどうかわかりません。

もしあなたがこの 1つまたは複数の作品について、このメッセージが誤りであると思われる場合は、Michael Cuthbert(cuthbert@mit.edu)までご連絡ください。

[1] これらの用語を認め、music21がコーパスに含まれる楽曲の検索を支援することを認める。

[2] この規約に同意し、バーチャル・コーパスをブロックする。

[3] これらの規約に同意せず、music21を利用しない。(コーパスの利用規約に同意することは、システムを利用する上で必須です)。

→ [1]を入力しEnterを押下

(3)メール送信の選択

【翻訳】

インストールに関して、あらかじめフォーマットされたメールをmusic21へ送信しますか?

インストールレポートは、music21をより快適にお使いいただくためのものです。

YesまたはNoを入力してください(デフォルトはYes)。

→ レポートは不要と感じたため「no」にしてEnterを押下

(4)ディスカッショングループへの参加

【翻訳】

music21のディスカッショングループは、質問やヘルプを得るためのフォーラムを提供します。

music21のディスカッションリストをご覧になりたい方、または更新のお知らせを希望される方は、こちらをクリックしてください。

YesまたはNoを入力してください(デフォルトはYes)。

→ こちらも取り急ぎ不要なので「no」にしてEnterを押下

(5)music21のドキュメント閲覧

【翻訳】

music21のドキュメントをウェブブラウザでご覧になりますか?

YesまたはNoを入力してください(デフォルトはYes)。

→ こちらも取り急ぎ不要なので「no」にしてEnterを押下

設定完了

→ Enterを押下する事で設定完了します。

試しに利用してみよう!

以上で設定が完了しましたので、試しに利用してみましょう!

from music21 import *
n = note.Note("D#3")
n.duration.type = 'half'
n.show()

1:変数nに対して、国際式の「D#3」のノートをセットする。

2:ノートの「長さ」を「half(2分音符)」に設定。

3:show()メソッドで描画

【結果】

また、以下の様に書くことでmidi再生も可能です。

n.show('midi')

【結果】下図のようにプレイヤーが表示される。

まとめ

今回はMITが開発したpythonライブラリ「music21」のインストール方法についてご紹介しました!

プログラミングで音を鳴らす&解析する&作成する体験を通して、より音楽を楽しめると良いですね!

まだ表面的にしか触っていませんが、「ある一定のアルゴリズムに沿って楽譜を生成する(≒機械学習を用いた曲生成)」にはお勧めのライブラリのように感じています。

一方で波形解析(信号処理)を行いたい場合は「Librosa(リブロサ)」が主流かと思いますので、こちらもいずれは紹介できればと思っています。

ではまた!

※補足:

ヘルパープログラムの設定を行いましたが、設定できなかった場合は「environment.set」を用いる事で指定することが可能です。

#musescoreのプログラムパスを設定
environment.set('musescoreDirectPNGPath', 'C:\\Program Files\\MuseScore 3\\bin\\MuseScore3.exe')

エラー: データの取得に失敗しました。