ノブの中央で 0 dB になるようにしたい

ノブにトラックボリュームをアサインした時、

これが理想なんだけど

ここが 0 dB

なのに、何故か真ん中でカチッっという感触があるLaunch Control XL。 やってらんないので真ん中で 0 dB になるような変換式を考える。

Live のトラックボリュームの特性

Live のトラックボリュームの値を調べてみた。\( C \times logR \) になっていると変換式が求められそうだが・・・

こちらプロットデータ

dB value
6 1
0 0.85
- 3 0.774942
- 6 0.7
- 9 0.624942
-12 0.55
-15 0.474942
-18 0.4
-21 0.343664
-24 0.302414
-27 0.268256
-30 0.238439
-33 0.21163
-36 0.187037
-39 0.164219
-42 0.142882
-45 0.122717
-48 0.103536
-51 0.085236
-54 0.067786
-57 0.051012
-60 0.034624
-63 0.021346
-66 0.01113
-69 0.002376

-20 dB 辺りを境界にして2つの特性が組み合わさっている。 こりゃ何かをモデリングしているぞ。

めんどくせぇので簡単な式一発で特性変換する。

0.50.85 になるようにする

Ableton Liveのレベル、Max for Liveでの値 で確認したようにトラックボリュームは 0.850 dB の値になる。 変換しやすいように、まずMIDI信号の値を\(0 \to 1 \) に変換する。

そして変換は対数、指数っぽい関数を考える で使った対数っぽい曲線で行う。

0.5 を何乗すると 0.85 になるのか調べるため\(log_{0.5}0.85\)を行うと

\[ log_{0.5}0.85 = 0.23446525363702 \]

計算は対数関数 - 高精度計算サイトで行った。

つまりコントローラーの値を 0.234 乗してあげればノブのだいたい半分のところで 0 dB になる。

0.50.921 になるようにする

同様にlive.gain~についても変換式を求める。live.gain~の値についても Ableton Liveのレベル、Max for Liveでの値 で書いてある通り。

0.5 を何乗すると 0.921 になるのか調べるため\(log_{0.5}0.921\)を行うと

\[ log_{0.5}0.921 = 0.11872693857075 \]

計算は対数関数 - 高精度計算サイトで行った。

つまりコントローラーの値を およそ 0.12 乗してあげればノブのだいたい半分のところで 0 dB になる。

で、使いやすい?

12時で 0 dB になったのはよい。

しかし低い方の解像度が128段だと全然足りない。微妙。

この位置で-6 dB。本当は10時くらいにきてほしい