2007年9月5日水曜日

PyPortMidi

PythonでMIDIを扱うための拡張モジュールはいくつかあるようだが、
どれもやや中途半端のようだ。

候補としては
Pyrtmidi
PyPortMidi
PyObjCからCoreMIDI

が考えられた。Pyrtmidiはリンクがことごとく切れていて入手が出来なかった。
Macに限ってはPyObjCでCoreMIDIを叩くのが最も確実なのだが、Pythonのクロスプラットフォーム性を
なるべく尊重したいので、PyPortMidiを導入してみる。


PyPortMidi 0.0.3
PyPortMidiはBarry Vercoe, John Harrisonという人によるPortMidiのラッパーである。
PortMidiはMortMusicというクロスプラットフォーム音系APIの一部である。
PyPortMidiは やや古いようで、どこかのサイトで最新のコンパイルされたPortMidiは使えないと書いてあった。
PyPortMidiに予めコンパイルされているlibportmidi.aをそのまま使えば良い。
インストールはちょっと修正が必要。

インストール
1.Pyrexのインストール(※)
PyPortMidiはPortMidiのラップにPyrexという拡張モジュールを使用している。
PyrexというのはPythonとC言語を混在させてプログラムできるもの(らしい)
PyPortMidiをビルドするために、これを入れておく必要がある。

2.PyPortMidiディレクトリ内のpypm.pyxファイルの修正
通常であればPyrexインストール後python setup.py installでいけるのだが、
途中でエラーが発生。pypm.pyxファイル内、357行目がブーリアンとして認識できないとと出たので、
while(Pm_Poll(self.midi)): を
while(bool(Pm_Poll(self.midi))):と無理矢理直す。

3.python setup.py install で無事インストール

公式サイト:http://alumni.media.mit.edu/~harrison/code.html
ダウンロード:http://alumni.media.mit.edu/~harrison/code.html
ドキュメント:PyPortMidiのドキュメントはない。PortMidiのドキュメントを見ろということだろう。
PortMusic公式:http://www.cs.cmu.edu/~music/portmusic/index.html
PortMidi: http://www.cs.cmu.edu/~music/portmusic/portmidi/
PortAudio: http://www.portaudio.com/
PortMidドキュメント: http://www.cs.cmu.edu/~music/portmusic/portmidi/portmidi.h


Pyrex 0.9.5
Pythonの書式でCのライブラリをラッピングし、PythonのC拡張モジュールが作れるというめちゃくちゃなアプリ。

インストール

ターミナルから
$ python setup.py install

Pyrex公式:http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
ダウンロード:http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
ドキュメント:http://ldots.org/pyrex-guide/

(※※Pythonライブラリインストールの項目にも追加。)

0 件のコメント: