LoginSignup
1
2

More than 5 years have passed since last update.

Faust : 初めてのVSTプラグインを直列にしてみた

Last updated at Posted at 2017-12-12

参考にしたページ

前に作ったプラグインがけっこういい感じで使えたので、もっと便利になるよう改造してみました。

音質を変えずに中域を約2ms、高域を4周期遅らせるディレイなのですが、直列にしてスライダーで遅延量を調整できるようにしてみました。
今までは必要な数だけ挿入していたのですが、いろんな設定を簡単に試せるようになってさらに便利になりました。

declare name "APFDelaySeq";

import("maxmsp.lib");

APFSt(F,Q) = APF(_,F,0,Q),APF(_,F,0,Q);

APFDelay = APFSt(250,1.5):APFSt(700,4.5):APFSt(1250,6.3):APFSt(1600,15);

bypassIfZero( x, y, n ) = (  x, y : ba.bypass2( n==0, APFDelay ) ), max( 0, n-2 ) ;

process= _, _, hslider( "Mid Delay[unit:ms]", 2, 2, 24, 2 ) 
        : seq( i, 12, bypassIfZero) 
        : _, _, ! ;

スクリーンショット 2017-12-12 14.39.52.png

以下、試行錯誤してみた感想。

  • スライダーの値によって動的にブロックが生成できるといいなと思ったんだけど、さすがにそれは無理なよう。コンパイル時に数が決まってないといけないみたい。
  • あと、条件によってブロックの中味がごっそり変わるとかも同様に無理なのかも。

  • 機能を変更する時は、必要そうなブロックを全部配置して、ルーティングで工夫する感じかな?

違ってるよ、とか、もっとこんなやりかたがあるよ、とかありましたらコメントおねがいします。

※追記

引数を省略した場合、後に追加されるそうな。今思い出した。

declare name "APFDelaySeq";

import("maxmsp.lib");

APFSt(F,Q) = APF(_,F,0,Q),APF(_,F,0,Q);

APFDelay = APFSt(250,1.5):APFSt(700,4.5):APFSt(1250,6.3):APFSt(1600,15);

bypassIfZero( n ) =  max( 0, n-2 ),  ba.bypass2( n==0, APFDelay )  ;

process=  hslider( "Mid Delay[unit:ms]", 2, 2, 24, 2 ), _, _ 
        : seq( i, 12, bypassIfZero) 
        : !, _, _ ;

スクリーンショット 2017-12-12 17.01.26.png
同じものですけどちょっとすっきり。読み易いかはまた別。

1
2
0

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