次の方法で共有


AUDIO_CURVE_TYPE 列挙 (ksmedia.h)

AUDIO_CURVE_TYPE列挙は、ボリューム レベルを設定するために適用する曲線アルゴリズムを指定する定数を定義します。

構文

typedef enum {
  AUDIO_CURVE_TYPE_NONE,
  AUDIO_CURVE_TYPE_WINDOWS_FADE
} AUDIO_CURVE_TYPE;

定数

 
AUDIO_CURVE_TYPE_NONE
曲線アルゴリズムが適用されていないことを指定します。 この曲線を指定する場合、指定した曲線の継続時間は 0 に等しい必要があります。
AUDIO_CURVE_TYPE_WINDOWS_FADE
ボリューム設定に適用されるアルゴリズムが、[ 解説 ] セクションの図に示されている曲線に従う必要があることを指定します。

注釈

次の擬似コード スニペットは、ターゲット ボリューム レベルに到達するためにボリューム設定に適用されるアルゴリズムのロジックを示しています。

// POWER IN AMPLITUDE: 1.75

// Fade In:
// Curve begins at 0 when nFrame = 0
// When nFrame gets to (nFrames - 1), curve = 1
//
// curve = pow(nFrame / (nFrames - 1), exponent)

float fFrameCount = nFrames - 1.0f;
for (UINT32 nFrame = 0; nFrame < nFrames; nFrame++) {
    float curve = powf(nFrame / fFrameCount, 1.75f);
    for (UINT32 nChannel = 0; nChannel < pWfx->nChannels; nChannel++) {
            pFloat[nFrame * pWfx->nChannels + nChannel] *= curve;
    }
}

// Fade Out:
// curve begins at 1 when nFrame = 0
// When nFrame gets to (nFrames - 1), curve = 0
//
// curve = pow(1 - (nFrame / (nFrames - 1)), exponent)

float fFrameCount = nFrames - 1.0f;
for (UINT32 nFrame = 0; nFrame < nFrames; nFrame++) {
    float curve = powf(1.0f - (nFrame / fFrameCount), 1.75f);
    for (UINT32 nChannel = 0; nChannel < pWfx->nChannels; nChannel++) {
            pFloat[nFrame * pWfx->nChannels + nChannel] *= curve;
    }
}

次の図は、ボリューム レベルを設定するための上記の擬似コードのグラフィカルな表現を示しています。

ボリューム レベルカーブのグラフィカル表現。

要件

要件
サポートされている最小のクライアント Windows 8
Header ksmedia.h

こちらもご覧ください

KSAUDIOENGINE_VOLUMELEVEL

KSPROPERTY_AUDIOENGINE_VOLUMELEVEL