Tips
MIDIノートからHzへの変換
マニュアルのnotenumのところに例があります。mid2scoを使った後の処理に困って.
iHz = (440.0*exp(log(2.0)*((iNum)-69.0)/12.0)) (1)
そうか、1オクターブ上は周波数が倍で、1オクターブ上まで12個の半音があるから2の12乗根を基準音に半音差回だけ掛ければ目的のノートの周波数ということで、ラの音を基準にしたら,,これでもOKの「ようだ」
iHz = 440.0* powoftwo((iNum-69.0)/12.0) (2)
というのも、下記のような楽器を作って
instr 1 iNote = p4 iHz1 = 440.0*powoftwo((iNote-69.0)/12.0) iHz2 = (440.0*exp(log(2.0)*((iNote-69.0)/12.0))) print p4 print iHz1 print iHz2 endin
i1 0 0.1 0 i. + . 1 i. + . 2 (あとは略します)
という力づくなスコアを流すと*1下記のように結果がビミョーに異なる。cpspchで値を確認した値とも異なる。気持ちワリー。
instr 1: p4 = 67.000 <- cpspch(8.07)=391.973 instr 1: iHz1 = 391.973 instr 1: iHz2 = 391.995 instr 1: p4 = 68.000 <- cpspch(8.08)=415.293 instr 1: iHz1 = 415.328 instr 1: iHz2 = 415.305 instr 1: p4 = 69.000 <- cpspch(8.09)=439.963 instr 1: iHz1 = 440.000 instr 1: iHz2 = 440.000