ユーザ定義の波形テーブル

(4/23 コードの7行目を修正)
以前からUsrDefTable()がうまく扱えなかった。サインの波形を生成するテーブルにHarmTable(1024, 1, SINE)が使えるのだが、例えばランダムな波形を生成したければHarmTable()では無理です。そこでUsrDefTable()を使えばいいと考えていたのだが第1引数の配列の長さ、第2引数が配列になっているのだが、pythonで配列を作って第2引数において、、、これがうまくない。そこで解決策になるが、floatArray()になる。

import sndobj
import time
import random

array = sndobj.floatArray(512) #512の要素を持つ配列
for i in range(512):
    array[i] = random.uniform(-1.0, 1.0)

tab = sndobj.UsrDefTable(512, array)
osc = sndobj.Oscil(tab, 440, 5000)
rtout = sndobj.SndRTIO(1)
rtout.SetOutput(1, osc)

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

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

このように波形を生成する配列などは上記のようにしなければならない。