カスタム化したPortAudioに対応したAudacityのビルド方法

プログラミング

AudacityをASIO対応にするにはAudacityのソースコードを入手してビルドする必要があります。AudacityはAudio I/FへのアクセスにPortAudioを使用しているので、AudacityをASIO対応にすることは、PortAudioをASIO対応にすることになります。
Visual StudioでAudacityをビルドする場合、CMake、Conanでビルド環境を構築します。ASIO対応にするには、CMakeの”Configure”後に”audacity_has_asio_support”を
チェックして”Generate”、”Open Project”後にVisual Studioでビルドします。
CMakeの”Generate”の過程でASIO SDKを組み込んだPortAudioがビルドされ、生成されたDLLがAudacityのビルドディレクトリにコピーされます。また、~\.conan2ディレクトリ内のPortAudioのLibraryディレクトリがVisual Studioのプロジェクトに設定されます。
ここでは、ASIO対応Audacityのビルド方法とその際にPortAudioをカスタム化する方法をご紹介します。
Audacityのソースコードについては以下をご参照ください。

PortAudioについては以下をご参照ください。

ASIO SDKについては以下をご参照ください。

尚、ビルドした環境は以下になります。
・Windows 11 24H2
・Visual Studio Community 2022
・CMake 3.31.8 (最新版のバージョン4は"Generate"で失敗するのでVer3を使用しました。)
・Python 3.13.1
・Conan 2.17.1 (BUILDING.mdによるとAudacityが自動でインストールするとのこと。
インストールされない場合は手動でインストールしてください。)

下記手順が正しい方法かは分かりません。試行錯誤的に上手くいったのでご紹介します。

 1) ビルドするディレクトリを作成する。("audacity"とします)
2) AudacityのZIP形式のソースコードを上記URLから入手し1)のディレクトリに展開します。
執筆時点の最新版は3.7.4です。("audacity-3.7.4"とします)
gitのcloneではなく、"Releases"の"Latest"からZIP形式のソースコードを入手のこと。
3) "audacity-3.7.4"と同じ階層にBuildディレクトリ"build"を作成します。
ディレクトリ構成は以下のようになります。
audacity --- audacity-3.7.4 (audacityのソースディレクトリ)
|- build (ビルドディレクトリ)
4) CMake(cmake-gui)を起動します。
5) "Where is the source code"、"Where to build the binaries"を
以下のように設定します。(設定はフルパスです。)
"Where is the source code" audacity\audacity-3.7.4 (2)で展開したディレクトリ)
"Where to build the binaries" audacity\build (3)で作成したディレクトリ)
6) "Configure"を押下します。完了するとASIO対応ではないビルド済みのPortAudioが
ダウンロードされます。
7) "Configure"完了後、"audacity_has_asio_support"をチェックし"Generate"を押下します。
ここで
・PortAudioのソースがダウンロードされaudacity固有のpatchがPortAudioに当たり
・ASIOSDKがダウンロードされ
PortAudioがビルドされます。ASIOSDKはSteinbergからZIPファイルがダウンロードされ
所望の場所に展開されるようです。
"Generate"後のCMakeのウィンドウ下部のログをテキストエディタにコピーしておきます。

PortAudioをカスタム化する必要がなければ、以下の 8) - 13) は必要なく、14)の手順で
ビルドしてください。

8) ログからPortAudioが~\.conan2ディレクトリ内でビルドされていることが分かります。
ログから以下の部分を探します。
portaで始まるディレクトリ名は異なるのでご自身の環境に合わせてください。
Debug版
portaudio/19.7.0@audacity/stable: RUN: cmake --build "C:\Users\xxxx\.conan2\p\b\porta8034ea7c2a147\b\build" --config Debug
portaudio/19.7.0@audacity/stable: RUN: cmake --install "C:\Users\xxxx\.conan2\p\b\porta8034ea7c2a147\b\build" --config Debug --prefix "C:/Users/xxxx/.conan2/p/b/porta8034ea7c2a147/p"

Release版
portaudio/19.7.0@audacity/stable: RUN: cmake --build "C:\Users\xxxx\.conan2\p\b\porta872cc0d48601c\b\build" --config RelWithDebInfo
portaudio/19.7.0@audacity/stable: RUN: cmake --install "C:\Users\xxxx\.conan2\p\b\porta872cc0d48601c\b\build" --config RelWithDebInfo --prefix "C:/Users/xxxx/.conan2/p/b/porta872cc0d48601c/p"
 9) 8)からPortAudioのディレクトリが
C:\Users\xxxx\.conan2\p\b\porta8034ea7c2a147\b Debug版ディレクトリ
C:\Users\xxxx\.conan2\p\b\porta872cc0d48601c\b Release版ディレクトリ
であることが分かります。
10) PortAudioをカスタム化したい場合は、Debug版、Release版の
b\src\portaudio
内のソースコードをそれぞれ修正します。
Debug版、Release版それぞれのソースコードがあるので、両方に同じ修正を行います。
11) 修正後、8)の
"cmake --build ...."、"cmake --install ...."コマンド
をコマンドプロンプトで実行します。Debug版、Release版の両方実行します。
12) PortAudioがリビルドされ、portaudio_x64.dllが
Debug版 .conan2\p\b\porta8034ea7c2a147\p\bin
Release版 .conan2\p\b\porta872cc0d48601c\p\bin
に生成されます。
13) 12)で生成されたportaudio_x64.dllをaudacityのBuildディレクトリ内に
コピーします。
Debug版 audacity\build\Debug
Release版 audacity\build\Release
14) CMakeの"Open Project"押下でVisual Studioが起動しプロジェクトが開きます。
PortAudioのカスタム化に伴いaudacityのソースも修正する必要があれば、
ここで修正します。
所望の"ソリューション構成"、"ソリューションプラットフォーム"でビルドします。

当初、
・Audacityビルド時にどのディレクトリでどのタイミングでPortAudioがビルドされるのか
・Audacity固有のpatchがPortAudioに当たること
が分かりませんでしたが、CMakeの”Generate”時のログを確認して上記手順が分かりました。
以前は、
・ASIO SDKを自分でダウンロードして展開する
・ASIO SDKを展開したディレクトリをCMakeの”Add Entry”でPATHとして登録する
といった手順が必要でしたが、最近は上記の手順でASIO対応Audacityがビルドできるようです。
以上、ご参考になれば幸いです。

コメント

タイトルとURLをコピーしました