The attached patch makes the alsa-lib/test/pmc.c generate_sine code
slightly more simple, efficient and readable (but not less accurate),
taking quite some calculation out of the loop.
snd_pcm_uframes_t offset,
int count, double *_phase)
{
+ static double max_phase = 2. * M_PI;
double phase = *_phase;
- double max_phase = 1.0 / freq;
- double step = 1.0 / (double)rate;
+ double step = max_phase*freq/(double)rate;
double res;
signed short *samples[channels];
int steps[channels];
}
/* fill the channel areas */
while (count-- > 0) {
- res = sin((phase * 2 * M_PI) / max_phase - M_PI) * 32767;
+ res = sin(phase) * 32767;
ires = res;
for (chn = 0; chn < channels; chn++) {
*samples[chn] = ires;