MIDIサウンドを作成する小さなアプリを作成したいです。プログラミングでサウンドを扱ったことがないので、基本的で優れたドキュメントがあるものから始めたいと思います。 Pythonに固執するのは、私が最も快適で、最初は自分を圧倒したくないからです。
私の時間はWindowsとUbuntuの間で約50/50に分割されているので、両方のプラットフォームで「正しく機能する」ものが本当に役立ちます。
助言がありますか?
MIDIUtilライブラリ(ホストされている ここ Google Codeで)はあなたが望むことをします:write MIDI純粋なPythonライブラリからのファイル。それの良いところ(そして完全な開示:私は著者です)は、ノートオンやノートオフなどの低レベルの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ファイル、 mxm's Python MIDIライブラリを生成するための純粋なPythonライブラリを探していました まさにそれです。
この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
を使用しているため)、OSXでテストしました
pyPortMidi はPython PortMidiのラッパーであり、「リアルタイム用のクロスプラットフォームCライブラリMIDIコントロール」」として説明されています。 。私自身は使用していませんが、非常に有望に見えます。MIDIデータをリアルタイムで送信できることについての明示的な言及。
MIDIを生成するか、MIDIファイルを処理するだけでよい場合は、 mingus を試してください。これは優れたパッケージであり、コード、コード進行、音階などのはるかに高度な抽象化も可能です。
Wikiにリストされている8つのパッケージを試しました http://wiki.python.org/moin/PythonInMusic 。 music21( http://web.mit.edu/music21/ )が
しかし、あなたの単純さへの要求に関しては、それは最も単純なものではないと思います。しかし、他のプログラムでMIDIファイルを堅牢な方法で読み取ることができませんでした(さまざまな奇妙で素晴らしいMIDIファイル形式がぶら下がっています)
Midiサポート(インおよびアウト)がpyGame 1.9に追加されましたが、これは主に開発段階にあり、まだ十分に文書化されていませんが、機能します。
Midiサポートは、pyGameの後継であるpgreloaded(またはpygame2)でも開発されています。
また、pyGameのタイトルには「game」が含まれていますが、その用途はゲームデザインだけにとどまりません。