ファイル書き込み

正弦波をpyo.wavに書き込む。昨日の日記、SndWaveをファイル書き込みに使用します。再生しながらファイルに書き込む方法は今調査中。

from sndobj import *
import time

tab = HarmTable()
osc = Oscili(tab, 440, 3000)
write = SndWave("pyo.wav", OVERWRITE)

write.SetOutput(1, osc)

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

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

再生しながら書き込む方法。

from sndobj import *
import time

tab = HarmTable()
osc = Oscili(tab, 440, 3000)
write = SndWave("pyo.wav", OVERWRITE)
rtout = SndRTIO(1, SND_OUTPUT)

write.SetOutput(1, osc) #ここが並列接続になっている
rtout.SetOutput(1, osc) #ここが並列接続になっている

thread = SndThread()
thread.AddObj(osc)
thread.AddObj(write, SNDIO_OUT)
thread.AddObj(rtout, SNDIO_OUT)

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

2つSNDIO_OUTがあるのが変な感じですが、SndIOはAddObjの第2引数が必要です。コードのコメント部分、並列のところなんですが、直列接続する方法、つまりSndWaveからSndRTIOに接続する方法はないのかな。