[PD] Interruption of audio / Loading sound into array

Mathieu Bouchard matju at artengine.ca
Fri Nov 4 17:31:05 CET 2011


Le 2011-11-04 à 11:50:00, Roman Haefeli a écrit :

> The problem with the '[readsf~]-in-an-upsampled-patch' approach is that 
> you cannot know how fast you can do it without interrupting audio. Also 
> you cannot really fine-tune it since you can only set it to a speed to 
> any power of two. Ideally, a threaded [soundfiler] would load the file 
> as fas as possible in the background without interfering with Pd's main 
> process and then it would output a bang when done.

Even if you do tune one [readsf~] to load at an appropriate speed, you 
need global control to figure out how many [readsf~] can run at once and 
how much upsampling you have to do on each. Then you really need to make 
this an abstraction (or a set thereof) because this coordination is 
getting too complex for copy-paste.

Blechmann-and/or-Grill's solution was to make a queue like this :

static struct t_sfqueue {
     t_sfprocess *begin;
     t_sfprocess *end;
     pthread_mutex_t mutex;
     pthread_cond_t cond;
} *soundfiler_queue;

Where each t_sfprocess saves soundfiler messages for later, remembering 
the content and destination... and also the next-pointer for making a 
linked-list.

So, this means that there is only one soundfiler running at a time, which 
might be faster on the hard disk or not. Depends on which hard-disks they 
are on and whether they're cached and stuff. It's hard to get smart about 
it, but running only one soundfiler thread isn't a bad idea.

  ______________________________________________________________________
| Mathieu BOUCHARD ----- téléphone : +1.514.383.3801 ----- Montréal, QC


More information about the Pd-list mailing list