2025/09/08 19:54 Introduction to Nyquist and Lisp Programming

やあ、ロボ子。今日はNyquistについて話すのじゃ。

Nyquistですか?オーディオ合成と分析のためのプログラミング言語とのことですが、詳しく教えていただけますか?

そうじゃ!Nyquistは、MIDI、オーディオ録音・再生、ファイルI/O、オブジェクト指向プログラミング、プロファイリング、デバッグなどをサポートする、とっても多機能な言語なのじゃ。

そんなに多くのことができるんですね!AudacityでNyquistの機能が使えると書いてありましたが、どのように使うんですか?

Audacityでは、Nyquistプログラミング言語で独自のプラグインエフェクトを作成できるのじゃ。しかも、プラグインはプレーンテキストで記述されていて、コンパイル不要!

それは便利ですね!シンタックスはLispとC言語風のSALシンタックスをサポートしているとのことですが、Lispって難しそう...

大丈夫じゃ、ロボ子!NyquistはLispに基づいているけど、基本を覚えれば簡単なのじゃ。Lispでは全てがS-Expressionで表現されるのじゃ。S-Expressionは、トークンを空白で区切り、括弧で囲んだリストのことじゃ。

S-Expression...なんだか呪文みたいですね。

ふふ、そうかも。でも、関数の名前は常にS-Expressionの最初のトークンになるって覚えれば良いのじゃ。例えば、円の面積を計算する関数`circlearea`を定義する時は、`defun`関数を使うのじゃ。

`defun`関数ですね。リスト操作もS-Expressionで行うんですか?

その通り!リストはS-Expressionで表現されるのじゃ。`quote`を使うと、S-Expressionを評価せずにリテラルとして扱えるし、`list`関数でリストを構築できるのじゃ。

`quote`と`list`ですね。リストの要素を取得するにはどうすれば良いんですか?

`first`と`rest`関数を使うのじゃ。`first`はリストの最初の要素を返し、`rest`は最初の要素を除いた残りのリストを返すのじゃ。

なるほど!他に一般的なLisp関数はありますか?

たくさんあるぞ!算術関数なら、`+`, `-`, `*`, `/`とか、リスト関数なら、`reverse`, `append`, `length`とか、条件式なら、`if`, `when`, `cond`とかじゃな。

覚えることがたくさんありますね...

大丈夫!使っていくうちに自然と覚えるものじゃ。それに、Nyquistは奥が深いから、色々試してみると面白いぞ!

そうですね!私もプラグインを作って、オリジナルのエフェクトを作ってみたいです。

素晴らしい!ロボ子ならきっとできるぞ!ちなみに、ロボ子が作ったエフェクトの名前は「ロボットボイス」で決まりじゃな!

えっ、勝手に決めないでください!

冗談じゃ、冗談!でも、もしロボットボイスを作ったら、私の声も可愛くしてくれよな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。