自分用でしかも僕は開発素人なので普遍性はないかも知れません。YMMVってやつだね。
sourceforgeのsndobjプロジェクトページへ。
http://sourceforge.net/projects/sndobj
Download The Sound Object Libraryをクリックして移動。
PySndObjをダウンロード。
既に僕の環境ではpython2.5なのでPySndObjを使うには2.3に落とさなければならない。
terminalから
/usr/bin/python2.3
とすればpython 2.3.5が起動する。
PySndObjフォルダ内の
_sndobj.soとsndobj.pyを
ライブラリ/site-packagesフォルダの中にコピー。
terminalから
open /usr/local/lib/
としてフォルダを開き、同じくPySndObjフォルダ内のlibsndobj.dylibをコピー。
それからJack OSXをダウンロードしてインストール。OSXならCore Audioでいけるはず(?)なんだけどJackがないよ的なエラーが出たのでよくわからずとりあえず。
http://www.jackosx.com/
おそらくこれでいけると思います。動かすまでに色々とエラーが出て、メッセージに言われるがまま操作してたら動くようになりました。ちゃんとエラーログをとっておくべきだったな。こうやって勉強していくのでしょう。漏れがないことを祈る。
pythonインタラクティブモードでSndObjのマニュアル見ながらコードを打ち込むもスレッドを使うところでエラー。
>>> thread = SndThread()
Traceback (most recent call last):
File "
NameError: name 'SndThread' is not defined
import sndobj
では駄目で、
from sndobj import *
とすればいける。
>>> from sndobj import *
>>> thread = SndThread()
>>>
が、今度は
>>> tab = sndobj.HarmTable()
Traceback (most recent call last):
File "
NameError: name 'sndobj' is not defined
となる。
なんでだーと思ってたらpythonモジュールのインポートの仕組みの違い。
http://python.matrix.jp/tips/import.html
まぁ、何となく他のソースと見比べればわかる。マニュアルが間違ってるんだね(追記:2.6.4のマニュアルでは修正されてました)。
なので、
import sndobj
でいく場合は
thread = sndobj.SndThread()
としてあげる。
from sndobj import *
だったら
tab = HarmTable()
でいい。
超簡単に440Hzサイン波を出すには
from sndobj import *
t = SndRTThread()
harm = HarmTable(10000, 1, 1)
osc = Oscili(harm, 440, 10000)
t.AddOutput(1, osc)
t.ProcOn()
で音が出ます。
t.ProcOff()
で音を止める。
exampleのtest.pyからマイク入力とsleep抜いただけ。
あーすげーやる気出て来た。
0 件のコメント:
コメントを投稿