LoginSignup
1
2

More than 3 years have passed since last update.

Faust: 自分好みのChorusを作ってみた

Last updated at Posted at 2020-07-13

最も簡単にVST/AudioUnitプラグインを作ってDAWで使ってみる方法を読んで、そういえば、Faustでコーラスのexampleってなかったな、どうやって作るのかな?と思って記事を書いてます。
こっちの方が簡単だぜ!しかも無料だし!とか、張り合ってるわけではないです。

コーラス自体は結構簡単な構造です。
遅らせた音を遅延時間をサイン波で変調しながら原音に足す、です。

Faustでやってみました。

myChorus.dsp
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) ) ;

スクリーンショット 2020-07-13 12.54.00.pngスクリーンショット 2020-07-14 14.25.57.png
スクリーンショット 2020-07-14 14.26.22.png

delayはいくつか用意されていますが、値を動かしてもバツバツいわないのが de.sdelay です。これを使えばよい。
maxSampleは聴感上このくらいかな、で決めました。itplSample はドキュメントの例にあった値のままです。

これを、FaustLive.app や online editor で コンパイルしてvstが作れます。以前はAUも作れたんだけど何故か今はできないようです。
スクリーンショット 2020-07-13 13.02.36.png

また、JUCEを選択すると、そこからGUI付きの vst3, AU が作れます。
スクリーンショット 2020-07-12 17.59.16.png

参考記事:
関数型音声処理言語、Faustをはじめよう
Faust&JUCEによる超高速VST開発
JUCE=>VST3 : JUCE_VST3_CAN_REPLACE_VST2 を 0 にすれば書き出せる

1
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2