public void HandleAudio(object sender, MusicDeliveryEventArgs e) { if (_format == null) { _format = new WaveFormat(e.Rate, e.Channels); } if (_provider == null) { _provider = new BufferedWaveProvider(_format); } var consumed = 0; if (_playing && (_provider.BufferLength - _provider.BufferedBytes) > e.Samples.Length) { _provider.AddSamples(e.Samples, 0, e.Samples.Length); consumed = e.Frames; } e.ConsumedFrames = consumed; if (_out == null) { _out = new WaveOut(); _out.Init(_provider); if (_playing) { _out.Play(); } else { _out.Pause(); } } }
static void HandleOnMusicDelivery(Session sender, MusicDeliveryEventArgs e) { if (e.Samples.Length > 0) { if (player == null) { if (IsWindows()) { // Use BASS on Windows. player = new BASSPlayer(); Console.WriteLine("BASSPlayer created"); } else { player = new AlsaPlayer(e.Rate / 2); // Buffer 500ms of audio Console.WriteLine("AlsaPlayer created with buffer size {0} frames", e.Rate / 2); } } // Don't forget to set how many frames we consumed e.ConsumedFrames = player.EnqueueSamples(e.Channels, e.Rate, e.Samples, e.Frames); } else { e.ConsumedFrames = 0; } }
private void OnMusicDelivered(Session sender, MusicDeliveryEventArgs e) { if (e.Samples.Length > 0) { e.ConsumedFrames = _player.EnqueueSamples(e.Channels, e.Rate, e.Samples, e.Frames); } else { e.ConsumedFrames = 0; } }
static void session_MusicDeliver(Session sender, MusicDeliveryEventArgs e) { if (e.Samples.Length > 0) { e.ConsumedFrames = player.EnqueueSamples(e.Channels, e.Rate, e.Samples, e.Frames); } else { e.ConsumedFrames = 0; } }
void HandleOnMusicDelivery(Session sender, MusicDeliveryEventArgs e) { try { // Write to LAME. LameEncoder.Write(e.Samples); // Don't forget to set how many frames we consumed e.ConsumedFrames = e.Frames; } catch (Exception ex) { #if DEBUG if (Log.IsErrorEnabled) { Log.Error("Exception", ex); } #endif } }
private int MusicDeliveryCallback(IntPtr sessionPtr, IntPtr formatPtr, IntPtr framesPtr, int numFrames) { if (sessionPtr != _session.Handle) { return(0); } byte[] samplesBytes = new byte[0]; Spotify.SpotifyAudioFormat format = (Spotify.SpotifyAudioFormat)Marshal.PtrToStructure(formatPtr, typeof(Spotify.SpotifyAudioFormat)); if (numFrames > 0) { samplesBytes = new byte[numFrames * format.Channels * 2]; Marshal.Copy(framesPtr, samplesBytes, 0, samplesBytes.Length); } var args = new MusicDeliveryEventArgs(format.Channels, format.SampleRate, samplesBytes, numFrames); _session.OnMusicDeliver(args); return(args.ConsumedFrames); }
/// <summary> /// Deliver the Spotify track's music samples to the player, allowing it to consume as many as it can buffer /// </summary> /// <param name="sender"></param> /// <param name="e"></param> static void MusicDeliver(Session sender, MusicDeliveryEventArgs e) { try { if (e.Samples.Length > 0) { // Let the player consume as many as it can e.ConsumedFrames = Player.EnqueueSamples(e.Channels, e.Rate, e.Samples, Math.Min(e.Frames, e.Rate)); } else { e.ConsumedFrames = 0; } // Where are we playing currently - used for position display numSamplesPlayed += e.ConsumedFrames; currentTrackPos = seekPosition + (int)(numSamplesPlayed / e.Rate) - (int)Player.GetBufferedDuration().TotalSeconds; } catch (System.Exception ex) { logger.Error(ex, "Failure in MusicDeliver: {0}"); } }
private int MusicDeliveryCallback(IntPtr sessionPtr, IntPtr formatPtr, IntPtr framesPtr, int numFrames) { if (sessionPtr != _session.Handle) { return 0; } byte[] samplesBytes = new byte[0]; Spotify.SpotifyAudioFormat format = (Spotify.SpotifyAudioFormat)Marshal.PtrToStructure(formatPtr, typeof(Spotify.SpotifyAudioFormat)); if (numFrames > 0) { samplesBytes = new byte[numFrames * format.Channels * 2]; Marshal.Copy(framesPtr, samplesBytes, 0, samplesBytes.Length); } var args = new MusicDeliveryEventArgs(format.Channels, format.SampleRate, samplesBytes, numFrames); _session.OnMusicDeliver(args); return args.ConsumedFrames; }
void session_MusicDeliverd(Session sender, MusicDeliveryEventArgs e) { e.ConsumedFrames = player.EnqueueSamples(e.Channels, e.Rate, e.Samples, e.Frames); }
internal void OnMusicDeliver(MusicDeliveryEventArgs e) { MusicDeliver.RaiseEvent(this, e); }
/// <summary> /// Called when music is delievered /// </summary> /// <param name="sender"The sender</param> /// <param name="e">The music being delievered</param> private void session_MusicDelivered(Session sender, MusicDeliveryEventArgs e) { e.ConsumedFrames = e.Frames; var stream = client.GetStream(); stream.Write(e.Samples, 0, e.Samples.Length); }
void session_MusicDeliverd(Session sender, MusicDeliveryEventArgs e) { e.ConsumedFrames = player.EnqueueSamples(e.Channels, e.Rate, e.Samples, e.Frames); }
internal void OnMusicDeliver(MusicDeliveryEventArgs e) { MusicDeliver.RaiseEvent(this, e); }
void session_MusicDelivered(ISession sender, MusicDeliveryEventArgs e) { e.ConsumedFrames = e.Samples.Length > 0 ? player.EnqueueSamples(e.Channels, e.Rate, e.Samples, e.Frames) : 0; }
private void OnSessionMusicDeliver(object sender, MusicDeliveryEventArgs e) { if (e.Samples.Length > 0) { e.ConsumedFrames = _player.EnqueueSamples(e.Channels, e.Rate, e.Samples, e.Frames); IsPlaying = true; } else { e.ConsumedFrames = 0; IsPlaying = false; } }
private void OnMusicDelivered(Session sender, MusicDeliveryEventArgs e) { if (e.Samples.Length > 0) { e.ConsumedFrames = _player.EnqueueSamples(e.Channels, e.Rate, e.Samples, e.Frames); } else { e.ConsumedFrames = 0; } }
static void session_MusicDeliver(Session sender, MusicDeliveryEventArgs e) { if (e.Samples.Length > 0) { e.ConsumedFrames = player.EnqueueSamples(e.Channels, e.Rate, e.Samples, e.Frames); } else { e.ConsumedFrames = 0; } }
private void OnMusicDeliver(object sender, MusicDeliveryEventArgs e) { if (!_hasReachedEndOfTrack) { e.ConsumedFrames = _musicPlayer.EnqueueSamples(e.Channels, e.Rate, e.Samples, e.Frames); IsPlaying = true; } }