最も簡単にVST/AudioUnitプラグインを作ってDAWで使ってみる方法を読んで、そういえば、Faustでコーラスのexampleってなかったな、どうやって作るのかな?と思って記事を書いてます。
こっちの方が簡単だぜ!しかも無料だし!とか、張り合ってるわけではないです。
コーラス自体は結構簡単な構造です。
遅らせた音を遅延時間をサイン波で変調しながら原音に足す、です。
Faustでやってみました。
declare name "myChorus";
import("stdfaust.lib");
process = chorusMono(0.0), chorusMono(phaseDiff);
chorusMono( phaseDiff ) = _
<: _, de.sdelay(maxSample, itplSample, delaySample)
: si.interpolate(wet)
with{
maxSample = ma.SR * 0.02 ;
itplSample = 1024 ;
delaySample = maxSample * 2.0 / 3.0
* ( 1 + depth / 2.0 * os.oscp( rate, phaseDiff * ma.PI ) ) ;
};
chorusGrp(x) = hgroup("[0]myChorus", x);
depth = chorusGrp( hslider("[0]depth[style:knob]", 0.1, 0.0, 1.0, 0.01)) ;
rate = chorusGrp( hslider("[1]rate[style:knob][unit:Hz]", 1.0, 0.01, 5.0, 0.01)) ;
phaseDiff = chorusGrp( hslider("[2]phaseDiff[style:knob]", 0.5, -1.0, 1.0, 0.1)) ;
wet = chorusGrp( hslider("[3]Wet[style:knob]", 0.5, 0.0, 0.5, 0.001) ) ;
delayはいくつか用意されていますが、値を動かしてもバツバツいわないのが de.sdelay です。これを使えばよい。
maxSampleは聴感上このくらいかな、で決めました。itplSample はドキュメントの例にあった値のままです。
これを、FaustLive.app や online editor で コンパイルしてvstが作れます。以前はAUも作れたんだけど何故か今はできないようです。
また、JUCEを選択すると、そこからGUI付きの vst3, AU が作れます。
参考記事:
関数型音声処理言語、Faustをはじめよう
Faust&JUCEによる超高速VST開発
JUCE=>VST3 : JUCE_VST3_CAN_REPLACE_VST2 を 0 にすれば書き出せる