OscillatorNodeインスタンスのdetuneプロパティを利用して, 音の高さを変更することも可能でした.
物理的な視点でもfrequencyプロパティと同じです.
ただし, detuneプロパティは, 音楽的な視点で音の高さを変更します.
detuneプロパティの用途は, (音楽で言う) 半音よりも小さい範囲で音の高さを調整したり, オクターブ違いの音を生成・合成したりするために利用します.
この機能によって, きめ細かいサウンド生成が可能になったり, サウンドを合成する場合において厚みをもたせることが可能になったりします.
シンセサイザーのファインチューン機能や,
エフェクターの1種であるオクターバーを実現するためにあると言えるでしょう.
frequencyプロパティの単位はHz (ヘルツ) で, 波が1 secの間に何回発生するのかを意味していました.
一方で, detuneプロパティの単位はcent (セント) です.
これは, 音楽の視点から音の高さをとらえた単位で, 1オクターブの音程を1200で等分した値です.
1つ高いラとか, 1つ低いラのことを, 1オクターブ高いラ, 1オクターブ低いラと表現することがあります.
音楽的な視点でのオクターブはまさにそういう意味です.
オクターブを物理的な視点でみると, 周波数比が1 : 2の関係にある音程を意味しています.
具体的に説明すると, いわゆる普通のラ (A) (ギターの第5弦の開放弦) の周波数は440 Hzです.
この音を基準に考えると, 1オクターブ高いラの周波数は880 Hzです. 周波数比が, 440 : 880 = 1 : 2になりますね.
話を, centに戻すと, この1 : 2の音程を1200で割った値が1 centというわけです.
なぜ, 1200? と疑問に思う方もいらっしゃると思いますが, ピアノをされる方は直感で理解できると思います.
ピアノをされない方のために, 1オクターブの音程間にピアノの鍵盤がいくつあるか数えてみましょう.
1オクターブ間であればいいので, 好きな音から始めてください.
図1 - 4 - k. 1オクターブ間の鍵盤数
数えてみると, 12個の鍵盤があります.
1オクターブ間の音程差を1200で割った (1200分割した) 値が1 centでしたので, 1オクターブ間の音程差を12分割すると, 100 centということになります.
つまり, 100 cent音が高くなると, 右隣の鍵盤の音の高さに変わるということです.
例として, 440 Hzのラ (A) の音を100 cent高くすると, 右隣の鍵盤のラ# (A#) に, さらに100 cent高くすると, シ (B) になります.
このように, -100 ~ 100 centの間の値を設定することによって, 半音以下の音の高さの調整が可能になるわけです.
また, 1200 cent, あるいは, -1200 centと値を設定することにより, 1オクターブ高く, あるいは, 1オクターブ低く調整することも可能です.
ちなみに, 実装上では, detuneプロパティのとりうる値の範囲は, -4800 ~ 4800 centなので, 4オクターブ高い, あるいは, 4オクターブ低い音まで調整可能ということです.
音楽理論では, 1オクターブの音程を12等分した周波数の関係を12平均音律と呼びます.
12平均音律においては, 隣り合う音, つまり, 半音の周波数比は, およそ, 1 : 1.059463 (正確には, 2の12分の1乗) で, これが100 centとなるわけですね.