now that i know, there's no way for writing index-controlled into a table, i've tried to build a stutter fx in pd, using delaylines.
the problem is, if you set a loop lenghth (delay time) in a delay line, you can only decrease the length of the loop but not increase it... therefor i use 4 stutter patches in this example file for switching between loop lengths of 8th to 64th notes.
but this is very cpu-hungry, on my machine about 8 percent peaks...
the stutter~ abstraction is probably not clean and good programmed - i'm new to pd - but there must be a way to reduce the cpu-load...
hints would be appriciated!
-
Stutter
-
try using [delread~] instead of [vd~].
vd~ is more for applications where you need to constantly modulate the delay length. yours doesn't need that, so [delread~] should work fine.
also, you have an entire sample loaded into a visual array. have a look at using
-
here's my delread loop, I use it to stutter. I dig your patch and am digging into it right now.
any technology distinguishable from magic
is insufficiently advanced. -
thank you both!
@ hardoff: good hints, after i used delwrite~ and kicked out the numberboxes, the cpu load was reduced to 3%.but i still can't figure out, how i could do the job with just one delread~/delwrite~ combo!?
if i start with a loop lenght of, say, 200 ms, and i try to increase the lenght to 300 ms, then i'll get a loop of 300ms with 100ms silence at it's end, because there is no audio input on delwrite~ after triggering the stutter~. i'd have to buffer the signal in the delayline somehow, maybe into an array...
this all would be so easy with an index-controlled tabwrite~ object.... -
you don't need to keep resizing the delwrite~. it can stay at the same size, which would be the time for your biggest loop.
and then with delread~ you'd read either the full loop, or just the first half, quarter, eighth, etc.
i can post a patch if you get really stuck, but i reckon you'll just go 'aha' and figure it out. let me know if you don't.
-
mhh, i didn't mean to resize the lenght of delwrite~, my last post was meant to do it like you described.
changing the loop length means changing the delay time in delread~, ok?
now, if i decrease the delay time from 200ms to 100ms, the new signal with 100ms length will be feeded back into the delay line - when i want to increase the lenghth again to 200 ms , there is only a 100ms signal left in the delayline. the rest of the delayline is "empty". although the loop length is 200 ms, the second half of it is just silence!
is that right, or did i missunderstand something?
NOTE: the stutter patches i have seen til now, always grab a new piece of the input signal, when changing the loop length. i want to use one and the same sound-snippet after triggering the stutter-fx. for example, i want to repeat the first snare hit in a drumloop - in 4th to 32th notelength and back.
would be really nice, to see a little patch, working like i want it to. -
I think you could set this up by using a delwrite/read combo for your maximum stutter length (i.e. 4th) that has feedback but no output, and then use a second vd~ with the same name to generate your output. For a 4th this would be constant at 0, for the other divisions you'd have to setup a metro at delaytime/divisions. For example if your 4th are 200ms, to get 16th the vd~ would read the delayline at 0 for 100ms, then at 100 for 100 ms, then at 200 etc. I playing arround with something similar, but I'm still slow in pd so I haven't tested it yet but i think it should work.
-
yes! i thing grg has got what i failed to figure out here.
you only need one delwrite~, and then one delread~ that feeds back into the delwrite~ at the longest loop length. and then ONE MORE delread~ (or vd~) to readout and send output, but not feedback.
that should work now, right?
go team!
-
>>NOTE: the stutter patches i have seen til now, always grab a new piece of the input signal, when changing the loop length. i want to use one and the same sound-snippet after triggering the stutter-fx. for example, i want to repeat the first snare hit in a drumloop - in 4th to 32th notelength and back.
would be really nice, to see a little patch, working like i want it to.<<in that case, you probably should go back to a [tabwrite~]-based process.
-
thank you all for your help.
yes, the idea with the second delread~ is good, i'll check it out soon.
but i found out, that it also works with tabwrite~, i must have done something wrong when i tried it the first time....
for those who are intrested, i'll attach the patch to this post, maybe someone has ideas to improve it!?
when you set speed to 1 (i.e. one bar length) then you will hear a silent scratchy sound the first time it loops.... no glue, what that is... ideas? -
i enhanced the patch i attached in the last post a bit, but still i have a problem:
when tweaking the notelength, while the effect is on, there occur scratches and crackles. ideas how to avoid that crackling sound?