興味深いサウンドを作成するためにオーディオ信号で実行される操作の基本的なカテゴリは何ですか?


10

私はdspに非常に慣れていないので、この質問が意味があるかどうかはわかりません。

私が遭遇したオーディオdspへの限られた進出で:

  1. 周波数変調
  2. 振幅変調
  3. 添加剤合成
  4. 減算合成

私の質問は、これらは信号操作(特にオーディオ)の主な基本カテゴリですか?

言い換えれば、プラグインのフルスイートを備えたFL Studioが実行できるすべてのエフェクトと空想的なことを、上記の4つの操作の一連の組み合わせに分解できますか?それとももっとたくさんありますか?プラグインを備えた最新のDAWは、理論的にはこの方法で任意のカテゴリに分類できますか?上記の4つのカテゴリはそれ自体で意味がありますか?!

背景:基本的に、プログラミングとオーディオdspの両方を学習するプロジェクトとして、非常に基本的な(ただし非常に柔軟な)オーディオシンセサイザ/エディタを作成しようとしています。Javaを使用して、基本的な現実世界のシンセサイザーのようなクラスを模倣し、OscillatorやLFOなどを呼び出すことから始めましたが、何か新しいことを学ぶたびに、新しい概念をプログラムに合わせるためにすべてを書き直さなければならないことに気づきます。

ここでもう一度始めて、プログラムの基本的なオブジェクトと構造を考え出そうとしています。これを適切に行うには、これらのオブジェクトがどのように相互作用することを許可する必要があるかを知る必要があります...

ありがとう!

編集* * *

有用なコメントと回答をありがとう。私はおそらくdsp側の要素を過小評価していることに気づき、単純なシンセサイザの基本的なテンプレートと構造を作成してから、それを拡張/構築することはできません。新しいことや、物事を行うための「適切な」方法を学ぶとき、私はおそらく何度も何度も何度も再構築する必要があります...それはもっと時間がかかりますが、もっと学ぶでしょうか?また、申し訳ありませんが、まだ誰にも賛成できないほどの担当者がいないようです...できるだけ早く、そうします。

編集*編集***

少しグーグルすると、この「合成のタイプ」へのこの基本的なガイドが明らかになり関連性があり興味深いと思いました。


合成技術の理論的な背景が必要ですか、それともこのようなもの(つまり、実際に使用されている一般的な方法)が必要ですか?dsp.stackexchange.com/questions/192/...
datageist

1
考えられるすべてのサウンド操作をできるだけ少ないカテゴリにまとめるとすれば、線形変換と非線形変換に名前を付けます。しかし、それらは一般的で広範すぎて実装できません。
Alexey Frunze、2012年

@datageist-両方が必要になると思います!しかし、それは非常に便利なリンクです、ありがとう。
kiman

@アレックスそれは非常に一般的ですが、それは概念的な出発点であり、少なくとも今、私は一種の間違った木を吠えていることを知っています。
キマン

Will Pirkleの著書「Designing Software Synthesizer Plug-Ins in C ++:For RackAFX、VST3、and Audio Units」を入手してください。自分ですべてを理解しようとするのではなく、実際にシンセサイザーを作成し、その過程で学習します。
パンティオン2015

回答:


9

out(t)in(t)

音楽制作ソフトウェアによって提供されるすべてのオーディオエフェクトの中心には、魔法のような単一目的のエンジンはありません。しかし、DSP開発者からのオーディオエフェクトの大規模なスイートのソースコードを見ると、独自のクラスで除外され、多くの異なるエフェクトで共有される「ビルディングブロック」がいくつかあります。これが効果を分類するための良い基礎を形成することを意味しません。ただし、実装の観点からは、これらのブロックは不可欠です。

  • バイカッドフィルター。
  • 分数遅延線。
  • 畳み込みエンジン。入力信号を任意のサイズのインパルス応答で高速に畳み込みます。
  • Waveshaper(時間領域の入力信号への非線形関数の適用)。
  • シンセサイザービルディングブロック:オシレーター、LFO、ADSRエンベロープ。
  • 信号検出器:エンベロープフォロワー、f0エクストラクター。

