why won't groove stop at loop max?!?!?!?!

Eric Sheffield's icon

I feel like I'm losing my mind here.
groove~ is just not listening to the loop max that I send it.
It's starting correctly from the start point, but always plays until the very end of the buffer, no matter what I send it for loop max.
The f***ed up thing is that the sync coming out of the right outlet is behaving as it should i.e. hitting 1. after the expected loop length. Even after the sync hits one, groove keeps playing sound!
What the hell's going on? This happens even in the groove~ help file (it's been a while since I played with Max, so I thought maybe I had totally lost it and forgotten how to use groove).
I'm on OSX 10.6.4 and Max 5.1.5. Totally up-to-date.

Noob4Life's icon

This only happens when you don't have the loop message on. If you send the message "loop 1" it will loop properly and when it gets to loop max, it will start again at loop min. Otherwise, the loop max and min doesn't mean much.
If you want a one-shot play function, you don't even use loop message nor loopmin, instead you set the loopmax, send the left-most inlet a starting position to start, and then use the bang coming out of the edge~ in the helpfile to trigger a stop message. There are other ways of doing the oneshot-groove~, too...

(another annoying bug that's been there awhile is if you set loopmin and loopmax points, then set it for loop interpolation("loopinterp 1"), then trigger without looping on("loop 0"), it will repeat the looped portion once and then play through the whole file... which makes even less sense and is less useable, but groove~ is still pretty useful if you get to know these bugs and their workarounds...)

________________________________
*Never fear, Noob4Life was never here!*

brendan mccloskey's icon

phasor~
+
play~
=
happiness

Tim Lloyd's icon

Nooooo don't use [play~] it aliases like a *snip*! [Groove~] is an all-round better object if you need to be able to adjust the play-rate. If you don't need to adjust the rate of playback, then use [index~]. [Play~] is cool for looping really short sections (ie for granular stuff), but for longer times it aliases quite a lot.

I would suggest:

[cshot~]
+
[index~]
=
happiness
:)

brendan mccloskey's icon

lol

phasor~
+
play~
=
noobiness?

True, I am granulating; will check out cshot~

Brendan

Tim Lloyd's icon

[play~] could do with some improving really. I'm not aware of any reason it couldn't have an optional higher quality mode that created less aliasing.

Eric Sheffield's icon

I don't know how I never discovered that loop max doesn't work with looping off...
It HAS been a while since I last used max.
I put together a patch with play~ and line~ (for small, random segment playback), but I can easily go in and convert back to groove using noob's suggestion...

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

Hi.
Since it's been brought up, I am wondering if I could get a little explanation as to why play~ is so bad?
What I needed was a way for a random slice of a buffer to be played back (at normal speed, double, reverse, and double reverse, all of which I made individual poly~'s for) with a very simple random envelope applied that was the same length as the sample being played.
Here's what I got:

It may not be very efficient (as I mentioned, I haven't patched in a while), but it's working well.
I'm running the sound through a hipass filter and pretty heavy reverb, and it sounds good to me.
Is there any reason why I would still benefit from groove~/index~/etc?