[LAD] Adding a c timer to Kluppe

Patrick Shirkey pshirkey at boosthardware.com
Tue Apr 20 13:12:59 UTC 2010


Hi,

I'm trying to add a threaded timer to kluppes looperdata.c 
looperdata_calc_sample_stereo function so that I can add a delayed 
restart to the loop process.

Can anyone tell me why the "while" statement in the following code locks 
up the audio stream for the loop it is being run on? I end up with a 
buzz throughout the delay period instead of a nice quiet delay period.



#include <stdlib.h>
#include <signal.h>
#include <stdio.h>

/* This flag controls termination of the main loop.  */
volatile sig_atomic_t isdelay_countdown = 1;

/* The signal handler just clears the flag and re-enables itself.  */
void catch_alarm (int sig){
   isdelay_countdown = 0;
   signal (sig, catch_alarm);
}



     vol = data->vol;

                 if(data->playbackdelay > 0){

                     /* Establish a handler for SIGALRM signals.  */
                     signal (SIGALRM, catch_alarm);

                      isdelay_countdown = 1;

                       /* Call alarm to countdown length of 
playbackdelay  */
                       alarm ((int)data->playbackdelay);

                       /* Check the flag once in a while to see when to 
quit.  */
                       while(isdelay_countdown){
                         looperdata_set_vol(data,0);
                         data->isplaying = 0;
                      }


                 }

/* return to start of loop */

                     looperdata_set_vol(data,vol);
                     data->isplaying = 1;
                     data->playindex += data->loopstart - data->loopend;




--
Patrick Shirkey
Boost Hardware Ltd




More information about the Linux-audio-dev mailing list