ファイル書き込み
正弦波を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に接続する方法はないのかな。