Live用のnewプラグインAGain

Liveのコントロール用にsimpleGainというのを作って使っているのですが、それのAカーブバージョン、AGainというのを作ってみました。

AGain.zip
"download"で落として解凍した後、build/releaseにあるAGain.componentを/Library/Audio/Plug-Ins/Componentsにいれれば使えます。
※X86_64,OS10.6用です。
※使った結果については責任は持ちかねます。使用に際しては自己責任でお使いください。


単にシーンでフェードアウトするためだけなら、BカーブのsimpleGainでも十分です。


でも、普通のフェーダーの様に細かいことをさせようとすると、下の方で値が粗くなるのが気になるのです。


今、新しい舞台の準備をしているのですが、フェーダーワークをシーンで組んでsimpleGainにやらせようとして、早々に行き詰ってしまったわけです。


今日はバスで長距離移動だったんで、一念発起して作っちゃいました。


方針としては:

  • なめらかに変化すれば合格。正確でなくても良い。
  • なるべく軽く動作する。
具体的なAカーブの数値はこの辺この辺からいただいて、
  • フェーダー 0%で振幅0倍
  • 25%で0.05
  • 50%で0.15~0.20くらい
  • 75%で0.5
  • 100%で1
を目指すということにしました。

あとは
  • いろんな関数をgrapher.appで試しつつ、
  • wxMaximaで連立方程式を解いて係数を決めて、
  • 再びgrapher.appで表示させて比較する
というのを繰り返しました。

  • y=x^2というのが簡単でいいんだけど、ちょっとAカーブから離れすぎ。
  • y=x^2.5 がグラフ的にはいいんだけど、処理が重くなっちゃいそう。加減乗除でできないか?

などなど....



wxMaxima初めてちゃんと使った。使い方なんとなくわかった感じ。便利かも?

最終的に

y = 63 18 4 x 2 7 2


にしました。計算が少なくて形がいいので。


あとは、
Xcode.appで新規プロジェクトAGainを作って、
simpleGainのファイルを見ながら変更箇所をコピペ。
subtypeだけ違うものに。'aGai'に。
AGain.cppのAGain::AGainKernel::Processの最後の方にある// here's where you do your DSP work 以下の一行を

// here's where you do your DSP work

                Float32 outputSample = inputSample * ( 63.0 / ( 18.0 - 4.0 * gain * gain ) - 3.5 );



に変更。


あとはreleaseでビルド。
AULab.appで確認。
でおしまい。


なめらかなフェーダーが使えるようになりました。



コメント