試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

LADSPAについて

Linux Audio Developer's Simple Plugin API (LADSPA)は、既存の音声データに対して様々なフィルタをかけたり、音声を生成したりといったことを行うプラグインAPI。これに基づいて作成されたプラグインを用いると、LADSPAに対応したアプリケーション全てで同じように利用できる*1

プラグインの入手

ディストリのパッケージになっているものが多い。他にもまだある。下はGentoo Linuxのパッケージ名だが、DebianUbuntuにも結構用意されているようだ。

  • ladspa-sdk
  • ladspa-cmt
  • caps-plugins
  • fil-plugins
  • mcp-plugins
  • rev-plugins
  • swh-plugins
  • tap-plugins

プラグインの配置場所と環境変数LADSPA_PATH

プラグインの標準的な配置場所は/usr/lib/ladspa/以下になる。対応ソフトウェアから利用する場合、この場所を環境変数LADSPA_PATHの値に設定しておく必要があるが、Gentoo Linuxでは自動的に設定されている。

プラグインの情報を取得

LADSPAプラグインは、ライブラリと同様、.soファイルという形で存在しているが、1つの.soファイルには複数のプラグインを含めることができるため、どのプラグインを使うのかをファイル名だけでは識別できない。
LADSPAプラグインには、プラグインを識別するためのユニークIDとラベルが存在する。このいずれかを指定することで、使用するプラグインが定まるのだが、これらは、プラグイン情報の取得を行うanalyzepluginというコマンドで行う。下の例では、IDが1950でラベルが「G2reverb」であることが分かる。更に、その他の様々な情報が取得できていることも分かる。

$ analyseplugin /usr/lib/ladspa/g2reverb.so

Plugin Name: "Stereo reverb"
Plugin Label: "G2reverb"
Plugin Unique ID: 1950
Maker: "Fons Adriaensen <fons.adriaensen@alcatel.be>"
Copyright: "GPL"
Must Run Real-Time: Yes
Has activate() Function: Yes
Has deativate() Function: Yes
Has run_adding() Function: No
Environment: Normal or Hard Real-Time
Ports:  "In L" input, audio
        "In R" input, audio
        "Out L" output, audio
        "Out R" output, audio
        "Room size" input, control, 10 to 150
        "Reverb time" input, control, 1 to 20
        "Input BW" input, control, 0 to 1
        "Damping" input, control, 0 to 1
        "Dry sound" input, control, -80 to 0
        "Reflections" input, control, -80 to 0
        "Reverb tail" input, control, -80 to 0

プラグインへの引数

上のanalyzepluginの例の出力結果の後ろのほうに「Ports:」というセクションがあり、その中に「control」を含む幾つかの項目があるのが分かる。この部分がプラグインへの引数に関する記述で、項目名とデータ範囲(例: 10 to 150)が指定されている。更にデフォルト値が表示されるものもあるが、データ範囲すら表示されないものもある。

引数の調整・テスト

実際の引数を色々といじって調整しながら値を決めてゆくことになるが、その際には、Audaciousのエフェクトプラグイン「LADSPA host」を使うことで、自由にLADSPAプラグイン(複数可)を登録でき、値もGUIでリアルタイムに設定・反映できるので便利。
(2008/1/16)JACK Audio Connection KitとJACK Rack(http://jack-rack.sourceforge.net/)を使用することでも色々なLADSPAプラグインを試すことができ、エフェクタとしての用途でも使える。

*1:AudaciousMPlayerのようなプレーヤーでは、再生フィルタとして、Audacityのようなオーディオエディタではデータを編集するフィルタ機能として、という違いはある