楽器をスイッチ

ノイズをローパスフィルタに通している状態、今、ローパス・フィルタからハイパス・フィルタにスイッチしたい。この場合、変数に新たにハイパスフィルタを代入してもうまくない、落ちたり、グリッチが起きるだろう。楽器の上位のクラスであるSndObjを上手に使う。

from sndobj import *
import time

noise = Rand(5000)
filter = LoPass(300, noise) #ローパス・フィルタ
filter2 = HiPass(3000, noise) #ハイパス・フィルタ
out = SndObj(filter) #SndObjにローパス・フィルタ
rtout = SndRTIO(1, SND_OUTPUT)
rtout.SetOutput(1, out)

thread = SndThread()
thread.AddObj(noise)
thread.AddObj(filter)
thread.AddObj(filter2)
thread.AddObj(out)
thread.AddObj(rtout, SNDIO_OUT)

thread.ProcOn()
time.sleep(5)
out.SetInput(filter2) #5秒後にSndObjにハイパス・フィルタ
time.sleep(5)
thread.ProcOff()

5秒後にハイパス・フィルタにスイッチします。例えばノイズを正弦波のオシレータにスイッチするときも同様にSndObjを使用する。