private void PlayCurrentSample(bool restart)
 {
     if (restart == true)
     {
         BassMix.BASS_Mixer_ChannelSetPosition(CurrentSample.Channel, 0);
     }
     BassMix.BASS_Mixer_ChannelPlay(CurrentSample.Channel);
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 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);
     }
 }
Beispiel #4
0
 /// <summary>
 /// Stops this instance.
 /// </summary>
 public void Stop()
 {
     Pause();
     BassMix.BASS_Mixer_ChannelSetPosition(channelHandle, 0, BASSMode.BASS_POS_BYTES);
 }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
 private void EndSync(int syncHandle, int channel, int data, IntPtr user)
 {
     BassMix.BASS_Mixer_ChannelSetPosition(Stream_L, user.ToInt64());
 }
Beispiel #7
0
 public static void JumpTo(TimeSpan t)
 {
     BassMix.BASS_Mixer_ChannelSetPosition(baseStreamHandle, (long)(Bass.BASS_ChannelSeconds2Bytes(baseStreamHandle, 1) * t.TotalSeconds), BASSMode.BASS_POS_BYTES);
 }