オーディオ テーパード ボリューム コントロール
IAudioEndpointVolume インターフェイスは、オーディオ テーパード ボリューム コントロールを管理します。 これらのコントロールは、ボリューム スライダーが表示される Windows アプリケーションに適しています。 オーディオ テーパード ボリューム コントロールに関連付けられているボリューム スライダーの場合、スライダーの位置を変更するたびに、スライダーが移動する距離に比例して認識されるラウドネスが変化します。 一定の移動距離であれば、スライダーの動きがスライダーの動きの範囲の下、上、または中央のどこで発生するかに関係なく、認識されるラウドネスの増減の量はほぼ同じです。 認識されるラウドネスは、オーディオ信号パワーの対数でほぼ直線的に変化します。
オーディオ テーパーという用語は、もともとオーディオ エレクトロニクス デバイスのボリューム コントロールとして使用されるポテンショメーターにおける抵抗素子のテーパー形状を指しています。 オーディオ テーパード抵抗素子は、ゼロ ボリューム位置で最も広く、最大ボリューム位置で最も狭くなります。 ポテンショメーターは、デバイスがスピーカーを介して再生するオーディオ信号の電圧レベルを制御します。 このテーパリングは、ポテンショメーター ワイパーの位置とスピーカーで認識されるラウドネスの間に、ほぼ直線的な関係を生み出すことを目的として設計されています。 ワイパー位置とスピーカーの電圧の関係は非線形です。
これに対し、線形テーパーを持つ抵抗素子は、ポテンショメーターの変動範囲に対して均一な幅を有します。 その結果、スピーカーの電圧は、ワイパー位置と共に直線的に変化します。 ワイパー位置とラウドネスの関係は非線形です。
同様に、音量スライダーが表示される Windows アプリケーションでは、スライダーの位置とスピーカーの出力信号レベルの関係が定義されます。 この関係は、実際には、線形テーパードまたはオーディオ テーパードになります。
次の図は、線形テーパード ボリューム コントロールのための出力電圧と認識されるラウドネスに対するスライダー位置のマッピングを示しています。
前の図の左側では、オーディオ デジタル アナログ コンバーター (DAC) の出力電圧レベルは、音量スライダーが最小位置 (ラベル Min) から最大位置 (ラベル Max) に移動すると直線的に増加します。 縦軸のラベル VFS は、フルスケールの DAC 出力電圧を表します。
ただし、認識されるラウドネスは、前の図の右側に示されているように、オーディオ信号の累乗の対数とほぼ同じように変化します。 したがって、最小設定付近で一定間隔スライダーを動かすと、認識されるラウドネスは比較的大きくなりますが、最大設定付近で同じ幅スライダーを動かすと、認識されるラウドネスの変化が比較的小さくなります。
前の図の右側では、縦軸のラウドネスは、フルスケール パワー設定 (0 デシベル) に対してデシベル (dB) 単位で測定されます。 ラウドネス曲線は、縦軸と負の無限大で交差しますが、図には 0 デシベルから –96 デシベルまでの曲線の部分のみが示されています。 曲線のこの部分のみを示す決定はある程度気まぐれですが、-96 デシベルは、フルスケール パワーに対する 16 ビット DAC の次に低い出力レベルのパワーを便宜的に表しています。 この値は 20.log₁₀(1/65535) として計算されます。
前の図のように最小設定付近でスライダーの位置が小さく変化すると、ラウドネスが大きく変化するため、ユーザーはこの領域を制御するのが難しいと感じる場合があります。 スライダーの動きが比較的小さい場合、目的のレベルの上または下にボリュームをプッシュできます。 ボリューム コントロールが改善されれば、スライダーの位置とラウドネスの間に、より直線的な関係が得られます。
次の図は、オーディオ テーパード ボリューム コントロールのための出力電圧と認識されるラウドネスに対するスライダー位置のマッピングを示しています。
前の図の右側に示すように、認識されるラウドネスは、スライダーの位置の変化と同時にほぼ直線的に変化します。 これを行うには、図の左側に示すように、DAC 電圧が位置に対して非線形に変化する必要があります。 スライダーが最大設定から左に向かって移動すると、曲線は漸進的に 0 ボルトに近づきます。 最小スライダー位置の電圧は非常に小さくなりますが、正確にはゼロではない可能性があります。
IAudioEndpointVolume インターフェイスの以下のメソッドは、デシベルで測定されるボリューム設定を使用します。
- IAudioEndpointVolume::GetChannelVolumeLevel
- IAudioEndpointVolume::GetMasterVolumeLevel
- IAudioEndpointVolume::SetChannelVolumeLevel
- IAudioEndpointVolume::SetMasterVolumeLevel
これらのメソッドは、音量設定と認識されるラウドネスの間にほぼ線形の関係を生成します。 これらのメソッドによって管理されるボリューム コントロールのボリューム範囲 (デシベル) は、オーディオ エンドポイント デバイスごとに異なります。 特定のデバイスのボリューム範囲を確認するには、IAudioEndpointVolume::GetVolumeRange メソッドを呼び出します。
これに対し、IAudioEndpointVolume インターフェイスの次のメソッドのボリューム設定は、ボリューム範囲に対してより緩やなテーパード曲線に従います。
- IAudioEndpointVolume::GetChannelVolumeLevelScalar
- IAudioEndpointVolume::GetMasterVolumeLevelScalar
- IAudioEndpointVolume::SetChannelVolumeLevelScalar
- IAudioEndpointVolume::SetMasterVolumeLevelScalar
- IAudioEndpointVolume::VolumeStepDown
- IAudioEndpointVolume::VolumeStepUp
Windows Vista では、これらのメソッドは、前の図に示したオーディオ テーパード曲線と線形テーパード曲線の中間の曲線を使用します。 将来のバージョンの Windows では、曲線の形状が変わる可能性がある点に注意してください。 上記の一覧の最初の 4 つのメソッドは、0.0 (最小ボリューム) から 1.0 (最大ボリューム) までの範囲の正規化された値としてボリューム レベルを表現します。 一覧内の最後の 2 つのメソッドについて、IAudioEndpointVolume::GetVolumeStepInfo メソッドを呼び出して、ボリューム範囲内のステップ数を取得します。
以下のインターフェイスは、ボリューム設定に線形テーパード曲線を使用します。
これらのインターフェイスについて詳しくは、「セッション ボリュームコントロール」をご覧ください。 また、各種バージョンの Windows のボリューム範囲と既定のボリューム レベルについては、「既定のオーディオ ボリューム設定」をご覧ください。
関連トピック