Nyquistによるプログラミング
- NyquistとLispプログラミングの紹介
- Nyquistによるプログラミング
- Nyquistプラグインの作成
NyquistがLispと異なっている点は、Nyquistはサウンドの作業に特化されているということです。だから、サウンドを生成したり、解析したり、操作したりするためのたくさんのビルトイン・プリミッティブや関数が用意されています。Audacityの中では、Nyquistの内蔵関数を使ってエフェクトを組み立てることが簡単にできます。
Nyquistでは、変数が数値や文字列を保持するのと同じぐらい簡単に、変数がサウンドを保持しています。サウンドをとても効率的に引き伸ばしたり、歪ませたり、結合させたりする関数が多く用意されています。 サウンドを "分解"することや個々のサンプルにアクセスすることさえ可能です。しかし、それはこのチュートリアルの範囲を超えています。
Nyquistの式をAudacityで試行するには、エフェクトメニューの中にある"Nyquistプロンプト"を使います。あなたが選択したオーディオは、sという変数に内蔵されています。そして、選択範囲はあなたが入力したNyquist式の結果と置き換わるでしょう。パート3では、Nyquistを使ってプラグインエフェクトを生成する方法を学びます。
シンセサイジング
次の関数はすべて新しいサウンドを生成します。あなたは"生成"プラグインエフェクトを作成するのに使うことができます。また、あなたはこれらの生成されたサウンドを、面白いエフェクトを生み出すために選択されたオーディオに結合することができます。
| (noise) | ホワイトノイズの発生 |
| (const value [duration]) | ホワイトノイズを生成します |
| (sine pitch [duration]) | 一定の(静寂)信号を生成します ピッチはMIDIノート番号であり、60が中央ドとなっています。 |
| (hzosc hz) | 指定されたピッチと長さのサイン波(sine wave)を生成します |
| (osc-saw hz) | 特定の周波数[Hz]のノコギリ波(sawtooth wave)を生成します |
| (osc-tri hz) | 特定の周波数[Hz]の三角波(triangle wave)を生成します |
| (osc-pulse hz bias) | |
| (pluck pitch) |
エンベロープ
Nyquistはエンベロープをサポートしています。サウンドにエンベロープを適用することによって、全長にわたって振幅をコントロールすることができます。エンベロープを構築する最も簡単な方法は、env関数を使うことです。それは合成された音楽の音を形成するために共通に使われる、7つの引数をとります。すなわちアタックタイム、ディケイタイム、リリースタイム、アタックレベル、ディケイレベル、サスティンレベル、そして全長です。下の図を見てください:下図をご覧ください:
サウンドにエンベロープを適用するには、mult関数を使います。もしsがサウンドならば、これはシンプルなエンベロープが適用されたサウンドとなります:
(mult s (env 0.1 0.1 0.2 1.0 0.5 0.3 1.0))
最も一般的なタイプのエンベロープのひとつは、ピースワイズ(piece-wise)リニア関数であり、pwl関数で生成することができます。pwl関数は、(タイム, 値)のペアで示される引数のリストをとります。引数には暗黙の初期値があり、(タイム, 値)のペアは、(0, 0)となります。最後の値は暗黙の0となります。最後のタイムは暗黙ではないため、常に奇数個の引数をもたなければなりません。例えば:
; symmetric rise to 0.7 (at time 1) and fall back to 0 (at time 2): (pwl 1.0 0.7 2.0)
サウンドの結合
mult関数を使えば2つのサウンドを掛け合わせることができ、add関数を使って2つのサウンド(又はエンベロープ)を足し合わせることができます。
フィルタ
Nyquistは一般的な内蔵フィルターを用意しています。ここによく使うフィルターを紹介します:
| (lp sound cutoff) | |
| (hp sound cutoff) | ハイパスフィルター(1次のバターワースフィルタ)。 カットオフ周波数は浮動小数点か信号(時変フィルタの場合)で、[Hz]で表します。 |
| (comb sound hz decay) | くし型フィルタをサウンドに適用します。周波数[Hz]の倍音成分を強調します。 |
| (alpass sound decay hz) | オールパスフィルター。くし型フィルタのようなレゾナンス効果なしにディレイエフェクトを生成します。 |
| (notch2 sound hz) |
サウンドの変形と結合
Nyquistでサウンドを変化させる方法のすべてを説明することは、この紹介的なチュートリアルの範囲を超えています。これらの関数はサウンドを直接変化させることはありませんが、Nyquistの環境を変化させます。これらの変更がサウンドに影響を与えるようにするには、cue関数を使わなければなりません。
| (stretch factor (cue sound)) | サウンドの長さを、与えられたfactorによってキューされた長さになるように変更します。 |
| (scale factor (cue sound)) | サウンドの振幅を、与えられたfactorによってキューされた振幅になるように増幅します。 |
| (loud dB (cue sound)) | サウンドのボリュームを、与えられたデシベル数によってキューされた量だけ増加又は減少させます。 |
| (at t (cue sound)) | 与えられたサウンドを、指定されたタイム(秒)で開始します。 これは無音を最初や最後に追加するのに使うのではなく2つかそれ以上のサウンドを結合するときに使います。 |
| (seq (cue s1) (cue s2)) | サウンドs2にサウンドs1が後続するというシーケンスを生成します。 |
| (sim (cue s1) (cue s2)) | 2つのサウンドが同時に再生されるように結合します。 |

