void Tracked_Blip_Buffer::remove_all_samples()
{
	long avail = samples_avail();
	if ( !non_silent() )
		remove_silence( avail );
	else
		remove_samples( avail );
}
Example #2
0
int blip_read_samples( blip_buffer_t* s, short out [], int count, int stereo )
{
  /* can't read more than available */
  int avail = blip_samples_avail( s );
  if ( count > avail )
    count = avail;

  if ( count )
  {
    /* Sum deltas and write out */
    int i;
    for ( i = 0; i < count; ++i )
    {
      int sample;

      /* Apply slight high-pass filter */
      s->amp -= s->amp >> 9;

      /* Add next delta */
      s->amp += s->buf [i];

      /* Calculate output sample */
      sample = s->amp >> phase_bits;

      /* Keep within 16-bit sample range */
      if ( sample < -32768 ) sample = -32768;
      if ( sample > +32767 ) sample = +32767;

      out [i << stereo] = sample;
    }

    remove_samples( s, count );
  }

  return count;
}