[PD] timing

Mathieu Bouchard matju at artengine.ca
Wed Dec 22 04:41:39 CET 2010


On Wed, 22 Dec 2010, Dietrich Pank wrote:

> 1. and 2. I don't understand how to approach (I'm on Win btw. but would 
> like about functionality of Jack if it does something I can't do in 
> Win).

Well, I don't know your setup, and I don't do much between Pd and other 
apps, as I tend to do Pd-only projects, so I can't help so much.

But the idea #1 is to transmit the triggers as a signal from the beginning 
and all along : in a Pd-only situation, for example, you could take a 
microphone, multiply its signal with itself using [*~], use [lop~] to turn 
this into an envelope, then use [rzero~ 1] to separate the increasing 
parts from the decreasing ones, then [expr~ $v1>0], [rzero~ 1] again, 
[expr~ $v1>0] again, and now you have triggers in the form of a signal 
containing zeroes and occasionally ones. It's probably a bad example (I 
didn't try it) and would need a lot of tuning in practice, BUT :

The important thing here, is that you're never using anything else than 
sample-rate, so, there are objects you can't use here, which is why I 
didn't use [env~] to make the envelope, because it's not smooth like 
signal-rate, and I didn't use [bonk~] to find the peaks, also because it 
doesn't have that resolution.

The idea #2, now, is that if you really have to start from control-rate, 
and you do have precise timings (as numbers) for future events, then you 
can generate a signal representing those precise timings. That's what 
[vline~] is for. That allows you to deal with objects whose only way to go 
high-resolution is to use a signal, because you can't tell them precise 
timings as messages.

> Could you show me working examples finding and processing sample 
> accurate timed events?

I don't have any.

> How do you use sequencers?

I use them with control-rate. I use smaller blocksize (as low as 4, at 
double samplerate) but that's not because of event resolution, it's 
because my synth is based on feedback, and sometimes it's really 
high-pitched, so the blocksize has to be decreased to accomodate the high 
pitches. As a side-effect, I do get higher resolution of triggering, but I 
don't notice it, because I don't do things that would highlight it.

> What about fast retriggering percussives or delay like effects - isn't 
> the jitter bothering you?

The closest I do, is that I use [delwrite~] and [vd~]. That's at 
sample-rate all along.

> Your abstractions doesn't seem to be part of 0.42.5-extended?

No. They aren't part of anything. I posted them on pd-list this year. I 
attach them to this reply now.

> And what method (1.,2. or 3.) did you use?

They use the formula for the equivalence between [rpole~] and [lop~]. 
Because [rpole~] can be parametrised at sample-rate, this gives you a 
sample-rate [lop~].

> it shots out of screen limit, the scroll bar appears and is very 
> small... so the value must very high.

Insert an [env~] (optionally with [dbtorms]) to find actual numbers.

> Look at it I attached it (you need to touch some controls of the 
> audioscope in order to update correctly - I have a bug there).  

I won't try it now.

>  4. when converting between different sampling rates, change
>     proportionally to sample rate, to avoid having to split/merge blocks
>     (this rarely matters at all)
> i see. (well.. 4. I will understand one day I'm convinced ;)

Well, #4 is really not important to understand.

  _______________________________________________________________________
| Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC
-------------- next part --------------
#N canvas 465 194 328 107 10;
#X obj 191 26 samplerate~;
#X obj 191 7 loadbang;
#X obj 7 45 *~;
#X obj 7 64 rpole~;
#X obj 7 26 inlet~;
#X obj 7 83 outlet~;
#X obj 49 26 inlet~;
#X obj 50 45 expr~ $v1*3.141593*2/$v2;
#X obj 49 64 expr~ 1-$v1;
#X text 57 82 signal-rate [lop~] by Mathieu Bouchard 2010;
#X connect 0 0 7 1;
#X connect 1 0 0 0;
#X connect 2 0 3 0;
#X connect 3 0 5 0;
#X connect 4 0 2 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 7 0 2 1;
#X connect 8 0 3 1;
-------------- next part --------------
#N canvas 0 0 450 300 10;
#X obj 11 12 inlet~;
#X obj 12 54 -~;
#X obj 27 35 lop2~;
#X obj 12 73 outlet~;
#X connect 0 0 2 0;
#X connect 0 0 1 0;
#X connect 1 0 3 0;
#X connect 2 0 1 1;


More information about the Pd-list mailing list