MIDI サウンドを作成する小さなアプリを作成したいと考えています。プログラミングでサウンドを扱ったことがないので、基本的で適切なドキュメントがあるものから始めたいと思います。私はPythonに最も慣れていて、最初は自分を圧倒したくないので、Pythonを使い続けたいと思っています。
私の時間は、Windows と Ubuntu の間で約 50/50 に分割されているため、両方のプラットフォームで「うまく機能する」ものは本当に役に立ちます。
助言がありますか?
MIDIUtil ライブラリ (ここでは Google Code でホストされています) は、純粋な Python ライブラリから MIDI ファイルを書き込むという、あなたが望むことを行います。それについての良い点 (および完全な開示: 私は作成者です) は、ノートオンやノートオフなどの下位レベルの MID イベントを追跡する必要がないことです。
メモを書く例として、次のようにします。
MyMIDI = MIDIFile(1)
track = 0
channel = 0
pitch = 60
time = 0
duration = 1
volume = 100
MyMIDI.addNote(track,channel,pitch,time,duration,volume)
お役に立てれば
MIDI ファイルを生成する純粋な Python ライブラリを探していましたが、mxm の Python MIDI ライブラリはまさにそれです。
この dzone スニペットから、上記のライブラリsmidi.pyの単一ファイル バージョンがあります(後世のためにここに要旨を記載) 。
使い方はとても簡単です:
>>> import smidi
>>> m = smidi.MidiOutFile('out.mid')
>>> m.header()
>>> m.start_of_track()
>>> m.update_time(0)
>>> m.note_on(note=0x40) # single note
>>> m.update_time(192)
>>> m.note_off(note=0x40) # stop it after 192
>>> m.update_time(0)
>>> m.end_of_track()
>>> m.eof()
おそらくWindowsで動作し(元の例C:\out.mid
では出力ファイル名として使用されているため)、OS Xでテストしました
pyPortMidiは PortMidi の Python ラッパーであり、「リアルタイム MIDI コントロール用のクロスプラットフォーム C ライブラリ」として説明されています。私はそれを自分で使用したことはありませんが、非常に有望に見えます。MIDI データをリアルタイムで送信できることについての明示的な言及。
Midi の生成または midi ファイルの処理のみが必要な場合は、mingusを試してください。これは優れたパッケージであり、コード、コード進行、スケールなどのより高度な抽象化も可能です。
wiki http://wiki.python.org/moin/PythonInMusicにリストされている 8 つのパッケージを試しました。music21 ( http://web.mit.edu/music21/ ) が
しかし、単純さに対するあなたの要求に関しては、それは最も単純なものではないと思います. しかし、他のどのプログラムにも堅牢な方法で midi ファイルを読み取らせることはできませんでした (さまざまな奇妙で素晴らしい midi ファイル形式がぶら下がっています)。
cSoundsを見てください。