目次
VCO編で作った波形をパラメーター/波形を掛け合わせて加工していく、
フィルター/エフェクターパート。
今回基本はシンセサイザーの仕組みを参考にしてるけど、ギター用のエフェクターなんかも基本構造(電気信号を加工して音を作る)ってところは同じなので参考になりそう。
【今さら聞けない】エフェクターの基礎知識編 ~歪み系エフェクター~
アイデア
- Panパン = 反転させた二つのサイン波を加算合成
- chorusコーラス = 信号を複製
- Distortion/over drive ディストーション/オーバードライブ = ノイズの値を乗算合成
ふわっと思いついたここら辺のものをベースに組みながら調整してきます。後々、それぞれ細かい挙動、基本構造いじりながら追加できたりすると面白そうなので、モジュール化できるように極力COMPにまとめて内部で完結するように気を付ける。
tremolo = Pan
- 元の波形取り込み
- パラメータをコントロール用に取り出し
- フィルター用波形生成
- 乗算合成してBase COMPの外に出力
パラメータコントロール用に取り出し
フィルター用波形生成
アイデアソースはAuto PANだけど挙動がtremoloの方がイメージ近かったのでモジュール名はtremoloに変更。Auto PANは最終絵作りのVideo filterパートで再挑戦。
chorus
- 元の波形取り込み
- パラメータコントロール用に取り出し
- 元の波形をパラメーター値で動的に複製
- フィルター用波形を2種生成
- 加算合成してBase COMPの外に出力
1/2/5は他と同じなので説明省略。
元の波形をパラメーター値で動的に複製
複製元は中身In ->-> out CHOPのみのBase COMPを使用。
In CHOPから繋いだNull CHOPを複製元にすると複製数減らした際に、In -> null -> mergeからnullだけ消えて、In ->-> mergeとなったのが大量発生しちゃったので。。。。
複製したオペーレーターの出力を自動的につなげる方法 / How to automatically connect the outputs of duplicated operations.
フィルター用波形を2種生成
“B[1-“+str(me.parent().par.A)+"]"
Channel Namesをpythonで、B0からB+文字列に変換したBaseCOMPに追加したAの数字まで、連番でチャンネルを追加。
3+(math.floor(me.par.Chorus*20))*3
BaseCOMPに追加したAのパラメーターは元波形複製のreplicatorで使われる自身のパラメーターChorusを参照。
replicatorが一つも複製しない=Chorus=複製数=0 の時に3。
replicatorが一つ複製する毎にAは3づつ増えるようにする。
(元波形はR/G/Bで3本あるので1複製ごとに*3本づつふえていくから)
Chorusにかけてる*20はreplicatorでも同数をかけてて動的に複製させる最大数。
サンプル数を揃える
NoiseCHOPのサンプル数を変化させることでブラウン管のモアレ?風の大きな抑揚にしたり砂嵐ホワイトノイズ並に細かくしたり、というのをやりたいけど、noiseのOUTをそのままmathに持っていくと上図のように元の波形のサンプル数との差が出てきちゃう。
なのでresampleCHOP入力1 : Noise CHOP / 入力2 : 元波形とすることで、元波形に合わせて引き伸ばす。
ノイズとサイン波(pattern CHOP)を混ぜられるよう。
上記内容をNoise CHOPとPattern CHOPに適用多ものをCross CHOPにつないで信号を混ぜられるようにしておく。
コーラス=合唱なので、単一な縦方向の元波形に横方向の分割を加えるイメージ+Phaser的な揺れ?ズレ?
今回作ったBaseCOMP
https://github.com/VJ-RYO/VideoSynth
Sponsored Link