このプロジェクトについて
Musicpyは、Pythonライブラリとして実装された音楽プログラミング言語です。音楽理論とアルゴリズムに基づいた簡潔で人間が読みやすい構文で音楽を書けることを目指しており、Pythonと完全に互換性があるため、通常のPythonコードから操作できます。
主な機能
- 音符、コード、メロディ、リズム、音量を簡潔な構文で表現します。
- 音楽理論の操作を行い、アルゴリズム作曲のロジックを設計できます。
- musicpyの構造をMIDIファイルに書き出し、MIDIファイルを読み込んでmusicpyのデータ構造に戻し、さらに処理できます。
- オプションのmusicxml依存関係をインストールすると、MusicXMLファイルの読み書きができます。
- 音楽を直接再生でき、play関数はwait=Trueで再生が終わるまでブロックできます。
- サウンドフォントを扱うためのdawモジュール(オプション依存関係)を含みます。
データ構造
- note、chord、scaleが基本クラスです。
- noteクラスは整数と合同で、intとして使用できます。
- chordクラスは音符の集合のように振る舞い、コード進行を組み合わせる際には整数の集合、ベクトル、または行列として扱えます。
- これらのクラスは算術的な使用に対応しており、著者はこれを線形代数や離散数学、およびセリー主義、偶然性の音楽、ミニマル音楽などの実験的なスタイルと結び付けています。
インストールとプラットフォームに関する注意
- Python 3.7以降が必要で、pip install musicpyでインストールします。
- オプションの追加機能: pip install musicpy[musicxml]、pip install musicpy[daw]、または両方同時。
- Windows、macOS、Linuxで動作します。
- Linuxでは、play関数が正しく動作するためにpygameが2.0.3より古い必要があり、freepatsが必要です(例: Ubuntuではsudo apt-get install freepats)。
- 音が聞こえない場合、一部のIDEが再生を待たないため、playでwait=Trueを設定すると役立つことがあります。
- LinuxまたはmacOSでは、dawモジュールの依存関係であるsf2_loaderに追加の設定手順が必要です。
ドキュメントとツール
- 詳細なチュートリアルはプロジェクトのwikiとRead the Docsにあります。wikiは新しいリリースに合わせて更新されます。
- wikiのPDF版とMarkdown版がダウンロード用に提供されています。
- 別プロジェクトのmusicpy_editorは、リアルタイムのコンパイルと実行、およびいくつかの糖衣構文を備えたエディタを提供します。
例
短い例では、ナイロン弦ギターがコード進行の上で分散和音を演奏する様子を示します。コード式を演算子で組み合わせて構築し、bpmと楽器番号を指定してplayに渡します。
背景
著者は2019年10月にmusicpyの開発を始め、頻繁に更新を続けています。述べられている動機は、音符とテンポを保存するだけでなく、音楽理論の観点から音楽がどのように構築されるかを表現し、作曲AIに深層学習と大規模データセットだけに頼るのではなく音楽理論のインターフェースを与えることです。READMEでは、効果的に使うために基本的な音楽理論の知識が推奨されるとも記されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.