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

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

ALSA Patch BayのLADCCA対応をLASH対応にする実験

LADCCAに対応しているが、LASHになってから対応されず放置されている例として、ALSA Patch Bay(http://pkl.net/~node/software/alsa-patch-bay/)がある。ALSA MIDIポートとJACK Audio Connection Kitのポートを接続するためのGUIツールで、機能や使い勝手はQjackCtlに劣るが、今回、実験として、これをLASHに対応させる移植?をすることにした。
LASHのAPIは(特定のバージョンの?)LADCCAと下位互換があるのか、ヘッダファイルや型・関数などの名前には変更*1があるものの、その名前変更以外には特に変更を行うことなく済み、ビルドも通ってセッションの動作もきちんとする。
関連記事:

以下はソースの修正点。configureMakefile.inMakefile.amにも変数名の修正をしてあるが、パッチのサイズが無駄に増えないようにするため、autoconfautomakeは実行せず*2、単純に置換しているだけ。
長さの都合でbzip2圧縮 + Base64エンコードして貼り付けてある。
[base64][任意]ファイル名: alsa-patch-bay-1.0.0-lash.patch.bz2.b64

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
uSKcKEhWue4HAA==

上の修正では、LASHのAPIに合わせるための名前変更以外に、LASH Control Panel上でクライアント名が表示されない件に対処している(が、複数起動すると名前無しが出てしまうようだ)。

該当コードは

lash_event_t *event;
(中略)
event = lash_event_new_with_type(LASH_Client_Name);
lash_event_set_string(event, PACKAGE_NAME);
lash_send_event(lash_client, event);

の部分。
また、今回の件とは関係ないが、x86_64上ではコンパイラオプションに-fPICが無いとビルドエラーになるため、以下の修正も必要。
[base64][任意]ファイル名: alsa-patch-bay-1.0.0-x86_64.patch.bz2.b64

QlpoOTFBWSZTWYPBWBkAAorfgAAQQA/6wm/u3OC//98gQAIcAADAAAAADQaANANAYAAAAAaDQBoB
oDAAAAADQaANANAFU1JGhTw1GpppiaG9U0DDI1NGj1MK5YVCDgSkJSENWFWo7zqv5+yu07C4uHaQ
+hp010qo2FVt/ckknJtkkkoyG0lOh1KzC44hlLU3hancEOsOsNwQZOD0tZaS1pFsDeOAgscMyIiI
iYgwDFqdq7mlSsirlYKo+mONq+OJidhdRjTEvLqaDqIqjvVTOLZe+mlddJZyclzWMtoQhCEMhkLC
4h4qWLEIX3khnH5KLlrhLWJDYN47lU3i+mYbXgqlyngG9Sw3D2CzdSymtT2jLVM5IRTUPIRgKXhX
kPUp6GsOYMD1D0DpD7B/Q8D5GYeoeIcR0GinibwzFhCtwcR/jYM4bgsLy/CREwCGgLFMx5mwyBoG
sNRrHOHEYDlKYBrCx5laDSMgf8XckU4UJCDwVgZA

関連記事:

使用したバージョン:

  • ALSA Patch Bay 1.0.0(1.0.0-r1)
  • LASH 0.5.4

*1:主に「cca」が「lash」もしくは「LADCCA」が「LASH」に置き換わっている

*2:処理に関係のない部分でファイル内容に違いが出てしまう