Liveのコントロール用にsimpleGainというのを作って使っているのですが、それのAカーブバージョン、AGainというのを作ってみました。
AGain.zip
"download"で落として解凍した後、build/releaseにあるAGain.componentを/Library/Audio/Plug-Ins/Componentsにいれれば使えます。
※X86_64,OS10.6用です。
※使った結果については責任は持ちかねます。使用に際しては自己責任でお使いください。
単にシーンでフェードアウトするためだけなら、BカーブのsimpleGainでも十分です。
でも、普通のフェーダーの様に細かいことをさせようとすると、下の方で値が粗くなるのが気になるのです。
今、新しい舞台の準備をしているのですが、フェーダーワークをシーンで組んでsimpleGainにやらせようとして、早々に行き詰ってしまったわけです。
今日はバスで長距離移動だったんで、一念発起して作っちゃいました。
方針としては:
などなど....
wxMaxima初めてちゃんと使った。使い方なんとなくわかった感じ。便利かも?
にしました。計算が少なくて形がいいので。
あとは、
Xcode.appで新規プロジェクトAGainを作って、
simpleGainのファイルを見ながら変更箇所をコピペ。
subtypeだけ違うものに。'aGai'に。
AGain.cppのAGain::AGainKernel::Processの最後の方にある// here's where you do your DSP work 以下の一行を
に変更。
あとはreleaseでビルド。
AULab.appで確認。
AGain.zip
"download"で落として解凍した後、build/releaseにあるAGain.componentを/Library/Audio/Plug-Ins/Componentsにいれれば使えます。
※X86_64,OS10.6用です。
※使った結果については責任は持ちかねます。使用に際しては自己責任でお使いください。
単にシーンでフェードアウトするためだけなら、BカーブのsimpleGainでも十分です。
でも、普通のフェーダーの様に細かいことをさせようとすると、下の方で値が粗くなるのが気になるのです。
今、新しい舞台の準備をしているのですが、フェーダーワークをシーンで組んでsimpleGainにやらせようとして、早々に行き詰ってしまったわけです。
今日はバスで長距離移動だったんで、一念発起して作っちゃいました。
方針としては:
- なめらかに変化すれば合格。正確でなくても良い。
- なるべく軽く動作する。
- フェーダー 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 がグラフ的にはいいんだけど、処理が重くなっちゃいそう。加減乗除でできないか?
などなど....
試行錯誤の跡。grapherのファイル wxMaximaのファイル
wxMaxima初めてちゃんと使った。使い方なんとなくわかった感じ。便利かも?
最終的に
にしました。計算が少なくて形がいいので。
あとは、
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で確認。
でおしまい。
なめらかなフェーダーが使えるようになりました。
なめらかなフェーダーが使えるようになりました。
コメント
コメントを投稿