crossfade loops

Dave Mollen's icon

I want to crossfade loops and wondered how you guys do this.
So far I figured out how to do ducking, but I would like a crossfade instead.
Because, of course, it's smoother.
And I have found a way to do it, but it isn't a fancy way.

So yeah, anyone?

brendan mccloskey's icon

I suppose it depends on what your definition of 'fancy' is....

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

Brendan

Dave Mollen's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Actually I meant the patch below.
I searched the forums a bit more thoroughly and found something that helped.

brendan mccloskey's icon
brendan mccloskey's icon

and here's a 'reductive' version using [trapezoid~] -> [sinx~] for crossfade time. Pretty much does exactly what the crossfade buffer does, but easier for a n00b like me to understand!

Brendan

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

brendan mccloskey's icon
brendan mccloskey's icon

edit:

[trapezoid~ 0.1 0.9] -->

[*~ 1.5] -->

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

[sinx~]

Dave Mollen's icon

I see.

But actually, I think trapezoid doesn't make a crossfade.
In my first example you see one player fades out and the other fades in.
I don't see the same thing with the trapezoid example.

brendan mccloskey's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Are you sure?

Dave Mollen's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Yeah, I'm sure.
The trick is the phasor goes from 0 to 2 in this case.
When the phasor's value is bigger than 0 it triggers a fade-in
and when its value is bigger than 1 it triggers a fade-out.
So unfortunately trapezoid~ won't work, I guess.
Which is a shame, because to me it looked a lot cleaner.

brendan mccloskey's icon

Sorry Dave
I have to put my hands up - the [cycle~] phase inlet wraparound theory is a bit beyond me I'm afraid, but I take your point.

Best
Brendan

Dave Mollen's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Well,
The phasor going into [cycle~] is going from 0 to 1, so it doesn't have to wrap around.
However the phasor going into [play~] is going from 0 to 2.
This way we can read the buffer from 0-1100ms.
And when one [play] reaches a 1000ms, the other [play~] starts at 0ms.