20 March 2007

PureData session on beat controlled delay (pt1)


Today I start already a practical example as an extra means to try to learn PureData. I'm still very pleased by the program. I can run it from my cheap memorystick and it's so small I can even save all the soundfiles and pd files with it.
So I began with an abstraction for the output like the one given in the tutorial (only changing the control to a slider).
Then I added the delay loop. It has the control parameters DELAY TIME (DLY) and FEEDBACK LEVEL (FBK) which are now controlled by a slider. This slider can receive a number as input, so we can attach the result of the extraction algorithm or mapping to the slider itself without having to change anything else.
I now want to implement a multitap delay (where you can specify the number of delayed samples you hear) but using the delay with feedback loop (not with the easier but totally other way).
First I tried to calculate when the level of the nth delayed signal would be smaller than the fraction of the n-1th version. But after a while I realized that the only easy way to do this was by stopping the input of the delay loop after n * DLY.
But also this doesn't work because if you stop input for the loop, also the ongoing delays are not written anymore and only one delay tap rests.
Therefore I tried starting from a multitapdelay to join the two types of delay. But I don't find a way to implement it without having a number of delay reads equal to the max number you want to have. So I don't find a way to do it in a loop...
Then I also want to try to attenuate every feedback copy while it's playing, because now it is played with a constant attenuated level. This can be done sith an envelope maker in the loop or the same effect might be reached by giving an envelope to the overall delayed signal. wow I'm going too fast. This is a feature that migh be useful when using really long delays, otherwise it's really not needed. But in this case it might give some very surprising and creative results (eg by not attenuating but making the feedbacked signal louder as it is played). It would require a lot of control signalling at first sight, so I put it on a long trail. Maybe one evening, who knows...
When I draw it on a paper, it seems that it is equivalent to, or that the only possible thing is to apply a control curve to the feedback level parameter. Let's try that sometime!
I also implemented a panorama block with which you can choose different connections between the left and right channels. One problem I encounter here is that when I try to mix both signals in both outputs, it doesn't give the expected result. Any ideas why? See the image.

No comments: