audio delay with playback speed control

Alexandra's icon

hi everyone,

i'm just getting back into some max stuff, after a few years of barely having touched it...

one thing i'm trying to do is to make a delay that plays back the delayed signal at twice the speed of the original

i want to feed the delayed audio into outboard processors and then back into max, so that the sounds stack upon each other with each generation, getting faster and faster with every cycle (and higher in pitch too)

the delay should be relatively long, something like 30 seconds. it's more about creating a thick web of sped-up sounds than having an audible "echo" type delay sound.

tapout~ unfortunately doesn't have a playback speed control

i've been messing around with a record~ object, a buffer~, and a groove~, and i'm able to record incoming sound and then play it back at twice the speed, but not at the same time. if i'm not mistaking, it's not possible to record into a buffer~ and play back it's already recorded contents at the same time. the logic for triggering a record and faster-playback mechanism switching between multiple buffers fails me at the moment...

if anyone has any ideas to share about how to achieve this, i'd love to hear about it!

thanks!
alex

AndyW's icon

On Fri, 13 Feb 2009, beschaving wrote:
-&e->
-&e->hi everyone,
-&e->
-&e->i'm just getting back into some max stuff, after a few years of
-&e->barely having touched it...
-&e->
-&e->one thing i'm trying to do is to make a delay that plays back the
-&e->delayed signal at twice the speed of the original
-&e->
-&e->i want to feed the delayed audio into outboard processors and then
-&e->back into max, so that the sounds stack upon each other with each
-&e->generation, getting faster and faster with every cycle (and higher in
-&e->pitch too)

Well, there has to be some sleight of hand here, what you're asking for
is valid, but the way you're going about it is impossible without some
trickery.

Say for example, you were reading a book, and I'm 30 pages behind you
reading the same book, reading twice as fast (you're the present, I'm the
delay). Eventually I'd pass you. Problem is, we're talking about
realtime audio, and you don't get to pass the present.

So you want the illusion of it speeding up, but for it to never "pass" the
present.

There are a few approaches to get the effect you're talking about without
having to disrupt our lovely Newtonian view of spacetime:

1. Normal feedbacking delay, and in the feedback segment, you place a
pitch shifter. So what you put in it comes back, however many seconds
later, at a slightly higher pitch, and then again after the same amount of
time even higher, etc. The problem, is I think you want something
messier, where the echoes seem to keep swirling faster and faster in
addition to raising in pitch.

2. You could do a larger version of what most pitch shifters do when
pitching stuff 'up', and basically imagine 2 or more seperate delays, that
as they reduce in delay time from say 30 seconds to 10 seconds, also fade
out a bit, then reset at 30 seconds and fade in again. The reason you'd
need multiple ones is to mask that fade in fade out behavior, by having
them leapfrog.

I'm not at a machine where I can use max right now (stupid sysadmin job
and lack of a linux port of Max :P ) but I'll see if I can send out my
hack at what you're describing this weekend as I've been wanting a nice
psychedelic swirly delay thing for my own work for a little while now.

andyw

p.s. oh, and hello list, i've been posting a bit lately after lurking for
*years*. just got upgraded to max5/jitter a few months ago and I'm loving
it, so I figured I'd play along on the list and answer some of the
questions now and then. it's the karmic cross we all bear for those who
answered questions before.

Tj Shredder's icon
Timo Rozendal's icon

I agree with AndyW
however, I think the pitching effect CAN be done with tapin and tapout where you would have to change the delaytime with an audio signal at a constant rate (still you need to fade between a few delay lines to obtain a constant sound).

here is an example with 2 delay lines and hard switching (I'll leave the fading to you):

Max Patch
Copy patch and select New From Clipboard in Max.

stefantiedje wrote:
>Of course you can record and playback at the
> same time. Only thing, you would get a click, if the playhead passes the
> record head probably...

passing the record head is tricky in max, it can introduce a weird samplerate reduction like effect that persists until you stop and play again. It's safest to always keep a signal vector size distance.

Alexandra's icon

thanks everyone!

right... i'm trying to get my head around your responses. i'm pretty much new to building to my own patches.

my intention is to play live guitar (for example) into the patch and then have a long delay, say 10 or even 30 seconds, before the patch starts playing back what i did, at twice the speed and pitch (for example). it doesn't have to be triggered by particular events. i would simply click somewhere in the patch, start playing, and at some point the patch would start adding layers to it.

let me think aloud here to understand the process (i'm not so good with numbers)... let's say i want a 10 second delay, but played at twice the speed and pitch of the original. i play guitar for 10 seconds, while the patch records this. after ten seconds have passed, i want the previous ten seconds to be played back by max, at twice the speed, while i continue playing guitar. so then i'd have live playing plus the recorded past, but compressed to five seconds. i want both of these signals to be recorded too, feeding back the max output into the max input. max should loop the sped-up playback once, to cover the time it takes for the next pass. then, now 20 seconds in, the previous ten seconds are again played back, now combining two generations, plus my live playing, etc.

the feeding back into max i would do via a mixer, to add outboard processing.

how does one paste a patch into the forum so that it shows up compact like that?

jvkr's icon

Hi Beschaving,

The copy compressed from the edit menu is the answer to the last question.
The effect that you're looking for is performed by a plugo I built a while ago called discorporate. It's a good medicine for these times. (www.jvkr.nl/shelves)
It works like this:

Max Patch
Copy patch and select New From Clipboard in Max.

_
johan

Alexandra's icon

here's my pathetic attempt so far:

Max Patch
Copy patch and select New From Clipboard in Max.

it sort of does what i want, at least it records into and plays back from the same buffer at the same time, and it sort of creates multiple generations of sped-up delayed recordings...

any subtle hints to link the recording and playback looping, so that the process keeps going, would be appreciated...

thanks!
alexandra

Bryan Dodson's icon

I was thinking about this exact effect last night driving home from school. I too am new to patching, so I can't tell you exactly how to get from a to b, but my idea was to have a few networks of looping buffers, each one playing at a speed faster than the one before it. if you had a 30 second input that you wanted to apply this effect to, and you want it to repeat a few times going faster each time, then you'd have a 30 second buffer that would write to a 20 second buffer going at 3/2 the speed of the one before it giving it a total time of 20 seconds, and that buffer would write to a 10 second buffer going at 2 times the speed of the buffer before it, etc. I'm not sure how easy it would be to adjust, because you'd have to set up the buffers individually... but if you set up enough buffers beforehand you should be able to adjust the feedback and have it carry through, and the last buffer can either just stop or feed back into itself. I hope this makes sense, it seems logical to me...