次の方法で共有


トポロジのノード

オーディオ アプリケーションは、Microsoft Windows マルチメディア関数 mixerGetLineControls を通じてミキサー コントロールにアクセスできます。 この関数は、1 つ以上の MIXERCONTROL 構造体の配列を取得します。各構造体は、オーディオ ライン上の単一のコントロール ノードの状態とメトリックを記述します。 MIXERCONTROL 構造体の dwControlType メンバーは、コントロールのタイプを指定する列挙値に設定されます。 オーディオ VxD には多くのミキサー コントロール タイプが指定されていますが、WDM オーディオ ドライバーで使用できるのはこれらのコントロールのサブセットのみです。

WDMAud は、すべてではなく一部のトポロジ ノードを対応するミキサー ライン コントロールに変換します。 次の表にリストされているトポロジ ノード タイプには、ミキサー ライン コントロールである対応するものがあります。

Node Type トポロジ ノード タイプ名 ミキサーコントロールのタイプ名

AGC

KSNODETYPE_AGC

MIXERCONTROL_CONTROLTYPE_ONOFF

ラウドネス

KSNODETYPE_LOUDNESS

MIXERCONTROL_CONTROLTYPE_LOUDNESS

Mute

KSNODETYPE_MUTE

MIXERCONTROL_CONTROLTYPE_MUTE

トーン(複数)

KSNODETYPE_TONE

MIXERCONTROL_CONTROLTYPE_ONOFF (KSPROPERTY_AUDIO_BASS_BOOST がサポートされている場合)

MIXERCONTROL_CONTROLTYPE_BASS (KSPROPERTY_AUDIO_BASS がサポートされている場合)

MIXERCONTROL_CONTROLTYPE_TREBLE (KSPROPERTY_AUDIO_TREBLE がサポートされている場合)

体積

KSNODETYPE_VOLUME

MIXERCONTROL_CONTROLTYPE_VOLUME

ピークメーター

KSNODETYPE_PEAKMETER

MIXERCONTROL_CONTROLTYPE_PEAKMETER

MUX

KSNODETYPE_MUX

MIXERCONTROL_CONTROLTYPE_MUX

ステレオワイド

KSNODETYPE_STEREO_WIDE

MIXERCONTROL_CONTROLTYPE_FADER

Chorus

KSNODETYPE_CHORUS

MIXERCONTROL_CONTROLTYPE_FADER

リバーブ

KSNODETYPE_REVERB

MIXERCONTROL_CONTROLTYPE_FADER

スーパーミックス(複数)

KSNODETYPE_SUPERMIX

MIXERCONTROL_CONTROLTYPE_MUTE (KSPROPERTY_AUDIO_MUTE がスーパーミックス ノードでサポートされている場合)

MIXERCONTROL_CONTROLTYPE_VOLUME (本文内のコメントを参照)

前の表にないトポロジ ノード タイプはミキサー ライン コントロールに変換されず、表にないミキサー ライン コントロールは WDM オーディオ ドライバーでサポートされません。

MIXERCONTROL_CONTROLTYPE_CUSTOM がテーブルにないことに注意してください。 これは、WDM オーディオ ドライバーがカスタム ミキサー コントロールをサポートしていないことを意味します。

トーン ノードは、低音高音中周波数低音ブーストの 4 つのプロパティをサポートします。 中周波数プロパティにはミキサーラインに対応するものはありませんが、他の 3 つのプロパティには対応するものがあります。 トポロジ内で検出されたトーン ノードごとに、サポートされているプロパティごとにクエリが作成されます。

KSPROPERTY_AUDIO_BASS

KSPROPERTY_AUDIO_TREBLE

KSPROPERTY_AUDIO_BASS_BOOST

プロパティ クエリが成功するたびに、ミキサー ライン コントロールが生成されます: 命名の問題により、シングル トーン ノードは 1 つのプロパティのみをサポートする必要があります。 たとえば、デバイスが低音と高音の両方をサポートしている場合は、ノードに異なる名前を付けることができるように、2 つのトーン ノードが必要です。

スーパーミックス ノードは、ミュートとボリュームという最大 2 つのコントロールをサポートします。 スーパーミックス ノードは、スーパーミックス ノードの機能テーブル内のすべてのエントリについて、次の 2 つの条件のうち少なくとも 1 つを満たす場合に、ミュート コントロールとして使用できます:

  • このエントリは、Capabilities.Mute フラグで指定されているミュート プロパティをサポートします。

  • エントリは完全に減衰され (-無限デシベル減衰)、大きくすることはできません。これは、値 LONG_MIN (0x80000000) を持つ Capabilities.MinimumCapabilities.Minimum の両方で指定されます。

スーパーミックス機能テーブル内のすべてのエントリがゼロ以外の範囲を持つ場合、スーパーミックス ノードをボリューム コントロールとして使用できます。 他のすべてのコントロールは 1 対 1 に変換されます。 認識されたノードが見つかると、ミキサー ライン ドライバーはそのノードのそれぞれのプロパティをクエリします。

ステレオまたはモノラルのサポートを確認するには、左チャンネルが照会され、続いて右チャンネルが照会され、最後に両方とも失敗した場合はマスター チャンネル (-1) が試行されます。 これらのクエリがいずれも成功しない場合、そのノードに対して制御は生成されません。 MUX ノードはチャネルごとに照会されないことに注意してください。 代わりに、現在の MUX 選択を取得する単一のクエリが実行されます。

ノードの KSPROPERTY_TOPOLOGY_NAME プロパティがクエリされると、コントロールの名前が文字列として返されます。 ノードが複数のコントロールを生成する場合、すべてのコントロールは同じ名前を共有します。