フィルタ
PySndObjにはたくさんのフィルタがありますが、基本のローパスフィルタを使ってみる。カットオフ周波数が定数のLowPass()ではなく、オシレータなどでコントロールできるButtLP()を、例によって4つ目の引数以上は省略。
ButtLP(fr, SndObj, SndObj) #3つ目の引数がコントロールする
第2引数の入力信号SndObjでカットオフ周波数fr、それを変調する3つ目の引数SndObjとなります。例は以下で。
from sndobj import * import time noise = Rand(5000) adsr = ADSR(0.0, 1, 0.5, 0.0, 0.0, 1, noise) tab = HarmTable() wah = Oscili(tab, 50, 200) filter = ButtLP(2000, adsr, wah) #入力はノイズですよ rtout = SndRTIO(1, SND_OUTPUT) write.SetOutput(1, filter) thread = SndThread() thread.AddObj(adsr) thread.AddObj(noise) thread.AddObj(wah) thread.AddObj(filter) thread.AddObj(rtout, SNDIO_OUT) thread.ProcOn() time.sleep(5.0) thread.ProcOff()