i tried to build a delay based on an array.
this works quite well, if your arraysize is always a multiple to the blocksize and your the minimum delaytime is one block (~1.45125 ms).
further i had to add a normal delayline (delwrite~/vd~ pair) for the feedback loop, otherwise pd gave mean error message, that a dsp loop occured.
this way you have access to more functions than in a normal delayline, for example you can now adjust the bufferlength on the fly, etc.....
ok, this is not a reinvention of the wheel, but the technic to work in blocksize and use a delay of one blocksize for the reading position gives you the possibility of building simple ring buffers with arrays and if you stop the writing process(i did not implement yet...), your delay will save it's buffer data, it will not be lost!
-
Array based delay
-
okay, i enhanced it a little, give it a try and tell me what you think!
really freaky sounds are possible with this, especially if you reduce the buffer area at very low delay times and high feedback....
what i still want to implement is a windowing feature to reduce the clicks when tweaking down the buffer reduction. -
thanks! don't have time to play properly now, but i was trying to do a similar thing in max. this is a big help.
-
What does the [arraysize $0_buffer] object do? It doesn't load for me. Does it just return the size of the $0_buffer array?
I'm sure windowing will help with your clicking issue. Maybe this method: http://crca.ucsd.edu/~msp/techniques/latest/book-html/node63.html
would help as well. -
@HD said:
What does the [arraysize $0_buffer] object do? It doesn't load for me. Does it just return the size of the $0_buffer array?
Yep. In Pd-extended, it's in the flatspace library.
-
Gotcha, I generally just stick to using vanilla, and pick and choose a few externals from extended. I can see how this object would be useful though, perhaps I'll grab it.