Faust:soft clipperを作ってみた
Faust:soft clipperを作ってみた2 もっと使いやすいやつ
の続きです。
maximizerとして十分使えてます。
thresholdが設定できるので便利な反面、使いこんでいくうちに、threshold近辺で音が変わり過ぎるような気がしてきました。
歪み付加系のことをするときは、もうちょっと滑らかにかかっていってほしいなと思うようになってきたわけです。
で、同じような感じでもうひとつ作ってみました。
thresholdありません。
小さい音の時も少し歪んでいて、音が大きくなるにしたがってだんだん歪みが増えていくタイプです。
declare name "sqClipSimple";
import("stdfaust.lib");
process = preGain : clipper : postGain ;
preGain = preGainMono, preGainMono ;
preGainMono = *( preSlider : ba.db2linear ) ;
clipper = clipperMono(vuMeterL), clipperMono(vuMeterR) ;
clipperMono( m, x ) = clipGain( x ) <: _, meter(m) : attach : *( x ) ;
clipGain( x ) = ba.if( c0, f0, f1 )
with{
c0 = abs(x) <= 2 ;
f0 = 1 - abs(x) / 4 ;
f1 = 1 / abs(x) ;
};
meter(m) = _ : ba.linear2db : si.smoo : m ;
postGain = postGainMono, postGainMono ;
postGainMono = *( postSlider : ba.db2linear ) ;
containerG(x) =vgroup("[2]",x) ;
clipGrp(x) = containerG(vgroup("[2]Clip_", x )) ;
ctrlGrp(x) = clipGrp(hgroup("[0]Ctrl", x )) ;
meterGrp(x) = clipGrp(vgroup("[1]Meter", x )) ;
preSlider = ctrlGrp(hslider("[0]pre[style:knob][unit:dB]", 0, 0, 40, 1 )) ;
postSlider = ctrlGrp(hslider("[2]post[style:knob][unit:dB]", 0, -40, 0, 1 )) ;
vuMeterL = meterGrp(hbargraph( "[0]GR L[unit:dB]", -20, 1 ));
vuMeterR = meterGrp(hbargraph( "[1]GR R[unit:dB]", -20, 1 ));
前に作ったやつを簡略化した感じです。
VST&AUにしてみました。Faust&JUCEによる超高速VST開発
いい感じです。
このままでもたいがい薄く歪んでいるし、preを上げていくと滑らかに音量と歪みが上がってきます。
使える。