groove looper queries

christiancurtis's icon

I'm strugling with this patch a little. The main things at the moment are.

- I need a global clock. If I reverse/slow/scrub the playback, I need when I release the button for the playback to snap back to where it would have been if i hadn't reversed/slowed/scrubed it. This is important also because I'm going to have several different loops playing, so they will need to stay in time with each other.

- I need the line showing playback possition in the waveform~ object window to accurately represent where playback is. Currently I am multiplying the groove~ Loop Sync Output by a division of the msec length taken from the info~ object. I'm not sure if this is the best way. Also, I'm not sure how to get the number to be multiplied by to update itself when I import a sample.

566.groove_looper_20.05.10_1.maxpat
Max Patch
christiancurtis's icon

By the way. If the global clock could also drive the poke~ object to write audio into the buffer that would be amazing as well...

mudang's icon

If you want different loops to be in sample-accurate sync, you need to use a player object that let's you set the playback position with an audio signal (like play~ for example).
You would then use [phasor~] or [sync~] as a master clock.
This question gets asked a _lot_, so there are already many helpful threads on the list.

About [waveform~]'s playback position:
I don't know bout the bpm units...but if you leave the unit in ms [line ms] (default) you only need to multiply groove's sync out with the sample length in ms and you'll be fine.