OpenALのピッチ

2011/01/19

サンプリング音を12音階で作っていたのですが、 実は基音(C音)のピッチを変更してもわからない程だったので路線変更(?) メモリの節約にはなりそう。

平均律の計算

という事で、平均律の計算が必要になってきます。 平均律と尺度

第4章 リスナとソース

12音を鳴らす

「C=1, C#=2, D=3・・・B=12」として周波数で音を鳴らすには、

double n = (noteIndex - 1)/12.0f;
double pitch = pow(2, n);
alSourcef (_sources[0], AL_PITCH, pitch);
alSourcePlay(_sources[0]);

※_sources[0]はC音のサンプリングバッファ

とりあえず音を上げるだけの処理なので、音を下げる場合は別の計算が必要です。 また再生時に音をピッチを変更しますが、CPU負荷的にどうかは検証してません。