a silly n00b question about buffer playback

Marigold Maripol's icon

hi everyone-

i'm trying to get either wave~ or play~ to allow me to play back various samples with a phasor~, preserving a relative speed. ("1" would ideally always plays the "normal" speed, despite the overall length)
i know this is a frequent topic on here - but i've been through about 20 pages of results, so maybe i'm having trouble coming up with the right query.
can anyone recall a quick way to get to this answer?

Evan's icon

groove~ takes a signal value in it's left inlet to define playback speed (1 equals normal speed .5 equals half speed, -1 equals reverse etc.)
Have you checked that out?
wave~ operates with a phase input, so it is driven by a phasor.
play~ is mostly driven by a line~ object to provide location.

Seems that groove~ is the best option in your case.

Marigold Maripol's icon

Well, the hope was to apply it to a granular synthesis situation - where I would have more control over the starting and stopping points. I could just use some sort of amplitude envelope thing to deal with it, if you think groove~ is definitely the way to go.

Rodrigo's icon

You can define start/stop points for groove and use it to play back grains that way quite easily.

daddymax's icon

if you want to use wave~, i reckon you could load a sample to your buffer, use a command to output the length of the sample (in ms) - if you run that value through a translate object (translate ms to hz) the resulting frequency should give you 'normal' playback speed? It wouldnt take much to make an abstraction that has trigger objects that will load/ output length/ translate/ set phasor~ every time you load/ reload.

Alternately, as others suggested, groove~ is more geared towards playback at original speeds with no extra tomfoolery involved.

Marigold Maripol's icon

great, thanks everyone!

Marigold Maripol's icon

Just to clarify, though - you can only use the stop points for a groove~ if it is in Loop Mode, correct?
I can definitely use the sync out or the envelope duration to modify this, but the actual object doesn't handle single-play grains, right?

Rodrigo's icon

Just have loop turned off and start playback from where you need, you can just envelope the audio so you don't need to "stop" it.

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

I use this super simple grain playback poly (courtesy of Alex Harker) for a bunch of my patches when I need something simple.