public override void ApplyToSoundFile(AudioClip sf) { this.sf = sf; ID = Bass.BASS_ChannelSetFX(sf.AudioStream.StreamHandle, BASSFXType.BASS_FX_BFX_LPF, 1); handler = new AudioClip.AudioChannelChangedHandler(sf_SoundChannelChanged); sf.AudioStreamChanged += handler; Update(); }
public void SetCurrentSound(AudioClip file, long pos = 0) { bool playMarks = false; bool reversed = false; if (currentsound != null) { playMarks = currentsound.IsPlayingBetweenMarks; reversed = currentsound.IsReversed; currentsound.AudioStreamChanged -= handler; } currentsound = file; handler = new AudioClip.AudioChannelChangedHandler(currentsound_SoundChannelChanged); currentsound.AudioStreamChanged += handler; pitchControlsSpam.SetAudioChannel(currentsound.AudioStream); volumeSpam_Scroll(null, null); buttonPlayPause_Click(null, null); if (MarkA > currentsound.AudioStream.Length) { MarkA = currentsound.AudioStream.Length; } currentsound.MarkA = MarkA; if (MarkB > currentsound.AudioStream.Length) { MarkB = currentsound.AudioStream.Length; } currentsound.MarkB = MarkB; float percA = currentsound.MarkA / (float)currentsound.AudioStream.Length; timeline.A = (int)(percA * timeline.Maximum); float percB = currentsound.MarkB / (float)currentsound.AudioStream.Length; timeline.B = (int)(percB * timeline.Maximum); if (MarkA == MarkB) { MarkA = 0; timeline.A = 0; MarkB = currentsound.AudioStream.Length; timeline.B = timeline.Maximum; } if (playMarks) { currentsound.PlayBetweenMarks(); } if (reversed) { currentsound.Reverse(); } currentsound.AudioStream.Position = pos; currentsound.Loop = chkLoop.Checked; timeline.Refresh(); effects.ReApply(); }