Main Content

From Audio Device

コンピューターのオーディオ デバイスからオーディオ データを読み取る

互換性

メモ

From Audio Device ブロックは将来のリリースで削除される予定です。ブロックの既存のインスタンスは引き続き実行できます。新しいモデルでは、代わりに Audio Toolbox™ の Audio Device Reader ブロックを使用するようにしてください。

  • From Audio Device block

ライブラリ

ソース

dspsrcs4

説明

From Audio Device ブロックは、オーディオ デバイスからリアルタイムでオーディオ データを読み取ります。このブロックを Simulink® Model ブロックと併用することはサポートされません。

[デバイス] パラメーターを使用して、オーディオを取得するデバイスを指定します。このパラメーターは、システムにインストールされているオーディオ デバイスに基づいて自動的に入力されます。オーディオ デバイスをシステムに接続または接続解除する場合、MATLAB® コマンド プロンプトで「clear mex」と入力して、このリストを更新します。

[チャネル数] パラメーターを使用して信号のオーディオ チャネル数を指定します。次に例を示します。

  • オーディオ ソースが 2 チャネル (ステレオ) の場合、2 を入力。

  • オーディオ ソースが 1 チャネル (モノ) の場合、1 を入力。

  • 5.1 スピーカー システムを使用している場合、6 を入力。

ブロックの出力は M 行 N 列の行列で、M は連続するサンプル数、N はオーディオ チャネル数です。

[サンプル レート (Hz)] パラメーターを使用して、信号の 1 秒あたりのサンプル数を指定します。オーディオ データが未圧縮のパルス符号変調 (PCM) 形式で処理される場合、通常は次の標準オーディオ デバイス レートのいずれかでサンプリングされる必要があります。8000、11025、22050、44100 または 48000 Hz。

サポートされるオーディオ デバイスのサンプル レートとデータ型の形式の範囲は、サウンド カードとサウンド カード用に選択された API の両方によって異なります。

[Device data type] パラメーターを使用して、デバイスがバッファーに配置しているオーディオ データのデータ型を指定します。以下の選択肢があります。

  • 8-bit integer

  • 16-bit integer

  • 24-bit integer

  • 32-bit float

  • Determine from output data type

[Determine from output data type] を選択する場合について、次の表は、ブロックの動作をまとめています。

出力データ型デバイスのデータ型
倍精度浮動小数点または単精度浮動小数点32 ビット浮動小数点
32 ビット整数24 ビット整数
16 ビット整数16 ビット整数
8 ビット整数8 ビット整数

[Determine from output data type] を選択した場合に、デバイスでデータ型がサポートされていなければ、ブロックはデバイスでサポートされている、次に精度が低いデータ型を使用します。

[Frame size (samples)] パラメーターを使用して、ブロックの出力内のサンプル数を指定します。[出力データ型] パラメーターを使用して、ブロックのオーディオ データ出力のデータ型を指定します。

このブロックに対して生成されたコードは、プリビルドされる .dll ファイルに依存しています。このコードは MATLAB 環境外で実行したり、再展開したりできますが、その際にはこれらの追加 .dll ファイルについても必ず説明してください。関数 packNGo は、このコードの実行またはリビルドに必要なすべての要素を含んだ単一の zip ファイルを作成します。詳細については、packNGo (Simulink Coder) を参照してください。

バッファリング

From Audio Device ブロックは、次の図で説明されている手順でオーディオ デバイスからデータをバッファリングします。

  1. シミュレーションの開始時に、オーディオ デバイスはバッファーに入力データを書き込み始めます。このデータは [Device data type] パラメーターで指定されたデータ型をもちます。

  2. バッファーが満杯になると、From Audio Device ブロックはバッファーのコンテンツをキューに書き込みます。[Queue duration (seconds)] パラメーターを使用して、このキューのサイズを指定します。

  3. オーディオ デバイスがオーディオ データをキューの一番下に追加していくにつれて、From Audio Device ブロックはキューの一番上からデータを取得して Simulink フレームを埋めていきます。このデータは [出力データ型] パラメーターで指定されたデータ型をもちます。

[Automatically determine buffer size] チェック ボックスをオンにすると、ブロックで次の方程式を使って保守的なバッファー サイズを計算できるようになります。

size=2log2sr10

