public override void OnStarted() { 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 = Un4seen.Bass.Bass.BASS_StreamCreate(base.ChannelSampleRate, base.ChannelNumChans, this._streamFlags, null, IntPtr.Zero); Un4seen.Bass.Bass.BASS_ChannelSetLink(base.ChannelHandle, this._stream); if (Un4seen.Bass.Bass.BASS_ChannelIsActive(base.ChannelHandle) == BASSActive.BASS_ACTIVE_PLAYING) { Bass.BASS_ChannelPlay(this._stream, false); } }
public int EnqueueSamples(int channels, int rate, byte[] samples, int frames) { int consumed = 0; if (_basbuffer == null) { Bass.BASS_Init(-1, rate, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero); _basbuffer = new BASSBuffer(0.5f, rate, channels, 2); _streamproc = new STREAMPROC(Reader); if (_lazyVolumeSet) { Volume = _lazyVolumeValue; } Bass.BASS_ChannelPlay( Bass.BASS_StreamCreate(rate, channels, BASSFlag.BASS_DEFAULT, _streamproc, IntPtr.Zero), false ); } if (_basbuffer.Space(0) > samples.Length) { _basbuffer.Write(samples, samples.Length); consumed = frames; } return consumed; }
public void Dispose() { if (_bassBuffer != null) { _bassBuffer.Dispose(); _bassBuffer = null; } Bass.BASS_Free(); }
public int EnqueueSamples(int channels, int rate, byte[] samples, int frames) { int consumed = 0; if (basbuffer == null) { Bass.BASS_Init(-1, rate, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero); basbuffer = new BASSBuffer(0.5f, rate, channels, 2); streamproc = Reader; currentHandle = Bass.BASS_StreamCreate(rate, channels, BASSFlag.BASS_DEFAULT, streamproc, IntPtr.Zero); Bass.BASS_ChannelPlay(currentHandle, false); } if (basbuffer.Space(0) > samples.Length) { basbuffer.Write(samples, samples.Length); consumed = frames; } return consumed; }