/// <summary> /// Use to fade the volume of a song. /// </summary> public CrossFade(AudioWave wIN, AudioWave wOut) { if (wIN != null && wOut != null) { _waveIn = wIN; _waveOut = wOut; foreach (var v in _waveIn.WorkingReactors) { if (v.Contains(POOL_PREFIX)) { if (ReactorPool.Pool.ContainsKey(v)) { ReactorPool.Pool[v].ForceStop(); } if (ReactorPool.Pool.ContainsKey(v)) { ReactorPool.Pool[v].Dispose(); } } } foreach (var v in _waveOut.WorkingReactors) { if (v.Contains(POOL_PREFIX)) { if (ReactorPool.Pool.ContainsKey(v)) { ReactorPool.Pool[v].ForceStop(); } if (ReactorPool.Pool.ContainsKey(v)) { ReactorPool.Pool[v].Dispose(); } } } } }
public static void PrevSong() { if (Items.trackSource != null) { int ind = 0; if (Items.trackSource.Tag != null) { ind = (int)Items.trackSource.Tag; ind--; if (ind < 0) { return; } Items.trackSource.Tag = ind; var tracky = Items.trackSource.Items[ind] as TrackViewModel; if (tracky != null && File.Exists(tracky.Path)) { var aw = new AudioWave(tracky.Path, OutputMode.DirectSound, 1.0f); aw.ReactorUsageLocked = true; aw.Play(); aw.ReactorUsageLocked = false; var fader = new PanFade(aw, Player.Instance.Wave, 10, 2000, true, Player.Instance.Volume); fader.StartAndKill(); Player.Instance.NewMedia(ref aw); //Player.Instance.Play(); } } } }
public static void Export(AudioFile file, AudioWave wave, Stream outStream) { WaveHeader header = new WaveHeader(); // Skip the header outStream.Seek(header.HeaderSize, SeekOrigin.Begin); // Write the data file.SoundBank.ExportAsPCM(wave.Index, file.Stream, outStream); // Create header and write it outStream.Seek(0, SeekOrigin.Begin); header.FileSize = (int)outStream.Length; header.SamplesPerSecond = wave.SamplesPerSecond; header.Write(new BinaryWriter(outStream)); }
void lst_PreviewMouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e) { var track = lst.SelectedItem as Web.LFM.TopTracks.Track; if (track != null && !String.IsNullOrEmpty(track.Available)) { var aw = new AudioWave(track.Path, OutputMode.DirectSound, Player.Instance.Volume); aw.ReactorUsageLocked = true; aw.Play(); aw.ReactorUsageLocked = false; var fader = new PanFade(aw, Player.Instance.Wave, 10, 2000, true, Player.Instance.Volume); fader.StartAndKill(); Player.Instance.NewMedia(ref aw); } }
/// <summary> /// Use to fade the volume of a song. /// </summary> /// <param name="interval">Thread loop time in ticks</param> /// <param name="duration">Total duration for the fade</param> /// <param name="Drop">FadeOut</param> /// <param name="reach">Ceiling for fade In</param> public PanFade(AudioWave wIN, AudioWave wOut, int interval, float duration, bool Drop, float reach) { if (wIN != null && wOut != null) { _reachcap = reach; jump = 1 / (duration / interval); _drop = Drop; _waveIn = wIN; _waveOut = wOut; foreach (var v in _waveIn.WorkingReactors) { if (v.Contains(POOL_PREFIX)) { if (ReactorPool.Pool.ContainsKey(v)) { ReactorPool.Pool[v].ForceStop(); } if (ReactorPool.Pool.ContainsKey(v)) { ReactorPool.Pool[v].Dispose(); } } } foreach (var v in _waveOut.WorkingReactors) { if (v.Contains(POOL_PREFIX)) { if (ReactorPool.Pool.ContainsKey(v)) { ReactorPool.Pool[v].ForceStop(); } if (ReactorPool.Pool.ContainsKey(v)) { ReactorPool.Pool[v].Dispose(); } } } FadeThread = new DispatcherTimer(DispatcherPriority.Normal) { Interval = new TimeSpan(interval * TimeSpan.TicksPerMillisecond) }; FadeThread.Tick += FadeThread_Tick; _startVol = 0; } }
private void tracklist_MouseDoubleClick(object sender, MouseButtonEventArgs e) { tracklist.Tag = tracklist.SelectedIndex; Items.trackSource = tracklist; var tracky = tracklist.SelectedItem as TrackViewModel; if (tracky != null && File.Exists(tracky.Path)) { var aw = new AudioWave(tracky.Path, OutputMode.DirectSound, Player.Instance.Volume); aw.ReactorUsageLocked = true; aw.Play(); aw.ReactorUsageLocked = false; var fader = new PanFade(aw, Player.Instance.Wave, 10, 2000, true, Player.Instance.Volume); fader.StartAndKill(); Player.Instance.NewMedia(ref aw); //Player.Instance.Play(); } }
public bool SignalExternalCommandLineArgs(IList <string> args) { if (args.Count > 1) { var cm1 = args[1]; if (!string.IsNullOrEmpty(cm1)) { var aw = new AudioWave(cm1, OutputMode.DirectSound, Player.Instance.Volume); aw.ReactorUsageLocked = true; aw.Play(); aw.ReactorUsageLocked = false; var fader = new PanFade(aw, Player.Instance.Wave, 10, 2000, true, Player.Instance.Volume); fader.StartAndKill(); Player.Instance.NewMedia(ref aw); } } return(true); }
void nt_Click(object sender, RoutedEventArgs e) { var fluidLink = sender as FluidLink; if (fluidLink != null) { var track = fluidLink.Tag.ToString(); if (track != null) { var aw = new AudioWave(track, OutputMode.DirectSound, Player.Instance.Volume); aw.ReactorUsageLocked = true; aw.Play(); aw.ReactorUsageLocked = false; var fader = new PanFade(aw, Player.Instance.Wave, 10, 2000, true, Player.Instance.Volume); fader.StartAndKill(); Player.Instance.NewMedia(ref aw); } } }
/// <summary> /// Use to fade the volume of a song. /// </summary> /// <param name="ad">Audio Wave to utilize</param> /// <param name="mode">Mode of fade</param> /// <param name="interval">Thread loop time in ticks</param> /// <param name="duration">Total duration for the fade</param> /// <param name="Drop">FadeOut</param> /// <param name="reach">Ceiling for fade In</param> public Fader(AudioWave ad, FadeMode mode, int interval, float duration, bool Drop, float reach) { if (ad != null) { _reachcap = reach; jump = 1 / (duration / interval); _drop = Drop; _mywave = ad; _myMode = mode; FadeThread = new DispatcherTimer(DispatcherPriority.Normal) { Interval = new TimeSpan(interval * TimeSpan.TicksPerMillisecond) }; FadeThread.Tick += FadeThread_Tick; _startVol = _drop ? ad.Volume : 0; try { foreach (var v in _mywave.WorkingReactors) { if (v.Contains(POOL_PREFIX)) { if (ReactorPool.Pool.ContainsKey(v)) { ReactorPool.Pool[v].ForceStop(); } if (ReactorPool.Pool.ContainsKey(v)) { ReactorPool.Pool[v].Dispose(); } } } } catch (Exception e) { Console.WriteLine(e); } } }
static void Instance_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { try { if (e.PropertyName == "TrackEnded" && !Player.Instance.Wave.Stopped) { switch (Mode) { case CycleMode.Repeat: { if (CoreMain.CurrentTrack != null) { var tracky = CoreMain.CurrentTrack; if (tracky != null && File.Exists(tracky.Path)) { var aw = new AudioWave(tracky.Path, OutputMode.DirectSound, Player.Instance.Volume); aw.ReactorUsageLocked = true; aw.Play(); aw.ReactorUsageLocked = false; var fader = new PanFade(aw, Player.Instance.Wave, 10, 2000, true, Player.Instance.Volume); fader.StartAndKill(); Player.Instance.NewMedia(ref aw); //Player.Instance.Play(); } } } break; case CycleMode.SongCycle: { if (Items.trackSource != null) { int ind = 0; if (Items.trackSource.Tag != null) { ind = (int)Items.trackSource.Tag; ind++; if (Items.trackSource.Items.Count < ind) { return; } Items.trackSource.Tag = ind; var tracky = Items.trackSource.Items[ind] as TrackViewModel; if (tracky != null && File.Exists(tracky.Path)) { var aw = new AudioWave(tracky.Path, OutputMode.DirectSound, Player.Instance.Volume); aw.ReactorUsageLocked = true; aw.Play(); aw.ReactorUsageLocked = false; var fader = new PanFade(aw, Player.Instance.Wave, 10, 2000, true, Player.Instance.Volume); fader.StartAndKill(); Player.Instance.NewMedia(ref aw); //Player.Instance.Play(); } } } } break; case CycleMode.CycleRepeat: { if (Items.trackSource != null) { int ind = (int)Items.trackSource.Tag; if (Items.trackSource.Tag != null) { ind++; } if (getEnuCount(Items.trackSource.ItemsSource) <= ind) { ind = 0; } var tracky = Items.trackSource.Items[ind] as TrackViewModel; Items.trackSource.Tag = ind; if (tracky != null && File.Exists(tracky.Path)) { var aw = new AudioWave(tracky.Path, OutputMode.DirectSound, Player.Instance.Volume); aw.ReactorUsageLocked = true; aw.Play(); aw.ReactorUsageLocked = false; var fader = new PanFade(aw, Player.Instance.Wave, 10, 2000, true, Player.Instance.Volume); fader.StartAndKill(); Player.Instance.NewMedia(ref aw); //Player.Instance.Play(); } } } break; case CycleMode.Shuffle: { if (Items.trackSource != null) { if (Items.trackSource.GetHashCode() != TrackSourceHash) { PrepShuffles(getEnuCount(Items.trackSource.ItemsSource)); TrackSourceHash = Items.trackSource.GetHashCode(); } int ind = (int)Items.trackSource.Tag; if (Items.trackSource.Tag != null) { ind++; } if (getEnuCount(Items.trackSource.ItemsSource) <= ind) { ind = 0; } var tracky = Items.trackSource.Items[Shuffles[ind]] as TrackViewModel; Items.trackSource.Tag = ind; if (tracky != null && File.Exists(tracky.Path)) { var aw = new AudioWave(tracky.Path, OutputMode.DirectSound, Player.Instance.Volume); aw.ReactorUsageLocked = true; aw.Play(); aw.ReactorUsageLocked = false; var fader = new PanFade(aw, Player.Instance.Wave, 10, 2000, true, Player.Instance.Volume); fader.StartAndKill(); Player.Instance.NewMedia(ref aw); //Player.Instance.Play(); } } } break; default: throw new ArgumentOutOfRangeException(); } } } catch (Exception exception) { Console.WriteLine(exception); } }