少ない配列で複雑な配列を

例えばオシレータに任意で周波数の配列をあたえたいとする。ここではEnvTableを使用する。EnvTableはとても大きな配列であると考える、一方で12個ぐらいの配列をfloatArrayで作る。この小さいほうの配列を大きな方の配列に張りつける。もちろん間がスカスカになりそうだがEnvTableは間を線形などにして補ってくれる。そうポルタメントですかね。少ない配列で複雑な配列を作れるわけだ。さらにEnvTableはオシレータの波形テーブルになるので、周波数を変化させることで読み込む波形テーブルのスピードを変えることなどもできる。

EnvTable(テーブルの長さ,周波数リストの長さ,テーブルの初期位置の値,周波数リスト、周波数リストの間隔、補間のタイプ)

freqlist = [440, 220, 660, 880, 110, 550, 990, 770, 330] #周波数リスト
segments = len(freqlist)      #周波数リストの長さ

segPoint = floatArray(segments)
segLength = floatArray(segments)
for i in range(segments):
    segPoint[i] = freqlist[i] #周波数のリスト
    segLength[i] = 1          #リストの間は等間隔

envtab = EnvTable(512, segments, 110, segPoint, segLength, 0)
cont = Oscil(envtab, 1, 5000)
tab = HarmTable()
osc = Oscil(tab, 0, 5000, cont)