サウンドバッファ
![]() |
|
セカンダリーバッファの作成
セカンダリーバッファは、サウンドデータを格納するためのバッファです。バッファ作成に必要なパラメータをBufferDescriptionクラスに設定してSecondaryBufferクラスを作成します。
public class MySoundDevice { private SecondaryBuffer SoundBuffer = null; ...
public void CreateStreamingBuffer() { BufferDescription bufferDesc = new BufferDescription(); bufferDesc.Flags = BufferDescriptionFlags.CanGetCurrentPosition | BufferDescriptionFlags.GlobalFocus; bufferDesc.BufferBytes = BufferSize; // バッファサイズ bufferDesc.Format = WaveFormatEx; // ウェーブフォーマット; bufferDesc.Guid3DAlgorithm = Guid.Empty; SoundBuffer = new SecondaryBuffer(bufferDesc, RenderDevice); }
以下にBufferDescriptionクラスのプロパティを示します。
プロパティ | 機能 | コメント |
---|---|---|
BufferBytes | 新しいバッファのサイズを設定する。 | 単位はバイトです。 |
CanGetCurrentPosition | 再生位置を正確に取得する。 | 通常セットします。 |
ControlPositionNotify | 再生位置の通知機能を有効にする。 | |
Control3D | 3Dコントロールを可能にする。 | |
ControlFrequency | 再生速度を変更できる。 | |
ControlPan | パンコントロールを可能にする。 | 3Dと同時に指定できません。 |
ControlEffects | エフェクトを可能にする。 | |
ControlVolume | ボリュームコントロールを可能にする。 | |
DeferLocation | バッファをリソースに割り当てることができる。 | |
Flags | バッファの能力を指定するフラグ。 | |
Format | WaveFormat構造体を指定する。 | 多チャンネルフォーマットは支援しません。 |
GlobalFocus | アプリケーションがフォーカスを失っても再生を続ける。 | |
StickyFocus | アプリケーションがフォーカスを失っても再生を続ける。 | |
Guid3DAlgorithm | 3D機能を示すGUIDを指定します。 | |
StaticBuffer | 可能であればバッファをサウンドカード上のメモリに割り当てる。 | サウンドカードへの割り当てに失敗すると、コンピュータのメモリに割り当てます。 |
LocateInHardware | バッファをサウンドカード上のメモリに割り当てる。 | サウンドカードへの割り当てに失敗すると、エラーを戻します。 |
LocateInSoftware | バッファをコンピュータのメモリに割り当てる。 | サウンドカードへの割り当てが可能でもコンピュータのメモリに割り当てます。 |
Mute3DAtMaximumDistance | サウンドは最大距離で無音になる。 | |
PrimaryBuffer | プライマリーバッファを指定する。 | セカンダリーバッファ作成時はセットしません。 |