Forums > MaxMSP

groove~ slow down

May 16 2011 | 7:09 pm

Hello to all, I would like to ask how I could control the speed of the loop play back to a groove object, I am scrubbing in a buffer through the waveform object but without controlling the speed of the grains.

May 16 2011 | 7:14 pm

Take a look at the help file for [groove~] it shows all kinds of options for controlling playback.

May 16 2011 | 7:22 pm

well, it was the first thing I did before posting, but I understand I can only control the speed in half of it or play it backwards, what i mean is more a variable speed playback.Thanks

May 16 2011 | 7:28 pm

use different values like 0.9, 0.8, 0.75, etc.

May 16 2011 | 7:44 pm

I am just changing the pitch in that way.Maybe is better to enclose here the patch.

``````
-- Pasted Max  Patch, click to expand. --

```
```
May 16 2011 | 8:02 pm

Ah, I see. You may need some sort of combination of [groove~] with [gizmo~] to change the speed of playback and then shift the frequencies back to the original level.

May 16 2011 | 8:33 pm

I will try, I thought it was much more easier, thank you though for your help!

May 16 2011 | 8:49 pm

I found that I have to invert the number of the speed playback to the gizmo~ pitch value but I don’t remember what was the object for inverting float numbers

May 16 2011 | 9:03 pm

When you say invert, do you mean convert f to 1/f, or do you mean convert f to -f? The first can be done with [!/1.], and the second with [!- 0.].

May 16 2011 | 9:15 pm

Well it works but even though doesn’t solve the problem, I think a mathematical expression is needed here..I don’t know the what the relation now should be between gizmo~ and playback

May 16 2011 | 11:27 pm
``````
-- Pasted Max  Patch, click to expand. --

```
```
May 17 2011 | 8:11 am

Hello and thank you for your assistance, although I still changing the pitch after a certain value in the play factor, please have a look maybe I didn’t make the proper connection as you intended to…thanks!

``````
-- Pasted Max  Patch, click to expand. --

```
```
May 17 2011 | 9:05 am

ok, sorry i was not clear, and sorry i got confused by your patch, so i just did this simple demo over morning coffee:

``````
-- Pasted Max  Patch, click to expand. --

```
```
May 17 2011 | 7:54 pm

Hi No Worries, although still I don’t find how to increase or decrease the grain playback, you think has to do with the [groove~] would be there any other involvement with other objects to create this control over time?

May 18 2011 | 11:10 am

hmm. i’ve been misunderstanding you maybe. you mean you want to be able to retain the speed of traversal regardless of loop length ("grain"?) ? if so, it is just another little calculation. the below has got a bit needlessly messy now as things added in a rush; with it you can change loop length, change speed, change pitch, all independently and together, depending on settings. you’ll have to patch up how you want it. if you get sick of gizmo~ (most of us do) and sick of the latency, you maybe want to have a look at the granular approach of the brilliant mattjis: http://cycling74.com/toolbox/kneppers-granular-stretcher/

``````
-- Pasted Max  Patch, click to expand. --

```
```
May 18 2011 | 12:49 pm

Independent loopSize, pitch, scrubSpeed and direction here, without [gizmo~]:

Search here and elsewhere for "free elastic", although admittedly I didn’t look at your patch, so it might not be exactly what you are looking for.

I really should build this as a standalone,

Best
Brendan

May 18 2011 | 3:33 pm

Hello guys thank you both for your assistance and especially Pid for spending time to my enquiry, about the elastic object attracts me as an idea but I have to confess that using externals is risky for originality,in my opinion, but I will have a look even though I am not on paying for externals..thanks guys.

May 18 2011 | 9:05 pm

@konstantinosvasilakos, both the granular approach i linked to above AND ‘free-elastic’ are abstractions and not externals, so there is no problem with taking them apart to learn, which is what their authors intended.

@brendan & @konstantinosvasilakos: ‘free-elastic’ is an abstraction that uses the ‘gizmo~’ object !!! practically copied from the help file! but no bad thing because of that. in fact looking at free-elastic again now (to check i was not going crazy) my solution above is almost the same.

good luck.
(maybe one day msp will have high quality pitch-time-compression-expansion-etc algos!)

May 18 2011 | 10:54 pm

@pid

my bad, was not aware that gizmo featured in free elastic (I should try before recommending in future), I’ve seen demos of both elastic and free elastic and they both get a little artefact-y at extreme settings

but………

my granulator engine linked above uses just [play~] and [phasor~], and works really nicely!

Best
Brendan

May 19 2011 | 8:26 am

yes brendan in my haste i forgot to say – great granular patch! i was just pointing out a couple things before. in fact in my example above i even commented it saying i use play~ or wave~ with phasor~ and rate~ myself. i was just trying to show the groove~ approach. groove~ sounds better of course, so for very small shifts the groove~ way is best. your way is about granularisation though, which is a certain aesthetic. the mattjis kneppers is great because is is granular (no delay) and about pitch/time shifting only. there are all these different ways to do it but sadly one has to embrace artifacts or go buy a licence from izotope.

May 19 2011 | 8:37 am

Well the gizmo~ is really something that tends to my ears to be heard, I am not aware though about another way of pitch shifting available in Max..is any other object that evolves pitch processing?

May 19 2011 | 9:42 am

@pid

you might be interested in this great thread (which I found very helpful in differentiating between play and groove functionality – you may well already know this):

http://cycling74.com/forums/topic.php?id=26110

@konstantinosvasilakos

here’s a great demo of using tapin/out to achieve pitch-shifting: