public override void OnStarted() { if (Bass != null) { int channelBitwidth = base.ChannelBitwidth; switch (channelBitwidth) { case 0x20: this._streamFlags &= ~BASSFlag.BASS_SAMPLE_8BITS; this._streamFlags |= BASSFlag.BASS_SAMPLE_FLOAT; channelBitwidth = 4; break; case 8: this._streamFlags &= ~BASSFlag.BASS_SAMPLE_FLOAT; this._streamFlags |= BASSFlag.BASS_SAMPLE_8BITS; channelBitwidth = 1; break; default: this._streamFlags &= ~BASSFlag.BASS_SAMPLE_FLOAT; this._streamFlags &= ~BASSFlag.BASS_SAMPLE_8BITS; channelBitwidth = 2; break; } this._streamBuffer = new BASSBuffer(2f, base.ChannelSampleRate, base.ChannelNumChans, channelBitwidth); this._stream = Bass.StreamCreate(base.ChannelSampleRate, base.ChannelNumChans, this._streamFlags, null, IntPtr.Zero); Bass.ChannelSetLink(base.ChannelHandle, this._stream); if (Bass.ChannelIsActive(base.ChannelHandle) == BASSActive.BASS_ACTIVE_PLAYING) { Bass.ChannelPlay(this._stream, false); } } }