ファイルサイズの取得
以前、説明したファイル読み込みのクラスであるSndWaveは、上位クラスのSndFIOを継承しています。であるからSndFIOのメソッドのGetDataFrames()でファイルサイズを取得できます。使い方は
file = SndWave("loop.wav", READ) size = file.GetDataFrames()
こんな感じでファイルサイズを取得できます。使い道で考えられるのはサウンドデータを読み込むSndTableの配列のサイズ。
table = SndTable(size, file)
ここでそのSndTableをオシレータに流すとルーピング・オシレータになる。オシレータの周波数はファイルのサンプリングレートをファイルサイズで割って求められるので、正確なファイルのループ再生になる。
sampRate = file.GetSr() #サンプリングレートを取得 osc = Oscil(table, sampRate / size, 5000)
再生速度を2倍にする時は以下のように。
osc = Oscil(table, sampRate / size * 2, 5000)