Shifting playback speed and returning strictly on da beat.

radiotonga's icon

I was wondering how straightforward would be to produce an effect on rhythmic, percussive material that:

a) somehow mimics the pitch-shifting mechanics of turntablism (think gradual, continuous change of playback).
b) would be capable of gradually (short ramp) re-accomodating playback strictly to the beat, be it 8th, 16 or 32 subdivisions. It could also be thought in terms of Hz though.

Perhaps b) is not that clear: suppose your messing around with your turntable and have a steady pounding beat behind. Now, everytime you scratch the vynil the thing your playing will land at an arbitrary position around the beat (this would be noticeable especially at slower tempos or lesser subdivisions).

So, if anybody know if this is a simple thing to do in Max or otherwise, I would very much appreciate the info.

kleine's icon

If you're a M4L user, take a look at 'Pitchdrop' - (part of the 'Max Essentials' ableton pack) it does what you describe and if you automate it rhythmically, you're quite there…

Evan's icon

I haven't looked at the Pitchdrop effect that Mr. kleine mentions, I'm sure it is a good resource. But I did build something in Gen~ last night that That allows you to affect stutering and the pitch of a sample, and when you release the effect, it drops you right back into where the sample would have been if you never changed the pitch or playback position.

Bottom line: It's mostly simple, but it depends on your implementation and how you are controlling the effect.

radiotonga's icon

Mr. Kleine and Mr. Evan, thank you gentlemen for this information. I've been looking at the innards of the Pitchdrop effect and it looks like it it just implements a simple crossfade between the wet and dry signals. It is a very wise solution IMHO.

By the way, Mr. Evan, would you care to share this Gen~ patch you're talking about? I'm quite curious, and always eager to learn. Perhaps if you could isolate just that part of your patch which pertains to this subject...

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

Here's the subpatcher with the gen~ inside. I hope I made it apparent how you would use this. You can manipulate pitch on your playback object all you want, and then you can ask this patch to tell you where you would've been. You can then use that to sync the two objects again, rinse and repeat.
It was designed to function with a buffer~, and playback object. The buffer is sliced into 16 parts, so that's why you see a lot of the math constraining things to 16th notes. You could easily adapt this to any division of a length of time with some better mathing.

radiotonga's icon

Thanks Evan, this implementation looks like just what I needed! It's pretty cool that it is buffer independent so it might effectively work as a sort of time guide for real-time stuff. I'll see if I can come up with anything worthy to add to the thread (+3 years at Max and still a lousy patcher, heh).

Evan's icon

Yeah you could use this as an input qunatizer as well. well after 5 years of being a Maxer and I still think my patching is lousy. Glad you found it useful!