コーラス・フランジャーの実装例
コーラス・フランジャーは入力信号に音程をずらした音を混ぜて音に厚みを持たせるエフェクターです。
コーラス・フランジャーの違いは明確になく、音程のずれの大きさで呼び方が変わります。
コーラスは音程のずれが少なく入力信号に厚みを持たせる程度のもで、フランジャーは音程のずれが大きく入力信号にジェットサウンドを加えたようなものになります。
パラメーターとして下記がよく利用されます。
パラメーター | 意味 | だいたいの範囲 |
---|---|---|
ミックスレベル | コーラス・フランジャーのかかり具合 | 0~1の間 |
レート | 揺らぎの間隔(ディレイ信号の読み込み位置を揺らす速度) | 0Hz~16Hz程度 |
深さ | 揺らぎの深さ(ディレイ信号の読み込み位置を揺らす幅) | 5.0~200.0サンプル程度 |
フィードバック | フィードバックの効き具合 | 0~1の範囲 |
実装は入力信号に読み込み位置を周期的にずらした(揺らした)ディレイ信号を加えて出力します。
ディレイ信号の読み込み位置を周期的に揺らすことで、音程が数Hz~数十Hz程度変わります。この揺らしたディレイ信号を入力信号に加えることで音に厚みを持たせることができます。
ディレイ信号はリングバッファを使用して保存します。リングバッファは「リングバッファについて」で作成したものを使用しています。
また、読み込み位置を揺らした際、整数値にならない場合があるためサンプルとサンプルの間の位置の値を線形補間などを用いて割り出す必要があります。
線形補間の詳細は省略いたします。
あくまで実装例ですのでいい音質のものがほしい場合は、ご自身で試行錯誤いただくようお願いします。
【実装イメージ】
■線形補間の実装
■エフェクターの実装
上記はあくまで実装例です。
読み込み位置を揺らす関数をSin関数以外にしたり、リングバッファを複数用意することで音の揺れ方や厚みが変わります。
リングバッファに保存する信号やフィードバック信号を左右逆にしたり、フィルタをディレイ信号にかけてみるのも面白いかもしれません。
質問はコメント欄や掲示板、Twitterでいただけばとおもいます。
他のエフェクター実装例はこちらにもあります。 → エフェクターの簡単な実装例
■掲示板
■Twitterアカウント:@vstcpp URL:https://twitter.com/vstcpp