crossfade loops


    Jan 21 2012 | 10:50 am
    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?

    • Jan 21 2012 | 11:31 am
      I suppose it depends on what your definition of 'fancy' is....
      Brendan
    • Jan 23 2012 | 3:14 pm
      Actually I meant the patch below.
      I searched the forums a bit more thoroughly and found something that helped.
    • Jan 23 2012 | 3:57 pm
      nice one
    • Jan 23 2012 | 4:17 pm
      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
    • Jan 23 2012 | 4:59 pm
    • Jan 23 2012 | 5:27 pm
      edit:
      [trapezoid~ 0.1 0.9] -->
      [*~ 1.5] -->
      [sinx~]
    • Jan 23 2012 | 5:34 pm
      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.
    • Jan 23 2012 | 6:35 pm
      Are you sure?
    • Jan 23 2012 | 7:37 pm
      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.
    • Jan 23 2012 | 9:08 pm
      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
    • Jan 23 2012 | 11:09 pm
      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.