これらのブロックを使用して、以下を構築できます。

  • シンセのようなフィルターまたはワウ:1つまたは2つのバイクワッド
  • 自動ワウ:エンベロープフォロワー+エンベロープ+バイカッド
  • フランジャー/フェイザー:LFO +ディレイライン
  • コーラス:LFO +ディレイライン
  • アルゴリズムリバーブ:ディレイライン(パラレルおよびシリアルコムフィルターの配列)
  • 畳み込みリバーブ:畳み込み
  • Spatializer:畳み込み(HRTFインパルス応答を使用)
  • ギターアンプシミュレーション:コンボリューション、ウェーブシェイパー
  • 歪み、ファズ:ゲイン+ウェーブシェイパー
  • ビットクラッシャー(量子化):ウェーブシェイパーの特定のケース
  • サインキャリアを備えたリング変調器:発振器
  • ノイズゲートおよびその他のダイナミクスエフェクト:エンベロープフォロワー
  • テープシミュレーション:コンボリューション、ウェーブシェイパー、エンベロープフォロワー(ダイナミクス処理用)
  • EQ:バイカッド
  • トレモロ:LFO
  • レスリーエミュレーション:たたみ込み+ LFO
  • ボコーダー:バイカッド+エンベロープフォロワー

これらのエフェクトのいくつかは、異なるブロックにパッチを当てるだけの問題ですが(フランジャーは、本当にディレイラインを変調するLFOです)、他のいくつかのエフェクトは、パーツ間のより複雑な接着剤を必要とします。それ自身の。

これは全体として、音楽制作の多くの領域をカバーする興味深いエフェクトのセットですが、網羅的ではなく、実際にこのフレームワークに適合しないいくつかのエフェクトがあります...いくつかの例:*ダーティーサンプルレート削減(ビットクラッシャー):true、それはディラックコームによる乗算であり、次に長方形ウィンドウによる畳み込みです...しかし、振幅変調にパッチを適用する代わりに、次のN個のサンプルで1つのサンプルの値を複製するものとして書く方が簡単ですそして畳み込み!*ピッチ変更効果(ピッチシフト、自動調整)は、このフレームワークにうまく適合しません。実行するオーディオ信号のより複雑な表現が必要です(周波数領域法の場合は位相ボコーダー、時間領域法の場合はピッチ検出とピッチマーク)。

Pd、Reaktor、Plogue、SyntheEditなどの「モジュラースタイル」ソフトウェアツールで遊んで、それらが提供する基本的なビルディングブロックからエフェクトを実装してみることをお勧めします。


2
FMシンセシスでは、周波数変調を使用しています。これは、シングルトーンFM変調の場合から容易にわかります。これにより、第1種のベッセル関数によって定義されたフーリエ級数の信号が生成されます。
ブライアン

1
シンセサイザー(ヤマハDXシリーズ、OPLベースのハードウェア、およびそれらのソフトウェアエミュレーションなど)に実装されている「FMシンセシス」は、実際には位相変調で行われるため、誤称です。en.wikipedia.org/wiki/Phase_modulation
ピシェネット

ウィキペディアのエントリに添付されているソースが表示されません。とにかく、そのエントリによると、それらは「似ている」ように聞こえ、FMの実装はより難しいため、そのPMが使用されています。FMがPMの特殊なケースであることを考えると、私はそれを購入しません。それでも、ベッセル関数に関連する高調波を生成するFM変調の背後で引用した理論は有効であり、有用です。
ブライアン

@ブライアン。「FM」合成特許US4018121のクレーム1を参照してください。A sin(wt + I(t)sin w_m t)-位相変調です。PMは実装が簡単です。1/さまざまな瞬時周波数をフェーズに統合するために追加のアキュムレータが必要ないため、時間変動する周波数でトーンを生成しようとして、かまれた2 /の投稿をご覧ください。周波数から位相増分への変換には、除算が含まれます。PMを使用すると、変調率で位相増分を再計算します。FMでは、サンプルレートで位相増分を再計算する必要があります。
ピシェネット

非常に役立つ回答、ありがとうございます。私はプログラミングの側面(私はただ学んでいるだけ)に多くの焦点を合わせてきており、DSPの側面を十分に真剣に受け止めていないことに気づきました。それはおそらく、私が小規模から始めて徐々に構築できるプロジェクトではないでしょうが、学ぶにつれて何度も再構築および再構築しなければならないものになるでしょう。
kiman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.