ASIOオーディオデバイス・テストプログラム
(ASIOオーディオ・インターフェース・テストプログラム)
- このページからダウンロード可能なプログラムは一般の方向けのものではありません. Windowsパソコンのオーディオデバイスを使ったシステムを業務用途・研究開発用途に使用されている方のためのものです.
- 現在主流のUSB接続タイプの外付けオーディオデバイスのテスト/特性測定に用いた場合、バス(PCIe, PCI etc)接続タイプのサウンドボードには見られない変わった特性が観察されることがありますが、一般的な用途ではそれが音質に与える悪影響はありません.(人間の聴覚では音質の違いを検知不能です) オーディオ・マニアやDTMをされている一般の方が細かいことを気にする必要はありません.
- DTMをしていてレイテンシが気になるので測定したいという方は、フリーソフトの RTL Utility を使う方が便利です.
- Windows PCのオーディオデバイスの遅延測定、周波数特性の測定をおこないます. 測定対象はASIO対応/ASIOデバイスドライバのあるオーディオデバイスです.
- 測定時のサンプリング周波数は48kHzです.
- ステレオ入出力の左チャネルだけを測定に使用します. 測定時にはD/Aの左チャネル出力とA/Dの左チャネル入力をケーブルで短絡してください.(ループバック接続)
4ch以上のマルチ・チャネルのオーディオデバイスの場合、入出力ともに最初のチャネルを使用します.
- 動作環境は64bitのWindowsです. 動作確認はWindows7(64bit)でおこなっています.
- PortAudioとOpenBLASを用いて作成しています. プログラム作成にあたってOpenBLASのヘッダファイル(cblas.h, f77blas.h etc)は使用していません.
- オープンソース・ソフトウェアではありません. ソースコードは公開していません.
- 無保証です. いわゆる as is で公開しているプログラムです.
- プログラムを作成した目的は下記のとおりです.
- パソコンのCPU負荷の変動による、入出力の遅延(latency)の変動の確認のため.
- USB接続の外付けのオーディオデバイスの中にはクロックの同期処理を手抜きしている製品が多いのですが、手抜きの影響の確認のため. きちんとしたクロック同期処理をしている製品と、そうでない製品とを識別するため.
- プログラムのダウンロード asio_test_v3.zip (12Mbyte)
- アーカイブ(asio_test_v3.zip)の内容
- asio_list.exe
ASIO対応オーディオデバイスの一覧、PortAudioのデバイス識別のためのインデックス番号を表示するプログラムです
以下の測定プログラムはこの表示されるリストの最初のオーディオデバイスを使用します.
- asio_latency.exe
遅延(latency)測定をおこなうプログラムです
- asio_response.exe
システム同定の構成の適応フィルタを用いて周波数特性の測定をおこなうプログラムです(縦軸+1/-2dB)
latency変動が多い場合は正常な測定結果が得られません
- asio_rt_response.exe
TSP(Time Stretched Pulse)を用いて周波数特性の測定をおこなうプログラムです(縦軸+1/-2dB)
- asio_rt_response30db.exe
TSP(Time Stretched Pulse)を用いて周波数特性の測定をおこなうプログラムです(縦軸±30dB)
- portaudio_x64.dll
PortAudioのDLLです. すべてのプログラムの実行に必要です.
- libopenblas.dll
OpenBLASのDLLです.
- readme.html
簡単な説明のhtmlです
- 設定
- 実行プログラム(exe)とDLLはすべて同じディレクトリに入れてください.
- 念のために測定対象のオーディオデバイスはWindowsのサウンドの設定を無効にしておいてください.(ASIOはWindowsの標準のサウンドシステムを回避してオーディオデバイスを直接制御しますが念のため)
- コマンドライン・オプション(起動時オプション)
- asio_list.ext 以外はコマンドラインから -h オプションをつけて起動すると、その他のオプション設定の方法の簡単な説明が表示されます.
- asio_response.exe, asio_rt_response.exe の -t オプションはプログラム内部でソフト的にループバックしてテストするためのものです.(微少量の遅延とBPFを経由してループバックしています)
このオプションを使って、測定結果の乱れの原因がPCの処理能力不足によるものかどうかの確認が出来ます. -t オプションでのテストに問題がなければ、オーディオデバイスの特性測定結果の乱れは、オーディオデバイスそのものかUSBインターフェースに起因するものと判断できます.
- asio_list.exe
- パソコンに接続されているASIO対応オーディオデバイスの一覧を表示します.
- インデックス番号(PortAudio device index)はPortAudioがデバイス識別のために任意につける番号です. 同じデバイスが常に同一の番号となるわけではありません. 測定プログラムで明示的にオーディオデバイスを指定する場合に使用します.
- asio_latency.exe
- ASIO対応オーディオデバイスの出力と入力を直結(ループバック接続)して遅延測定をおこないます. 左チャネルの出力/入力を使用するので、測定前にケーブルで直結してください.
- クリップしなければ入出力の信号レベルの設定は適当でかまいません.
- 測定時のサンプリング周波数は48kHzです.
- グラフ表示されるのはシステム同定の構成の適応フィルタを用いて測定したインパルス・レスポンスです. 被測定系の周波数特性が完全に平坦ではないので、理想的なインパルスではなく少し鈍って尾を引くパルス波形が表示されます.
- テスト信号には白色雑音を用いています. 適応フィルタのステップサイズ・パラメータμの値が小さい(時定数が長い)ので、グラフ表示が安定するまで少し時間がかかります.
- グラフ表示が正常に更新されていることが分かるように、意図的に画面がちらつくようにしてあります.
- プログラムを終了するときは、Escキーを押してください.
- コマンドラインからオプション -h をつけて起動すると、下記の簡単なヘルプ画面が表示されます.
- オプション -d でASIOオーディオデバイスの明示的指定が出来ます. asio_list.exeで表示される PortAudio device
index の値を指定してください. オプション指定が無ければPortAudioが最初にリストアップしたオーディオデバイスが使用されます.
- オプション -b でASIOのバッファサイズを指定できます. オプション指定が無ければバッファサイズは 64 になります.(オプション -b64
と同じ)
指定が無効になる場合や、デバイスドライバ側のバッファサイズ指定の方が優先される場合もあります.
指定可能なすべてのバッファサイズでインパルスレスポンス測定が出来るわけではありません. 遅延が表示範囲の上限(20.8ms)を越える場合は測定不能になります.
- オプション -o でグラフの上書きモードになります.(過去の測定結果のグラフ表示を消去しません) 上書きモードで遅延の変動を確認することが出来ます. キーボードからの「e」または「r」入力でグラフを消去/リフレッシュします. ブラウザを立ち上げて他のオーディオデバイスでマルチメディア再生したりすると、遅延が大きく変動するのが分かります.
- asio_response.exe
- ASIO対応オーディオデバイスの出力と入力を直結(ループバック接続)して周波数特性の測定をおこないます. 左チャネルの出力/入力を使用するので、測定前にケーブルで直結してください.
- クリップしなければ入出力の信号レベルの設定は適当でかまいません.
- 測定時のサンプリング周波数は48kHzです.
- グラフ表示されるのはシステム同定の構成の適応フィルタの係数をFFTして求めた周波数特性です. latency変動が多い場合は正常な測定結果が得られません.
- テスト信号には白色雑音を用いています. 適応フィルタのステップサイズ・パラメータμの値が非常に小さい(時定数が長い)ので、適応フィルタが収束してきちんとした測定結果のグラフが表示されるまでかなり時間がかかります.
- 縦軸の表示範囲は3dBです.
- プログラムを終了するときは、Escキーを押してください.
- コマンドラインからオプション -h をつけて起動すると、下記の簡単なヘルプ画面が表示されます.
- オプション -d でASIOオーディオデバイスの明示的指定が出来ます. asio_list.exeで表示される PortAudio device
index の値を指定してください. オプション指定が無ければPortAudioが最初にリストアップしたオーディオデバイスが使用されます.
- オプション -b でASIOのバッファサイズを指定できます. オプション指定が無ければバッファサイズは 64 になります.(オプション -d64
と同じ)
指定が無効になる場合や、デバイスドライバ側のバッファサイズ指定の方が優先される場合もあります.
- asio_rt_response.exe
- ASIO対応オーディオデバイスの出力と入力を直結(ループバック接続)して周波数特性の測定をおこないます. 左チャネルの出力/入力を使用するので、測定前にケーブルで直結してください.
- クリップしなければ入出力の信号レベルの設定は適当でかまいません.
- 測定時のサンプリング周波数は48kHzです.
- グラフ表示されるのはTSP(Time Stretched Pulse)を出力してループバックされた信号のFFTにより求めた周波数特性です.
- テスト信号のTSPの周期が2048サンプルと短いので、周波数特性の時間的な揺らぎを観察できます.
- 縦軸の表示範囲は3dBです.
- プログラムを終了するときは、Escキーを押してください.
- コマンドラインからオプション -h をつけて起動すると、下記の簡単なヘルプ画面が表示されます.
- オプション -d でASIOオーディオデバイスの明示的指定が出来ます. asio_list.exeで表示される PortAudio device
index の値を指定してください. オプション指定が無ければPortAudioが最初にリストアップしたオーディオデバイスが使用されます.
- オプション -b でASIOのバッファサイズを指定できます. オプション指定が無ければバッファサイズは 64 になります.(オプション -d64
と同じ)
指定が無効になる場合や、デバイスドライバ側のバッファサイズ指定の方が優先される場合もあります.
- asio_rt_response30db.exe
- asio_rt_response30db.exe と同じ測定をおこないますが、グラフ表示の縦軸が±30dBになります.
- USB接続の外付けのオーディオデバイスの周波数特性を測定した時に、低域で周波数特性が波打つのはクロックの同期処理を手抜きしているからです.
- asio_response.exe と asio_rt_response.exe の測定結果(グラフ表示)に低域で差が出るのも同期処理の手抜きの影響です.
- A/D・D/Aコンバータ内蔵のアンチエリアジング・フィルタ(多段マルチレート構成のデジタル・フィルタ)の帯域全体の特性のうねりが観測される場合がありますが、±0.2dB〜0.3dB程度におさまっていれば問題はありません.(うねりの発生を許容するか否かは設計ポリシーによります)
- USBのデータ転送レートとΔΣ型A/D・D/Aコンバータのサンプリング・クロックとの正確な同期が取れずに、間欠的なサンプルの間引き、同一サンプル値の繰り返し等の処理をしている製品では、結果としてA/DとD/Aのサンプリング周波数の微妙なズレ、A/DとD/Aのサンプリング・タイミングのドリフトがあるかのような測定結果になります.
- ソフト的な同期処理の手抜きをする代わりに非同期サンプルレート・コンバータのLSIを用いている製品もあります.
- デジタルオーディオ・インターフェース(DAI)やワードクロックの入出力にも対応してマスター/スレーブ動作の切り替えが可能な製品の中にはきちんとした同期処理をおこなっているものがあります.
- まだ購入・実測はしていませんが、アナログ入出力だけのUSBオーディオデバイスにも例外的にカタログで同期処理の問題は無いとうたっているものがあるようです.
PortAudioのライセンス表記は下記のとおりです.
PortAudio Portable Real-Time Audio Library
Copyright (c) 1999-2011 Ross Bencina and Phil Burk
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
OpenBLASのライセンス表記は下記のとおりです.
Copyright (c) 2011-2014, The OpenBLAS Project
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
3. Neither the name of the OpenBLAS project nor the names of
its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
libffiのライセンス表記は下記のとおりです.
libffi - Copyright (c) 1996-2022 Anthony Green, Red Hat, Inc and others.
See source files for details.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
``Software''), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- 手持ちの各種製品の測定結果を以下に示します. いずれも少し古いもので、最新カタログに載っている現役製品ではありません.
- 長時間連続運転して遅延を観察すると、いずれの製品も遅延変動があることが分かります. 非常に不安定な製品もあれば、プロセッサの負荷や他のマルチメディア系のアプリケーションが動作した時に遅延変動が生じるものもあります. いずれにせよ、遅延変動がゼロであることを保証出来る製品はありません.
サンプリング周波数が高い(48kHz)ので、一般的な高域下降特性を有する広帯域信号を聞いている限りは聴感的にゆるやかな遅延変動をまったく検知出来ません.(間欠的なサンプルの間引きや同一サンプル値の繰り返しがあっても分からない)
- 起動直後には遅延が安定しない製品もあります. 少し時間をかけてバッファ制御が安定化するという感じです.
- けっこう特徴的な挙動を示す製品もあって、研究開発用途にUSB接続オーディオインターフェースを用いる場合、実際に測定をしてみるまで使い物になるかどうかは分からないということが分かると思います.
- 入力2ch(エレキギター用Hi-Z入力1ch、Hi-Z/マイク兼用入力1ch)、出力2chの製品
- 海外のオーディオ関連専門サイトの評価・内部解析レポートで電気的設計はあまり良く無いとされていた製品です.
- 遅延はバッファサイズ128で約33msでした.
- この製品だけ周波数特性が酷くて、グラフ表示範囲を変更した測定プログラムを用いました.
少し異常な周波数特性です.
- 入力2ch(エレキギター用Hi-Z/マイク兼用入力1chとライン入力2chの排他使用)、出力2chの製品
- 日本メーカーの製品です. 同クラスの製品と比較して遅延が大きいのですが、その代わりに遅延変動が非常に少なく安定しているのが特徴です.
遅延はバッファサイズ128で約28msでした.
ASIO_response.exe での周波数特性測定結果
低域の周波数特性のうねりは、サンプリング・クロックのドリフト、A/D・D/Aのサンプリング・タイミングのズレ/ドリフトに起因するものと考えられます.
ASIO_rt_response.exe での周波数特性測定結果
- 入力2ch(エレキギター用Hi-Z/マイク兼用入力2ch)、出力2chの製品
- アッテネータがついているのでマイク入力端子をライン入力としても使用可能です
ASIO_response.exe での周波数特性測定結果
低域の周波数特性のうねりは、サンプリング・クロックのドリフト、A/D・D/Aのサンプリング・タイミングのズレ/ドリフトに起因するものと考えられます.
ASIO_rt_response.exe での周波数特性測定結果
ASIO_letency.exe での遅延測定結果
- 入力10ch(エレキギター用Hi-Z/マイク兼用入力2ch、ライン入力6ch、S/PDIF デジタル入力2ch)、出力14ch(ライン出力10ch、ヘッドホン出力2ch、S/PDIFデジタル出力2ch)の製品
- アッテネータがついているのでマイク入力端子をライン入力としても使用可能です.
- ヘッドホン端子も独立した出力端子として扱えるようになっています.
- S/PDIFデジタル入力信号に同期可能なので、専用のクロック・ジェネレータを自作すれば任意のサンプリング周波数でアナログ入出力可能です.(たとえばfs=200kHz,
100kHz, 50kHzでもA/D・D/A可能) ワードクロック入力端子を備えたもっと高級な製品は、普通のファンクション・ジェネレータをクロック源にして任意サンプリング周波数で動作できます.
- ミキサーやイフェクタとしての機能もついていて、かえって実験用には扱いづらいところがあります.
ASIO_response.exe での周波数特性測定結果
低域の周波数特性の細かいうねりは、サンプリング・クロックのドリフト、A/D・D/Aのサンプリング・タイミングのズレ/ドリフトに起因するものと考えられます.
全体の周波数特性のゆるやかなうねりは、使用しているA/D・D/Aコンバータ内蔵のデジタル・フィルタ(多段マルチレート構成フィルタ)によるものと考えられます. 微小な周波数特性のうねりを許容する設計をしているというだけであって、問題視する必要はありません.
ASIO_rt_response.exe での周波数特性測定結果
ASIO_letency.exe での遅延測定結果
この製品はバッファサイズの指定を変えても、遅延はほとんど変化しません.
他の製品とは異なるバッファ(FIFO/リング・バッファ)制御をしているものと思われます.
- 内部ループバックでの測定結果
- 周波数特性測定プログラム自体に問題が無いことを確認するために、-t オプションを使ってプログラム内部でソフト的にループバックして測定した結果です.
ループバック経路には2サンプルの遅延とデジタル・フィルタ(BPF, fc=20Hz/3980Hz)を挿入してあります.
- 接続したオーディオインタフェースは測定中も動作しています.
ASIO_response.exe での周波数特性測定結果
測定プログラムに問題はありません.
問題が出るようであれば、使用しているPCの処理能力不足です.
ASIO_rt_response.exe での周波数特性測定結果
測定プログラムに問題はありません.
問題が出るようであれば、使用しているPCの処理能力不足です.