Audacity: フリーのサウンドエディタ・レコーディングソフトウェア

広告ポリシー

Nyquistプラグインの作成

  1. NyquistとLispプログラミングの紹介
  2. Nyquistによるプログラミング
  3. Nyquistプラグインの作成

NiquistでAudaciyのプラグインを作成するには、Niquistコードとプラグインのタイプ等を示すコメントを書いた、拡張子".ny" のテキストファイルを作成し、Audacityの plug-insディレクトリに置くだけで簡単にできます。 ここでは非常に簡単なプラグインのサンプルを示します:

  ;nyquist plug-in
  ;version 1
  ;type process
  ;name "Fade In"
  ;action "Fading In..."
  (mult (ramp) s)

Nyquistプラグインの1行目はこの例とまったく同じにする必要があります。2行目はVersion番号でなければなりません。Version 2および3プラグインはより多くのウィジットをサポートしますが、Audacityの1.3.3およびそれ以前のバージョンではVersion 3はサポートされません。次の行はこのプラグインのタイプで、これは後ほど説明します。その次はこのプラグインの名前でメニューバーに表示されるもので、その次は "action"で、これはAudacityがプラグイン実行中に表示されるものです。 さらにその他の行が続くこともあります。セミコロン (;) で始まる行以外はすべてNyquistコードを含んでおり実行されるものとして取り扱われます。

Audacityは3つのタイプのプラグインをサポートします。これらはNyquistの中に書かれます:

  ;type generate
  ;type process
  ;type analyze

これらは、そのプラグインが付加される3つのメニュー: 製作(Gnerate)、効果(Effect)、解析(Analyze)に対応しています。 Generateプラグインは新規にオーディオを発生させるもの、Effectプラグインは既存のオーディオ("処理")し変更するもの、そしてAnalyzeプラグインはオーディオを処理しますが変更は行わないものです。(ラベルを付加することはあります)

EffectおよびAnalyzeプラグインに対しては、Audacityはユーザーが選択したオーディオが変数sに読み込まれるようにNyquist環境を設定します。 プラグインファイルのすべての表現は順番に実行され、最後の表現の返り値がAudacityで選択されている部分を置き換えます。もし最後の表現がオーディオを返さない場合はAudacityはエラーを返します。

ダイアログメニュー

Audacityはプラグインがユーザーがパラメーターを設定するダイアログ画面を限定的にサポートします。以下はダイアログ画面を開くプラグインの一例です:

  ;nyquist plug-in
  ;version 1
  ;type process
  ;name "Delay..."
  ;action "Performing Delay Effect..."
  ;info "Demo effect for Nyquist by Roger Dannenberg.\nThis effect 
     creates a fixed number of echos."  ; (should be all on one line)
  ;control decay "Decay amount" int "dB" 6 0 24
  ;control delay "Delay time" real "seconds" 0.5 0.0 5.0
  ;control count "Number of echos" int "times" 5 1 30

  (defun delays (s decay delay count)
    (if (= count 0) (cue s)
	   (sim (cue s)
        (loud decay (at delay (delays s decay delay (- count 1)))))))
  (stretch-abs 1 (delays s (- 0 decay) delay count))

Audacityが最低ひとつの"control" 行を見つけた場合、Audacityはダイアログ画面を開きユーザーがプラグインに適切なパラメータを入力するのを促します。それぞれのパラメータはテキストボックスとスライダーからなっており、ユーザーがそれぞれに入力したあと最終的な値がNyquist内で"control" 行にて指定した名前の変数に読み込まれます。以下にLinux版Audacityにおけるこのディレイ効果のダイアログ画面の一例を示します:

Nyquistプラグインのスクリーンショット

"info"行がダイアログ画面の最上部に表示されており"\n" が改行になっていることに注意してください "control" 行のパラメータがパラメータの見え方と制限に影響しています。それぞれの "control" 行は正確に次の8要素が順番に並んでいる必要があります:

  1. キーワード "control"
  2. controlの名前 - これはユーザーがダイアログ画面を操作する際に設定されたり獲得されたりするNyquist変数名
  3. controlの左側に付けられるラベル
  4. 変数のタイプ: すなわちint (integer) またはreal
  5. 数値の右側に付けられるラベル(普通は"Hz" や "dB"などの単位)
  6. パラメータのデフォルト/初期値
  7. パラメータの最小値
  8. パラメータの最大値

ラベルを返す

Nyquistプラグインは、オーディオを返すかわりにラベルのリストを返すことができます。ラベルのリストは単純な時間/ラベルの組み合わせです。たとえば:

  ((0.0 "start") (30.0 "middle") (60.0 "end"))

プラグインが正確にこれと同じリストを返すと、Audacityは新しいラベルトラックを作り、これらのラベルをそれぞれの位置に配置します。この形式のプラグインは、普通"analyze"タイプで用いられます。

新機能! Audacity バージョン1.3.1以降では以下のように開始および終了時間を返すことができます:

  ((0.0 25.0 "start") (30.0 45.0 "middle") (60.0 75.0 "end"))

Audacity 1.3ではそれらのラベルが重なり合うことが可能です; すなわちある領域の終了時間が次の領域の開始時間でる場合です。

ステレオトラックの処理

Nyquistはステレオトラックを配列で表現します(リストではありません) 多くのNyquist関数は自動的にそのような配列でも使えますが、かならずしもそうではないので、場合によっては1つのステレオ配列を分割しなくてはならないこともあるでしょう。以下はいくつかの便利な関数です:

の最初の要素にする の2番目の要素にする
(arrayp s)sが配列の場合に真を返す
(aref s 0)配列sの最初の要素 - 左チャンネル
(aref s 1)配列sの2番目の要素 - 右チャンネル
(setf s (make-array 2))sという長さ2の新しい配列を作る
(setf (aref s 0) left)leftを配列s
(setf (aref s 1) right)rightを配列s

もしNyquistプラグインへの入力がステレオで、それに加わるサウンド出力がモノラルの場合、Audacityは自動的に右チャンネルと左チャンネルをコピーします。

さらに学習したい方のために

Audacityにはいくつかのプラグインのサンプルが含まれていますので、まず最初にそれらを確かめてみたり変更したりすることから始めることができます。Nyquistを学ぶ最良の方法はやってみることです。もしデバッグで問題が出た場合はスタンドアロン版のNyquist (パート1のリンクを参照)のダウンロードを検討してみてください。

もしNyquistがまったく動作しない場合はcontact usにご連絡ください。

もしあなたがNyquistプラグインを開発していて、他の人たちと共有したい場合、またNyquistである効果を得るにはどうすべきかとう議論を行いたい場合は、Nyquist board of the Forumに投稿されるか、あるいはaudacity-nyquist mailing listにご参加ください。

Nyquistのプログラミングについてより詳細に知りたい場合は、完全なNyquist 2.37 Reference Manualを参照することを忘れないでください。