
この記事は、ノコギリ波(のこぎり)、正方形(正方形)、三角形(三角形)、および正弦波(正弦波)の4つの主要な音波の合成に専念しています。 動作するには、Native InstrumentsのReaktorサウンド処理ソフトウェア環境が必要です。 デモ版はNative Instrumentsの公式Webサイトからダウンロードできます(作業制限-30分、プロジェクトの保存は無効になっています)。 この情報は、このソフトウェアの所有者だけでなく、プログラミングやサウンド処理全般に関心がある人にとっても有用です。 トラフィックをきちんとスクリーンショット、慎重にローリング!
理論
作業を開始する前に、Reaktorのマニュアル、基本的なモジュール、およびインターフェイスに慣れていることを前提としています。 プログラムでは、 プライマリレベル (プライマリ)とコアレベル (内部)の2つのレベルの操作が可能です。 違いは一目瞭然です-プライマリレベルでは、すべてのソリューションが用意されています(ウェーブジェネレータ、振幅のエンベロープ、エフェクトなど)が、コアレベルではすべてを自分で作成する機会があります。 コアレベルは、NIが作成した独自のプログラミング言語です。 他のプログラミング環境と同じ演算子、ループ、変数が含まれています。
デジタルサウンドはアナログとは異なることを知っています。 アナログ信号はデジタル信号とは異なり連続しているため、最初の信号を2番目の信号に変換するために、サンプリング周波数SR.R (サンプルレート)などの概念が使用されます。 サンプリングレート(またはサンプリングレート)は、連続信号を離散信号に変換するために必要な1秒あたりのサンプル数です。 したがって、サンプリング周波数が高いほど、離散信号のスペクトルは豊かになります。 Reaktorでは、便宜上、サンプリング周波数SR.C (サンプルレートクロック)のイベントのようなものがあります:SR.C = 1 /SR.R。
44100 Hzの標準サンプリング周波数がある場合、これはサンプリング周波数イベントが1秒間に44100回発生することを意味します。 このようにして、Reaktorはオーディオ信号(Audio)とイベント信号(Event)の2つの信号レベルを認識します。 最初のものはすべて明らかで、2番目のタイプの信号は、花火の開始時に発生するフラッシュと比較できます。 イベント信号はまったく鳴りません。特定の期間の値を持つ単なる数字であるため、SR.Cは値が0のイベントです。
のこぎり波
Reaktorでの合成は、ノコギリ波(のこぎり)から始めるのが最も簡単です。 事実は、その位相が他のすべての波の位相を構築するための基本であることです。

図から、音波全体が何であるかが明確であり、 位相と振幅という 2つの主要な指標によって特徴付けられています。 これは、繰り返し周期(特定の周波数の位相)を持つ特定の関数であり、この場合は0〜1(振幅)の値を取ります。 位相周波数は、ヘルツとピッチ(ピッチ)の両方で表現できます。 ピッチはトーンで測定され、0〜127の値をとります。たとえば、3オクターブのノートC(do)はトーン13に対応し、これは約130.8137 Hzです。 振幅は、数値(1)でデシベル(0 dB)で表すこともできます。 実際には、サンプリング周波数イベントを取得するたびに、図に示す関数に従って0から1の値を取得する必要があります。 Reaktorで既製のソリューションを使用すると、記述されていないルールによって厳しく罰せられます。



*- 仕事のために、古いバージョンを購入した後に新しいライセンスベータ版の所有者になったため、Reaktorの新しいバージョンを使用しましたが、コアレベルとプライマリレベルのインターフェイスでは、以前のバージョンと変わりません。
まず、新しいプロジェクトを作成する必要があります(ファイル-新しいアンサンブル)。 スクリーンショットは、プロジェクトのオープンレベルの深さに応じて表示されます。 最初のスクリーンショットは、オーディオカードの出力に接続されたメインツールを示しています(古いバージョンでは少し異なって見えます)。 2番目のスクリーンショットは、メインツール(プライマリレベル)の内部をすでに示しています。 すべてのモジュールは、マウスの右ボタンで呼び出すことができます。 注:ビルトインモジュール-MIDI入力セクションにあるピッチおよびゲートモジュールは、キーボードまたはMIDIコントローラーからのMIDI信号の受信を担当します。 注:Pitchは0〜127の値を受け取り、音のピッチを担当します。Gate-0〜1の値は、音の振幅を担当します(通常、キーボードでは0〜0.6299)。 Saw Waveformモジュール内には連続的なのこぎり波の位相があります。そのため、MultiplyモジュールをGateモジュールと組み合わせて使用すると、信号が連続的に鳴るのではなくMIDIデバイスによって制御されます。 3番目のスクリーンショットが最も興味深いのは、 ここで波の位相が実現されます。 構造の最初の部分は、ピッチの位相周波数への変換です。 計算は、次の式に従って実行されます。

特定の例を使用して構造を検討してください。 ピッチ48で、サンプリング周波数SR.Cのイベントから始まる次のデータがサイクルに到着します。F= 130.8128、2 / SR.R = 0.000045351(標準サンプリング周波数441000 Hz)-ナイキスト周波数(周波数サンプリング周波数の半分に等しい)、F *ナイキスト周波数= 0.0059325。
合計モジュールに入る値(+)が1を超える場合、差モジュールに送られ、そこから1が減算されます。 したがって、この関数は0から1までの厳密な範囲を受け入れます。その後、値はメモリモジュールに保存され(書き込み)、再びメモリリーダーに送られ(読み取り)、次のイベントでサンプリング周波数が前の値と合計されます。 オシロスコープ(Micro Scopeモジュール)をコアモジュール(フェーズ)の出力に接続すると、ノコギリ波グラフとまったく同じ機能が得られます。 次のサイクルでは、0.0059325 + 0.0059325 = 0.011865、0.011865 + 0.0059325 = 0.0177975などになります。
*- 重要な注意事項:この記事では、アンチエイリアシング(音を滑らかにする)の問題を省略しています。 これは個別の議論のトピックです
方形波

のこぎり波とは異なり、方形波の値は0または1のみになります。前の波の位相を使用してこの波を合成する方法を理解することは難しくありません。


三角波

のこぎり波の位相を三角波に変換するには、最初の値を負の値になるように変換してから、そのモジュールを取得する必要があります。 すべてが非常に単純です-ノコギリ波の位相から0.5を減算し、-0.5から0.5の値の範囲を取得し、この範囲の絶対値を取得して2を掛け、0から1の値の範囲に戻します。 。

正弦波

正弦波の合成はもう少し複雑です。 実際、正弦関数は、他の関数とは対照的に、主周期2πで連続的かつ周期的です。 1つの解決策は、テイラー級数を使用して正弦関数を拡張することです。 べき関数の無限和への変換。 次のようになります。

のこぎり波の位相を2πに変換し、変換用の関数をシフトすると、Reactorで次の図が表示されます。

この図では、合計6、120、5040、および362880は、3!、5!、7!の数の階乗です。 そして9! したがって、xは利便性のために使用されるクイックバス(追加メニューへの呼び出しを介して追加)であり、式の最後の数値変換は0〜1の使い慣れた範囲の関数への変換です。
使用したリソース
ウィキペディア :
波形
ピッチ
頻度
振幅
ナイキスト周波数
テイラーシリーズ
その他のリソース(私のプロジェクトを含む)-英語:
Reaktor For You Archive(Reaktorの記事の私のアーカイブ) *-ライセンスバージョンのユーザーのみ利用可能
Reaktorの公式フォーラムでの私のトピック:
初心者向けチュートリアル
コアレベルの音波
追加のリソース:
ロシアのReaktorコミュニティ