フィルタ

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()