周波数変調

正弦波の次はその周波数変調。調べたところ2通りあるようで、その1つはOsciliの4番目の引数に周波数をコントロールするためにサウンドオブジェクトを代入できる、下のコードではmodですね。

from sndobj import *
import time

tab = HarmTable()
mod = Oscili(tab, 2, 40)
osc = Oscili(tab, 440, 3000, mod) #この部分
rtout = SndRTIO(1, SND_OUTPUT)
rtout.SetOutput(1, osc)

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

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

当然もうひとつの方法にも触れておく。上のコードを書きなおしSetFreqというメソッドを使う場合。

from sndobj import *
import time

tab = HarmTable()
mod = Oscili(tab, 2, 40)
osc = Oscili(tab, 440, 3000)
rtout = SndRTIO(1, SND_OUTPUT)

osc.SetFreq(440, mod) #この部分
rtout.SetOutput(1, osc)

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

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