■
MIDIノート番号を周波数に変換
mtof = (m)-> 440 * Math.pow(Math.pow(2, 1/12), m - 69)
1/12 は1オクターブを12個に分割する。 これを 1 / (12 * 64) とすると半音が64個に分解される。あらかじめ計算して配列に保存しておくと、インデックスをずらすだけでピッチベンドができたりして便利。
周波数をMIDIノート番号に変換
ftom = (f)-> Math.round((Math.log(f / 440) * Math.LOG2E) * 12 + 69)
つかわない。
ミリ秒を周波数に変換
hz2msec = (hz)-> 1000 / hz
LFOの周期をだいたいの時間感覚で決めるときに便利。
周波数をミリ秒に変換
msec2hz = (msec)-> 1000 / msec
たまにつかう。
BPMをミリ秒に変換
bpm2msec = (bpm, len=4)-> (60 / bpm) * (4 / len) * 1000
どれくらい早いか気になる時に便利。
ミリ秒をBPMに変換
msec2bpm = (msec, len=4)-> 60 / (msec / 1000) * (4 / len)
BPMを知りたい時に便利。
BPMを周波数に変換
bpm2hz = (bpm, len=4)-> 1000 / ((60 / bpm) * (4/ len) * 1000)
BPMにあわせてLFOを制御したいときに便利。
周波数をBPMに変換
hz2bpm = (hz, len=4)-> 60 / (1000 / hz / 1000) * (4 / len)
つかわない。
ミリ秒をサンプル数に変換
msec2samples = (msec, samplerate=44100)-> samplerate / 1000 * msec
ディレイとかのときに便利。
サンプル数をミリ秒に変換
samples2msec = (samples, samplerate=44100)-> samplerate / samples * 1000
つかわない。