Groove~ sync?

Sub Avian Flow's icon

How do I get two groove~ objects to sync? I'm a little puzzled by the use of the sync ramp from the right outlet. One thing I tried was dividing the ratios of both buffers. I got this idea from the demonstration for the elastic~ object extensions. I used two info objects and divided their times in miliseconds to adjust the playback of the one that is slaving to the other loop. I guess my question is more directed towards the sync output. I'm intersted in any examples that might involve syncing two groove objects this way.

monohusche's icon

you could detect the end of the first groove using change~ and edge~ and use this to reset/start the second groove (startloop)

Sergio Granada-Moreno's icon

Hello Raja,

I noticed you mentioned a patch example of groove~ syncing another groove~ but there is no attachment....

Is this included in your Raja'sLil'SamplingTutorial? (https://cycling74.com/tools/rajaslilsamplingtutorial/)
I couldnt find it, probably because your tutorial is really extensive.... could you highlight which encapsulation should I look out?
(I am trying to sync two groove objects and change the phase relationship over time...)

Thanks!

Sergio Granada-Moreno's icon

Yeah thanks for taking the time mate!
I'll work it out throug the weekend and post my results.
All the best.

Sergio Granada-Moreno's icon

Hello again Max community !

Following the advice in this and various other threads I was able to sync three groove objects using groove~s sync output.

My main interest is to avoid discontinuities in a groove-based sampler while making the playback position (start/end loop points) 'jump' backwards, maybe, by switching every bar or whatever between objects… @Rodrigo highlighted this idea properly years ago (https://cycling74.com/forums/how-to-wrap-around-zero-with-minmax-points-in-groove/).

In the attached example there is still the issue already highlighted elsewhere, about getting a phasor~ master clock to match the exact phase of the groove~. I do know (as said by @Peter McCulloch) that "If you want things absolutely locked in, is better to use wave~, rate~ and phasor~ for playback"… however, Id like to use groove~ instead….

Any light on why these two wont sync properly? @Raja, u still there?

Also, does anybody know how could I change continuously the phase relationship that is set by half cycle in-between A & B in the attached example? (as in Reich phase music, for example?) btw, my maths are not so great, and thats probably why I cant figure out this by myself?

Any input on this would be very much appreciatted :D

all the best

groove-sync.maxpat
Max Patch
Sergio Granada-Moreno's icon

hi Raja!
thanks x your input :D

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

It shows how to bang at the end of the loop in both reverse/forward playback using groove~s sync outlet with delta~ —> abs~ –> >~ 0.5

As I understand, sah~ holds the amplitude signal and changes it only when there is a phase wraparound. In this way amplitude remains constant until there is "a transition from the last sample to the first (if forward), or the first sample to the last (if backward)".

My question regarding this example by @PeterMcCulloch is how would it be possible to obtain bangs at other instances of the phase, maintaning the same accuracy? so for example, you could create out of phase copies of the looping wavetable sampler, and vary the phase difference in between them...?

Any commments very much appreciatted.

All the best!
`

Sergio Granada-Moreno's icon

For whoever might be interested in this as well, I found that it is easy to 'wrap' groove~ sync outlet using the modulo operator [%~ 1].... Therefore it is possible to create two looping samplers a half-cycle out of phase from each other via [+~ 0.5] –> [%~ 1] and thence to the window generator.

It is also possible to use Gen~s [wrap] operator which I think functions almost in the same way but is less CPU expensive (not really sure about this)...

:D

chrislos's icon

Hey folks,

I'm currently playing around with some mc.groove ideas.
Does anyone of you know if its possible to resync each individual channel within the mc.groove object?

right now I'm only able to change each individual playbackspeed via mc.sig~ .
It would be so cool also to jump to a certain position in each buffer.

Is that already possible?

so far I can only control the playback position via one number box for all buffers simultaniously.

I hope my question is clear?

Thanks in advance,
Christian

chrislos's icon

Oh, just solved it.
mc.targetlist does the magic.

best
c.