この方程式では、size はバッファー サイズ、sr はサンプル レートです。このチェック ボックスをオフにすると、[バッファー サイズ (サンプル)] パラメーターがブロックに表示されます。このパラメーターを使用して、サンプルでのバッファー サイズを指定します。

シミュレーションのスループット レートがハードウェアのスループット レートよりも低い場合、最初は空だったキューが埋まっていきます。キューが満杯になると、ブロックはオーディオ デバイスから受信するデータを削除します。オプションの Overrun 出力端子を使用して、除外されたサンプルを監視できます。シミュレーションのスループット レートがハードウェアのスループット レートよりも高い場合、From Audio Device ブロックは新しいサンプルが使用可能になるのを待機します。

チャネル マッピング

"チャネル マッピング" という用語は、選択したオーディオ デバイス上のチャネルをデータのチャネルに関連付ける 1 対 1 のマッピングを意味します。チャネル マッピングにより、オーディオの録音時にどのオーディオ データのチャネルが、特定のオーディオ チャネルに入力を誘導するかを指定できるようなります。チャネル マッピングは、読み取られるデータの各チャネルに対応するオーディオ チャネル インデックスのベクトルとして指定できます。[デバイスの入力チャネル] パラメーターの既定値は 1:MAXINPUTCHANNELS です。既定のマッピングを選択しない場合、ダイアログ ボックスで [デバイスの入力チャネル] パラメーターを指定しなければなりません。

例:選択した入力オーディオ デバイスには 8 チャネルが含まれています。データの読み取りは 2、4、6 チャネルのみから行い、データを次のようにリダイレクトします。

  • オーディオ デバイス チャネル 2 を最初のデータ チャネルへ

  • オーディオ デバイス チャネル 4 を 2 番目のデータ チャネルへ

  • オーディオ デバイス チャネル 6 を 3 番目のデータ チャネルへ

したがって、[デバイスの入力チャネル] を [2 4 6] と指定します。

トラブルシューティング

リアルタイムで対応できない

Simulink がリアルタイムで動作中のオーディオ デバイスに対応できない場合、キューが満杯になり、ブロックではオーディオ データが失われ始めます。[Output number of samples by which the queue was overrun] チェック ボックスをオンにして、キューが満杯であったことを示す出力端子を追加します。この状況に対応するためのいくつかの方法を以下に示します。

  • "キューの持続時間を長くする"。

    [Queue duration (seconds)] パラメーターは、シミュレーション中にバッファリングできる信号の持続時間を秒単位で指定します。これは、ハードウェアのデータ供給よりもブロックのデータ要求が遅延できる時間の最大長です。

  • "バッファー サイズを大きくする"。

    オーディオ デバイスからの各割り込みで処理されるバッファー サイズはモデルのパフォーマンスに影響します。バッファーが小さすぎる場合、ハードウェア リソースの大部分はデータをキューに書き込むために使用されます。バッファーが大きすぎる場合、Simulink は、データがキューに移動される前にデバイスでバッファーが満杯になるまで待機しなければならないため、レイテンシが発生します。

  • "シミュレーションのスループット レートを増加する"。

    シミュレーションのスループット レートを改善する 2 つの有効な方法は、信号のフレーム サイズを大きくすることと、シミュレーションをネイティブ コードにコンパイルすることです。

    • モデル全体でフレーム サイズを大きくしてサンプルベースの信号をフレームベースの信号に変換すると、ブロック間の通信オーバーヘッドの量が減少します。多くの場合、これによってスループット レートが増加します。ただし、通常はフレーム サイズが大きくなるほど、初期のバッファリング操作のためにモデルのレイテンシが大きくなります。

    • Simulink Coder™ コード生成ソフトウェアを使用して実行可能ファイル コードを生成します。ネイティブ コードは Simulink よりもずっと高速で実行されるため、リアルタイムでのオーディオ処理に適切なレートが提供されるはずです。

スループット レートを向上させる別の方法として、モデルを簡略化してより高速なプロセッサのコンピューター上でシミュレーションを実行します。シミュレーションのパフォーマンスを向上させる他の方法については、Delay and Latencyおよびパフォーマンスの最適化 (Simulink)を参照してください。

MATLAB 外での実行可能ファイルの実行

