PySndObjはじめました。

ChucKも続けていきますがちょっと休憩。グループで書く日記もあるようなのでそちらのほうに移していこうかと。次はNyquistかCommonLispMusicなどの関数型の音響言語を勉強しようと思っていたんですが、なんかノイジーパイソンって事で。
さてPySndObjですが、サイン波を数秒鳴らすところからはじめてみましょう。

from sndobj import *
import time

tab = HarmTable()
osc = Oscili(tab, 440, 3000)
outp = SndRTIO(1, SND_OUTPUT)
outp.SetOutput(1, osc)

thread = SndThread()
thread.AddObj(osc)
thread.AddObj(outp, SNDIO_OUT)

thread.ProcOn()
time.sleep(5)
thread.ProcOff()

スレッドを使わない方法も考えられますが、これが基本形だと思います。オシレータOsciliの第1引数に波形テーブルで、サイン波や矩形波を作るようにするようです。詳しくは明日以降って事で。
気になったのがOsciliの第3引数が振幅(音量)なのですが、マニュアルでは標準が1なんですがそれだと音が全く聞こえません。3000ぐらいに設定してみると聞こえます。