Removing clicks from a time based groove trigger

    Apr 22 2014 | 8:45 pm
    Hello All,
    I have a M4L patch that captures audio and slices it into 8 divisions to be played on the Push (ala MLR). I've got this thing working pretty flawlessly except for the clicks happening when I trigger different time points in my ~groove object.
    I have been debating what the best (and most efficient way) of addressing this would be. Simply have 8 different groove~ objects with different start points and thier own envelope? But then I would have to sequence them Which I would rather not do. Or could i have 2 identical buffers, and do some type of windowing to fade between them?
    Any suggestions?

    • Apr 22 2014 | 10:29 pm
      yes. absolutely. 8 different groove~ objects. no problems. that's what i'd do. sometimes i create an extra 8, they don't do anything, just for backup in case the computer forgets the first 8. (2 identical buffers is how they did it in mlrV... but is still similar to the 8 buffer~ idea, heheheheheheheheheeeeheheeeheeeeee.. wait.. why am i laughing? O_o)
      under no circumstances would i use any of the techniques in this shitty tutorial:
      (please excuse my mischievous reply here, sometimes i feel... i must live up to my name ;D)
    • Apr 24 2014 | 8:02 pm
      Thank you AssWipe!
      I implemented the switch & ramp into my patch, and it definitely makes things a bit smoother and less clickity clackity.
      I'll have a go over your sampling tutorial as well, looks to be fairly exhaustive. I appreciate the assistance from a fellow bay are resident (asswipe).
    • Apr 24 2014 | 9:21 pm
      ^Haha, yay! I feel like i've been waiting years for someone to refer to me as asswipe here (love to see it in writing, thanks for going with it) :)
      The switch&ramp doesn't account for changes in slope(so there's still a chance of another type of click besides the usual... 'sample-difference/disparity click'.. but it doesn't happen as often and usually sounds more like a lopassed click(i don't mind it on beats or synths, but if you were sampling a live panflute or something(hehe... like an electroacoustic-panflute rockstar! :D)... maybe you'd want something closer to ideal...)).
      The double-buffered idea you had shouldn't be ruled out either... it would actually use the same buffer~ but 2 different crossfading groove~s(especially for highly synced granular playback stuff)... but for something like MLR, may be overkill in terms of resources...
      Declicking is something i ran into often in max over the years(can you tell?! >:D), it's good to get to know as many options as you can.
      Glad to be of help, Cheers!
    • Apr 24 2014 | 9:28 pm
      Yeah there are still some 'clicks' (maybe bumps is a better word?), but this was so fast, and I'd rather start rehearsing/creating with this again rather then go down the rabbit hole of programming something else at the moment.
      I will be using this on all types of sources, elec/acoustic guitar, bass, and all types of synths and drums, and to be honest, I don't even mind the small discontinuities. Gives everything a bit of percussive presence when used in practice.
      I think the double buffered thing could be interesting, and useful for more than just de-clicking. But now I can see myself peering down the rabbit hole....
    • Nov 27 2014 | 6:34 am
      How about this? think polyphony.
    • Nov 27 2014 | 8:28 pm
      jbones1000 MASSIVE thanks for that! Tried it with a bunch of different samples and it appears flawless thus far.
      + 1 for the resident asswipe's lil sampling tutorial too. Some great tips/ideas in there
    • Dec 15 2014 | 3:21 pm
      Hi guys,
      I wondered if you could help me too. I've made a MLR type chopper like Evan and tried to implement JBONES1000 clicklesstrigger, however, it doesn't seem to have made a difference. I'm a bit of a MAX noob so any help trying to crossfade between the two grooves would be good!
    • Dec 15 2014 | 3:55 pm
      tutorial is excellent. Thank you for making it!
    • Dec 15 2014 | 4:21 pm
      It's hard to see where you're going wrong without a patch to look at. I got that example working pretty well.
    • Dec 15 2014 | 4:22 pm
      It's hard to see where you're going wrong without a patch to look at. I got that example working pretty well.
      Thanks for that patch. Nice, quick example, I may have to try and implement this the next time I dig in.
    • Dec 16 2014 | 9:13 am
      LOL. I must've only selected one item when copying that!
      Try this one.
      It certainly works, as its triggering each one after one, but I don't think the fades are working well.
    • Dec 16 2014 | 2:16 pm
      I see a few potential problems in this patch actually. The way you're reading through the Buffers is changing the loop lengths? I might rethink that, and just tell the groove~ to play from a certain spot, and continue playing. It doesn't seem to me that you need the sample divided into consecutively playing loops of 1/16th the size. I think that might be introducing clicks in the audio as well. I just played the audio loops without redefining loops and the clicks are gone.
      Also think about the timing, and when you actually need to crossfade. If you only switch the playhead on user input, you only have to fade on user input, which would make this a lot more efficient, and you could explicitly have the new groove jump to the new play position THEN fade. It seems like you aren't doing any carefully handled timing things in your patch (the trigger object is your friend).
    • Dec 17 2014 | 8:11 am
      Thanks Evan. I can't believe I didn't think of that. That's an old trick I used to use in my MPC and SP404 days, just chopping at the start point!
    • Dec 17 2014 | 9:50 am
      preqwal: I couldn't help it.