生成されたスタンドアロン実行可能ファイル アプリケーションをシェルで実行するには、次のように環境を設定する必要があります。

プラットフォームコマンド
Mac

setenv DYLD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/maca64 (csh/tcsh on Apple silicon)

export DYLD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/maca64 (Bash on Apple silicon)

setenv DYLD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/maci64 (csh/tcsh on Mac Intel®)

export DYLD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/maci64 (Bash on Mac Intel)

Linux

setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/glnxa64 (csh/tcsh)

export LD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/glnxa64 (Bash)

ウィンドウ

set PATH = $MATLABROOT\bin\win64;%PATH%

オーディオ ハードウェア API

指定コンピューター上のオーディオ ハードウェアと通信するために、To Audio Device ブロックと From Audio Device ブロックではオープンソースの PortAudio ライブラリを使用します。PortAudio ライブラリは、指定プラットフォーム上のオーディオ ハードウェアとの通信用に設計された、さまざまな API をサポートします。DSP System Toolbox™ 製品の PortAudio ライブラリの構築時に、次の API が選択されました。

  • Windows®:DirectSound、WDM—KS、ASIO™

  • Linux®:OSS、ALSA

  • Mac: CoreAudio

Windows の既定の設定は DirectSound、Linux の既定の設定は ALSA ですが、Mac の選択肢は 1 つのみです。

現在選択されているオーディオ ハードウェア API を特定するには、MATLAB コマンド プロンプトで次のコマンドを入力します。

getpref('dsp','portaudioHostApi')   
出力は API の選択を示すスカラー値となります。

  • 1 — DirectSound

  • 3 — ASIO

  • 7 — OSS

  • 8 — ALSA

  • 11 — WDM-KS

特定の API を選択するには、MATLAB コマンド プロンプトで次のコマンドを入力します。

setpref('dsp','portaudioHostApi',N)   
ここで N はスカラー値です。上記の API 選択に基づいて N を選択します。

パラメーター

デバイス

オーディオ データを取得するデバイスを指定します。

Use default mapping between Device Input Channels and Data

このチェック ボックスをオンにすると既定のマッピングになります。オーディオ デバイスの最初のチャネルからのデータは、入力データの最初のチャネルが送信先となり、オーディオ デバイスの 2 番目のチャネルからのデータは、同様にデータの 2 番目のチャネルが送信先となります。入力データの最大チャネル数は [チャネル数] プロパティで決定されます。

チャネル数

オーディオ チャネル数を指定します。このパラメーターは [Use default mapping between Device Input Channels and Data] チェック ボックスが有効になっている場合に表示されます。

デバイスの入力チャネル

チャネル マッピングを指定します。このパラメーターは [Use default mapping between Device Input Channels and Data] チェック ボックスが無効になっている場合に表示されます。

サンプル レート (Hz)

信号での秒単位のサンプル数を指定します。

Device data type

デバイスがオーディオ データの取得に使用するデータ型を指定します。

Automatically determine buffer size

このチェック ボックスをオンにして、ブロックが保守的なバッファー サイズを使用できるようにします。

バッファー サイズ (サンプル)

ブロックがオーディオ デバイスとの通信に使用するバッファー サイズを指定します。このパラメーターは [Automatically determine buffer size] チェック ボックスがオフになっている場合に表示されます。

Queue duration (seconds)

キューのサイズを秒単位で指定します。

Output number of samples by which the queue was overrun

このチェック ボックスをオンにして、前回のオーディオ デバイスからのフレーム転送以降、キューのオーバーランによって失われたサンプル数を出力します。この値を使用してスループット問題をデバッグし、モデルのキューとバッファーを調整することができます。スループットを向上させる方法の詳細については、トラブルシューティングを参照してください。

Frame size (samples)

ブロックの出力信号でのサンプル数を指定します。

出力データ型

ブロックの出力のデータ型を選択します。

サポートされているデータ型

端子サポートされているデータ型

出力

  • 倍精度浮動小数点

  • 単精度浮動小数点

  • 32 ビット符号付き整数

  • 16 ビット符号付き整数

  • 8 ビット符号なし整数

オーバーラン

32 ビット符号なし整数

参考

From Multimedia FileDSP System Toolbox
To Audio DeviceDSP System Toolbox
audiorecorderMATLAB

バージョン履歴

R2007b で導入