少ない配列で複雑な配列を
例えばオシレータに任意で周波数の配列をあたえたいとする。ここでは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)