音の鳴るブログ

鳴らないこともある

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

つかわない。