一般的なオーディオAPIの概要



Introduction Common Audio Apis



コンピュータシステムでは、オーディオを出力する必要がある場合、コーデックやDACなどのオーディオチップを駆動するために特定の方法を使用する必要があります。オーディオチップを動員するプロセスでは、オーディオAPIである特別なアプリケーションプログラミングインターフェイスを使用する必要があります。オーディオAPIを使用すると、プレーヤーなどのオーディオソフトウェアは、チップごとに異なる命令を使用することなく、APIの出力プログラムを直接設計できます。

一般的なオーディオAPIには、MME、DS、WDM、KS、WASAPI、ASIOなどがあります。





MRS(WaveIn / WaveOut)

MMEは最も一般的なWindowsオーディオAPIであり、マルチメディア拡張テクノロジであるMutiMediaExtensionsと呼ばれます。長い歴史と優れた互換性を備えており、市場に出回っているすべての基本的な機器を十分にサポートできます。これは高度なAPIであり、ハードウェアと直接通信しません。オーディオハードウェアにアクセスするには、階層化されたインターフェイスが必要です。これにより、待ち時間も長くなります。この遅延は、オーディオの再生時に音質を低下させることはありませんが、オーディオの処理と録音に大きな悪影響を及ぼします。

MMEは、waveIn **** / waveOut ****シリーズのAPIを使用して、オーディオの処理を完了します。プログラム起動後、waveIn ****シリーズ機能を使用してサウンドカード入力機能を開き、バッファを十分に小さい値に設定してから、設定したバッファへの音声データの録音を開始します。バッファがいっぱいになると、バッファがバッファリングされます。 (WAVHDR)は、waveOut ****シリーズの関数の出力キューに直接追加できます。この方法は、実装が簡単です。欠点は、MMEが高レベルのAPIであるということです。そのため、プロセス全体で多くのシステム処理段階が必要になり、大幅な遅延が発生します。バッファが小さすぎると、音が途切れます。最小遅延は通常、約120ミリ秒です。



WaveOutはMicrosoftの最初のオーディオストリーム出力方法であるため、互換性は良好です。ほとんどすべてのMicrosoftオペレーティングシステムとサウンドカードがそれをサポートしていますが、ハードウェアアクセラレーションを使用せずに「複数のオーディオストリームをミキシングする」機能をサポートすることはできません。すべてのミキシングアクションはソフトウェアで実行されます。

DirectSound(DS)

Windows 95のリリース後、Microsoftは、WinAPI32に含まれるマルチメディア機能が遅すぎるため、ゲーム開発者がWindows 95がビデオおよびオーディオタスクに適していないことを発見したため、ゲーマーが依然としてDOSをゲームプラットフォームとして使用することを望んでいることを発見しました。マイクロソフトは、ビデオとオーディオ用のビデオオーディオAPIとDSP(エフェクター)APIのセットである有名なDirectXを発表しました。 DirectSoundはその一部です。 DirectSoundには2D / 3Dポイントがあります。 DirectSoundにはエフェクト機能があるので、出力時にエコーなどのエフェクトを追加して、実際のサウンド環境をシミュレートできます。 DirectSoundは主にゲームを提供します。 DirectSoundは、一部のプレーヤーやオーディオエディターでリアルタイムエフェクトAPIとしても使用されます。 DirectSoundは出力に重点を置いており、入力に関しては機能がありません。ハードウェアがそれをサポートしている限り、DirectSoundは出力応答を大幅に高速化できます。 Windowsオーディオ出力の応答速度が新しいレベルに向上しました。一部の古いサウンドカードに加えて、ほとんどすべてのサウンドカードがDirectSound、少なくともDirectSound2Dをサポートしています。

2006年11月、MicrosoftはWindows Vistaをリリースしましたが、Vistaは予期せずDirectSound 3Dハードウェアレイヤー(HAL)のサポートを断念しました。つまり、DirectSound3Dハードウェアアクセラレーションをサポートするサウンドカードは加速機能を失いました。 Windows 7の最新リリースはVistaのこの機能を継承しており、DirectSound3Dハードウェアは加速して歴史的な領域を抜け出します。

