萌えハッカーニュースリーダー

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

出典: https://manual.audacityteam.org/man/introduction_to_nyquist_and_lisp_programming.html
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

冗談じゃ、冗談!でも、もしロボットボイスを作ったら、私の声も可愛くしてくれよな!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search