private static int MusicDeliveryCallback(IntPtr sessionPtr, IntPtr formatPtr, IntPtr framesPtr, int num_frames) { Session s = GetSession(sessionPtr); if (s == null) { return(0); } int consumed = 0; byte[] samplesBytes = null; libspotify.sp_audioformat format = (libspotify.sp_audioformat)Marshal.PtrToStructure(formatPtr, typeof(libspotify.sp_audioformat)); if (num_frames > 0) { samplesBytes = new byte[num_frames * format.channels * 2]; Marshal.Copy(framesPtr, samplesBytes, 0, samplesBytes.Length); } else { samplesBytes = new byte[0]; } if (s.OnMusicDelivery != null) { MusicDeliveryEventArgs e = new MusicDeliveryEventArgs(format.channels, format.sample_rate, samplesBytes, num_frames); s.OnMusicDelivery(s, e); consumed = e.ConsumedFrames; } return(consumed); }
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 } }
void SpotifySession_OnMusicDelivery(Session sender, MusicDeliveryEventArgs e) { if (e.Samples.Length > 0) { if (player == null) { //player = new AlsaPlayer(e.Rate / 2); // Buffer 500ms of audio player = new BassPlayer(); Console.WriteLine("Player created"); } // Don't forget to set how many frames we consumed e.ConsumedFrames = player.EnqueueSamples(new AudioData(e.Channels, e.Rate-12, e.Samples, e.Frames)); /*X.Maximum = (float)currentTrack.Duration; X.Value +=10;*/ } else { e.ConsumedFrames = 0; } }
private static int MusicDeliveryCallback(IntPtr sessionPtr, IntPtr formatPtr, IntPtr framesPtr, int num_frames) { Session s = GetSession(sessionPtr); if (s == null) return 0; int consumed = 0; byte[] samplesBytes = null; libspotify.sp_audioformat format = (libspotify.sp_audioformat)Marshal.PtrToStructure(formatPtr, typeof(libspotify.sp_audioformat)); if(num_frames > 0) { samplesBytes = new byte[num_frames * format.channels * 2]; Marshal.Copy(framesPtr, samplesBytes, 0, samplesBytes.Length); } else samplesBytes = new byte[0]; if(s.OnMusicDelivery != null) { MusicDeliveryEventArgs e = new MusicDeliveryEventArgs(format.channels, format.sample_rate, samplesBytes, num_frames); s.OnMusicDelivery(s, e); consumed = e.ConsumedFrames; } return consumed; }
void session_MusicDeliver(ISession sender, MusicDeliveryEventArgs e) { e.ConsumedFrames = player.EnqueueSamples(e.Channels, e.Rate, e.Samples, e.Frames); }
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; } }