ノブにトラックボリュームをアサインした時、
なのに、何故か真ん中でカチッっという感触があるLaunch Control XL。 やってらんないので真ん中で 0 dB になるような変換式を考える。
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つの特性が組み合わさっている。 こりゃ何かをモデリングしているぞ。
めんどくせぇので簡単な式一発で特性変換する。
Ableton Liveのレベル、Max for Liveでの値 で確認したようにトラックボリュームは 0.85 で 0 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 になる。
同様に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段だと全然足りない。微妙。