private void PlayCurrentSample(bool restart) { if (restart == true) { BassMix.BASS_Mixer_ChannelSetPosition(CurrentSample.Channel, 0); } BassMix.BASS_Mixer_ChannelPlay(CurrentSample.Channel); }
private void SetEnvelopePos(int source, long newPos) { // pause mixer Bass.BASS_ChannelLock(_mixer, true); BassMix.BASS_Mixer_ChannelSetPosition(source, newPos); // convert source pos to mixer pos long envPos = Bass.BASS_ChannelSeconds2Bytes(_mixer, Bass.BASS_ChannelBytes2Seconds(source, newPos)); BassMix.BASS_Mixer_ChannelSetEnvelopePos(source, BASSMIXEnvelope.BASS_MIXER_ENV_VOL, envPos); // resume mixer Bass.BASS_ChannelLock(_mixer, false); }
public void ReSync() { if (!base.IsAssigned) { return; } if (this._isOutputBuffered && this.TargetMixerStream != 0 && this.SourceMixerStream != 0) { Bass.BASS_ChannelLock(this.SourceMixerStream, true); int num = Bass.BASS_ChannelGetData(this.TargetMixerStream, IntPtr.Zero, 0); if (num > 0) { num = (int)Bass.BASS_ChannelSeconds2Bytes(this._streamCopy, Bass.BASS_ChannelBytes2Seconds(this.TargetMixerStream, (long)num)); if (!this._isSourceMixerNonstop && this._isTargetMixerNonstop) { this._streamCopyDelay = num; BassMix.BASS_Mixer_ChannelSetPosition(this._streamCopy, 0L); } else if (!this._isTargetMixerNonstop) { int num2 = Bass.BASS_ChannelGetData(this.SourceMixerStream, IntPtr.Zero, 0); num2 = (int)Bass.BASS_ChannelSeconds2Bytes(this._streamCopy, Bass.BASS_ChannelBytes2Seconds(this.SourceMixerStream, (long)num2)); if (num2 > num) { byte[] buffer = new byte[num2 - num]; Bass.BASS_StreamPutData(this._streamCopy, buffer, num2 - num); } } } else if (this._isSourceMixerNonstop) { int num3 = Bass.BASS_ChannelGetData(this.SourceMixerStream, IntPtr.Zero, 0); num3 = (int)Bass.BASS_ChannelSeconds2Bytes(this._streamCopy, Bass.BASS_ChannelBytes2Seconds(this.SourceMixerStream, (long)num3)); int num4 = (int)Bass.BASS_ChannelSeconds2Bytes(this._streamCopy, (double)this._outputLatency / 1000.0); if (num3 > num4) { BassMix.BASS_Mixer_ChannelSetPosition(this._streamCopy, 0L); byte[] buffer2 = new byte[num3 - num4]; Bass.BASS_StreamPutData(this._streamCopy, buffer2, num3 - num4); } } if (this._isTargetMixerImmediate && !this._isTargetMixerNonstop) { Bass.BASS_ChannelUpdate(this.TargetMixerStream, 0); } Bass.BASS_ChannelLock(this.SourceMixerStream, false); } }
/// <summary> /// Stops this instance. /// </summary> public void Stop() { Pause(); BassMix.BASS_Mixer_ChannelSetPosition(channelHandle, 0, BASSMode.BASS_POS_BYTES); }
/// <summary> /// Seeks to the specified offset (In milliseconds). /// </summary> /// <param name="offset">The offset.</param> public void Seek(double offset) { var byteOffset = Bassh.BASS_ChannelSeconds2Bytes(channelHandle, offset / 1000d); BassMix.BASS_Mixer_ChannelSetPosition(channelHandle, byteOffset, BASSMode.BASS_POS_BYTES); }
private void EndSync(int syncHandle, int channel, int data, IntPtr user) { BassMix.BASS_Mixer_ChannelSetPosition(Stream_L, user.ToInt64()); }
public static void JumpTo(TimeSpan t) { BassMix.BASS_Mixer_ChannelSetPosition(baseStreamHandle, (long)(Bass.BASS_ChannelSeconds2Bytes(baseStreamHandle, 1) * t.TotalSeconds), BASSMode.BASS_POS_BYTES); }