SoundPlayerクラスには再生される音声のボリュームを設定・変更するプロパティやメソッドが用意されていない。 一方、SoundPlayerは任意のStreamから音声を読み込み再生することができる。 そこで、音声の読み込みと同時にボリュームの変更を行うようにしたStreamを作成し、それを音声ソースとしてSoundPlayerに渡すことによってボリュームを変更する。
実装例
以下のコードでは、WAVE形式のデータを読み込むクラスWaveStreamを作成し、それをSoundPlayerのコンストラクタに渡している。 WaveStreamのReadメソッドを呼び出すと、読み込んだWAVEデータのヘッダ部分はそのまま返すが、dataチャンク内の各音声サンプルについては音量を変更した上で返すように実装している。 元の音声より大きい音量にすることはできない。
なお、以下のコードにおけるWaveStreamクラスは16ビットのWAVE形式の音声のみに対応している。 モノラル・ステレオなど、チャンネル数は任意のものに対応している。 また、RIFFヘッダのチェック等は省略しているので、ヘッダの内容によっては予期しない動作となる可能性もある。