DirectX Soundは、オーディオ出力、ハードウェアへの直接アクセス、および大幅に改善された応答速度に重点を置いています。 DirectSoundの動作モードを最高レベルに設定します。通常、最小遅延は最大60ミリ秒です。

WDM

WDMは、低遅延で複数のオーディオストリームをサポートするWindows DriverModuleの頭字語です。これは、Windows 98 SE / ME / 2000の新機能です。 WDMドライバーの発売後、複数のオーディオストリームをサポートしていないサウンドカードで複数のオーディオストリームを再生できることがわかりました。 WDMはAPIのセットと見なすこともできます。通信オブジェクトは、通常のアプリケーションではなくドライバーです。ドライバがWDMをサポートしている限り、一般的なソフトウェーブテーブルなどの多くの機能が追加されます。入出力に関しては、WDMはMultiMedia ExtensionsやDirectSoundよりも優れており、現在、排除されていないほとんどすべてのサウンドカードがWDMをサポートしています。 WDMは、サウンドカードの遅延を大幅に削減でき、ASIOに匹敵することもあります。一部のプロのオーディオ編集およびオーサリングソフトウェアでは、WDMがサポートされています。

MMEのレイテンシーは高く、Direct Soundはプロのオーディオ用に設計されていません。また、WDMの登場は、これらの欠点を補完するものです。 WDMはオーディオチップのドライバーと直接通信し、多くの中間リンクを減らし、遅延を新しいレベルに減らします。現在、多くのプロのオーディオソフトウェアがWDMインターフェイスを提供しています。

いわゆるWDMテクノロジーは、アプリケーションが基盤となるシステムサービスを直接呼び出すことです。全体の流れは、最初にバッファのデータを受け入れてから出力することでもあります。 WinXPでは、オーディオWDMはカーネルストリーミングとも呼ばれます。このスキームの利点は、遅延を非常に小さくできることです。通常、最小遅延は1ミリ秒から10ミリ秒です。特定の状況下では、非ページメモリ、ダイレクトハードウェアIRP、およびRTを使用して、サウンドカードのすべてのリソースを独占することができます。

カーネルストリーミング(KS)

カーネルストリーミング中国語はカーネルストリームを意味し、基礎となるデータに直接アクセスする方法です。システムのWindowsカーネルミキサーをバイパスしてサウンドカードと直接通信できるため、出力効率が向上し、出力遅延が減少します。 。カーネルストリーミングはKmixerを経由せず、オーディオデータに対してカーネルモード処理を直接実行するため、元のサウンドを聞くことができます。

ただし、カーネルストリーミングにも制限があります。まず、このAPIを使用すると、オーディオハードウェアが直接占有されます。曲を聴いていると、QQリングが聞こえません。第二に、このAPIには音声入力機能がなく、マイクを使用できません。

VistaとWin7はkmixerとdmaに依存するオーディオIOを廃止し始めたため、カーネルストリーミングはVistaとWin7では利用できないことに注意してください。

UAA WASAPI)

UAAは最新のWindowsオーディオアーキテクチャであり、Vistaの発売時に利用可能です。 UAAはUniversalAudio Architectureと呼ばれ、Universal AudioArchitectureです。音声会話を管理するためのAPIは、WASAPI(Windows Audio Session API)です。 WASAPIは、音声会話の各セットを個別に処理できます。これは重要です。

たとえば、WASAPIを使用しているときに、44.1 kHzのサンプリングレートで音楽を再生しているが、48 kHzのオーディオサンプリングレートのQQが再び鳴っている場合は、残響で解決する必要はなく、サンプルレートもありません。変換(SRC)が発生します。音質が低下します。実際、WASAPIオーディオAPIは、多くの音楽愛好家に標準装備されています。

WASAPI(WindowsオーディオセッションAPI)は、Windows Vista以降に追加されたUAA(ユニバーサルオーディオアーキテクチャ)オーディオアーキテクチャ用のAPIです。 WASAPIを使用すると、SRC(サンプルレート変換)干渉をバイパスして、変更されていないビットストリームをオーディオデバイスに送信できます。 Windows XPの場合、WASAPIと同様のチャネルは、上記のカーネルストリーミングです。 WASAPIは、VistaおよびWin7でのみ使用できます。

