Audacity ASIO対応にしてみる

AudacityをWin10で使うようにしてから、レイテンシーが毎回大きく変化してしまう。これでは多重録音ができない。 そこで、AudacityをASIO対応にすれば、改善されるはず。 ただし、ライセンスの関係から自分でコンパイルする必要がある。コンパイルにはマイクロソフトの巨大な開発環境であるVisualStudioが必須で、数G単位でHDDを食ってしまう。ということで放置状態が続いていた。 そこで代わりにCakewalkを使おうかと先週セッティングしたところ。

そんな中、たまたまAudaictyのASIO対応コンパイル手順が書かれたサイトを見つけてしまった。
AudacityをASIO対応でコンパイルする
VisualStudioの設定なんて自力ではできそうもないけど、ここまで日本語で丁寧に書かれていたら、何も知らなくても出来そうに思えてくる。ということでAudacityのASIO対応をやってみることにした。
結果は、開発環境さえ整ってしまえば簡単であった。 上記サイトとは若干違う方法を取ったので、以下に手順をメモっておく。


コンパイル手順

通常の最新版Audacity2.3.0をWindows10にインストール。すでに最新版がインストールされていれば、そのままにしておく。

下記ソフトウェアをダウンロード
1 Git (43.5MB これを使ってwxWidgetsとAudacityのソースファイルをダウンロードする)
2 ASIO SDK (4.70 MB)
3 Microsoft Visual Studio 2017 Community(C++ 1GB以上)


GITをインストール(NEXTをクリックしていくだけ)
コマンドプロンプトからGITを使ってwxWidgets(クロスプラットフォーム環境)とaudacityのソースをCドライブ直下にダウンロード。
CD C:\ 
git clone --recurse-submodules https://github.com/audacity/wxWidgets/
git clone https://github.com/audacity/audacity/


環境変数を登録
ASIOSDK_DIR c:\ASIOSDK2
WXWIN c:\wxWidgets

C:\wxWidgets\build\msw\wx_vc15.slnをVisualStudioで開く。
_custom_buildのビルド
ソリューション'wx_vc15'のソリューションのビルド

C:\audacity\win\audacity.slnをVisualStudioで開く。
Audacityのビルド

C:\audacity\win\Releaseに出来上がったAudacity.exeを通常版のAudacity.exeと差し替える。
C:\wxWidgets\lib\vc_dllにできたdllをすべてAudacityフォルダに入れる。もともとあったdllはすべてどこか別の場所に移動しておく。



以上でAudacityがASIO対応になった。

リンク先と違って、 あらかじめ通常版のAudacityをインストールしておく理由は、設定がそのまま継承できるから。いろいろカスタマイズしてあるので、それがクリアされるのが嫌だっという話。GitからダウンロードしたAudaictyは2.3.1alphaの最新版。



レイテンシはどうなった?

ASIOのおかげで、ばっちり再現性のある遅延となった。オーディオインターフェイスはタスカムのHU-7000を使っているのだが、レイテンシーモードが5つあって、それぞれ違うので、計測してみた。結果は以下の通り。

ASIO latency HU-7000 48000Hz 24bit(1sample=0.02msec)
highest latency 2620sample -54.6msec
high latency 1635sample -34.06msec
normal latency 1088sample -22.48msec
low latency 824sample -17.16msec
lowest latency 676sample -14.08msec

lowestでも10msecは切れないんだ。まぁAudacityで使う場合は、レイテンシーが短いことよりも再現性が重要なので、CPUへの負荷が少なく安定しているのが一番。今後試しながら決めていくが、ノーマル以上で使うと思う。