Microsoftは、vista / 7がkmixerおよびdma依存のオーディオIOを放棄し始め、WaveRT(Wave RealTime)と呼ばれるものを開発したと主張しています。彼らのWASAPI、MMCSSなどはWaveRTをコアとして使用しており、WaveRTには1つあります。独自のミキサーですが、排他モードを開始する限り、このミキサーをバイパスして、他のすべてのプログラムのサウンドをミュートすることができます。MMCSSを使用すると、オーディオアクセスIOを最高のクロック優先度に向上させることができます。実際にリアルタイムクロックタイマー制御を使用するDMAを使用しないオーディオストリームは、UAAオーディオデバイスのハードウェアと直接通信し、サウンドカードまたはオーディオインターフェイスのハードウェアクロックでオーディオデータを直接制御することもできます。効果は、WASAPI共有モードであっても、ASIOと同様になります。 SRCはありませんが、コンソールでは、ミックスを共有した後、汎用のサンプリングレート、ビットサイズ、チャネルを自由に設定できるため、SRCではなく元の44100Hz信号を維持でき、すべてのIntelマザーボードまたはIntelチップを維持できます。すでにHPET(High Precision Event Timer)を搭載しており、v ideoとオーディオの処理により、リアルタイムで高いサンプリングレートを処理し、バスの待ち時間を短縮できるため、1秒あたりのデータストリームイベントの数を大幅に増やすことができますが、私はAMDがそれを持っているかどうかわからない。

ASIO

ASIOのフルネームは「AudioStreamInput Output」です。これは、ドイツのSteinbergによって提案されたオーディオ技術仕様であり、オーディオAPI標準の1つです。 ASIOの主な機能は、低遅延とマルチトラックマルチチャネル伝送です。 ASIOは、Windowsオペレーティングシステムのハードウェアの集中管理を完全に排除します。オーディオストリームに対するシステムの応答時間を最小限に抑えながら、オーディオ処理ソフトウェアとハ​​ードウェア間のマルチチャネル伝送を可能にします。

Windows独自のMMEドライバーの遅延時間は200〜500ミリ秒、DirectSoundは50〜100ミリ秒、Mac OS Sound Managerは20〜50ミリ秒です。 ASIOの場合、設定に応じてバッファを調整できます。 10ミリ秒未満では、環境が1ミリ秒よりも良好な場合があります。そのため、録音作業や音楽制作においてリアルタイム処理が可能です。

低レイテンシーは録音とポストプロダクションに大きな影響を及ぼしますが、サウンド再生への影響については議論の余地があります。一部の愛好家は、ASIOの低レイテンシーがオーディオジッター(ジッター)を大幅に低減し、それによって音質を向上させることができると信じていますが、オーディオドライバーがレベルで記述されている場合、ASIOはハードウェアおよびソフトウェア環境に対してより厳しいと言うこともあります。飛び出る音や冷たい音などの問題が発生しやすいです。

EAX

EAXは、Environmental Audio Extensions、環境サウンド拡張セットです。独立したAPIのセットではありません。これは、DirectSound3Dに基づく3DAPIのセットです。その開発者は有名なクリエイティブです。 Creativeは、A3Dと競争し、最終的に市場を勝ち取るためにEAXを立ち上げました。 Aurealの買収後、いくつかの高度なA3DアルゴリズムがEAXにインポートされました。

OpenAL

OpenALは、LokiSoftwareによって開発された無料のクロスプラットフォームオーディオ3DAPIですが、Loki Softwareは間もなく廃業し、無料のソフトウェアコミュニティがさらなる開発を引き継ぎました。現在の実際のプレーヤーはクリエイティブです。 VistaがDirectSound3Dハードウェアアクセラレーションのサポートを放棄したため、Creativeも厄介な立場にあります。 EAXを継続するために、OpenALのサポートのみを強化します。 Creativeは、OpenALに基づいてEAXを再構築することを望んでいます。このステップを達成することは難しくありませんが、ゲームメーカーによって広くサポートされる必要があります。今日でも、OpenALのサポートはDirectSound3Dのサポートほど良くありません。クリエイティブはその栄光を再現する必要があります。それは時間がかかります。しかし、成功するために一生懸命努力すれば、OpenALが唯一のクロスプラットフォームAPIであるため、大きなメリットが得られる可能性があります。

関連する記事はありません。