Groove patch
Hi, I am trying to make a looper using groove~ modules.
I would like to use just standard max msp externals, and for this reason I am not using Xgroove~.
I've made some attempts but the looper doesn't work as expected, and I am running out of ideas.
The looper should handle sound files, allow adjustable crossfade (range in ms), and allow continuous variable speedrate.
Can someone help me?
Here's the patch I am working on at the moment.
Thank you very much,
Carlo
did you want to crossfade between two separate soundfiles?
if so, you need another buffer with another name.
clean it up a bit, and I think you've basically got it
some of this may help...
one of the more important things to remember is to grab your loop point at signal-rate.
jl
well, actually I need to loop a single soundfile using 2 groove~ modules
crossfading each other.
Carlo
----- Original Message -----
From: "Michael"
To:
Sent: Monday, January 14, 2008 8:51 PM
Subject: [maxmsp] Re: Groove patch
>
> did you want to crossfade between two separate soundfiles?
> if so, you need another buffer with another name.
>
> clean it up a bit, and I think you've basically got it
Hi thanks for your help,
what do you mean for "example config of loop"?
Doesn't snapshot good enough to grab the loop points? Actually, it is a
signal-rate value.
Best,
Carlo
----- Original Message -----
From: "jLubow"
To:
Sent: Monday, January 14, 2008 8:56 PM
Subject: [maxmsp] Re: Groove patch
>
> some of this may help...
> one of the more important things to remember is to grab your loop point at
> signal-rate.
>
> jl
>
> #P window setfont "Sans Serif" 9.;
> #P window linecount 1;
> #P comment 150 275 118 196617 < example config of loop;
> #P comment 361 289 118 196617 < example config of loop;
> #P button 323 76 15 0;
> #P message 62 243 14 196617 0;
> #P newex 296 203 27 196617 / 4.;
> #P flonum 152 200 52 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 48 149 60 196617 loadmess 1;
> #P newex 119 385 36 196617 edge~;
> #P toggle 119 405 29 0;
> #P newex 119 365 33 196617 >~ 0.;
> #P newex 119 345 38 196617 delta~;
> #P newex 232 485 27 196617 *~;
> #N vpatcher 488 273 843 613;
> #P window setfont "Sans Serif" 9.;
> #P newex 58 98 27 196617 + 1;
> #P window linecount 1;
> #P message 115 175 50 196617 1. , 0. $1;
> #P message 225 174 50 196617 0. , 1. $1;
> #P newex 58 58 27 196617 t i b;
> #P newex 58 132 67 196617 gate 2;
> #P inlet 132 31 15 0;
> #P newex 115 94 27 196617 f;
> #N comlet OUTput value ramp;
> #P outlet 170 263 15 0;
> #P newex 170 228 32 196617 line~;
> #N comlet OUTput value ramp;
> #P outlet 58 263 15 0;
> #N comlet Fade IN - bang;
> #P inlet 58 31 19 0;
> #P window linecount 0;
> #P message 170 174 50 196617 1. , 0. $1;
> #P message 58 174 50 196617 0. , 1. $1;
> #P newex 58 228 32 196617 line~;
> #P connect 3 0 10 0;
> #P connect 10 0 13 0;
> #P connect 13 0 9 0;
> #P connect 9 0 1 0;
> #P connect 12 0 0 0;
> #P connect 1 0 0 0;
> #P connect 0 0 4 0;
> #P connect 10 1 7 0;
> #P connect 7 0 9 1;
> #P connect 9 1 12 0;
> #P connect 8 0 7 1;
> #P connect 9 0 2 0;
> #P connect 11 0 5 0;
> #P connect 2 0 5 0;
> #P connect 5 0 6 0;
> #P connect 9 1 11 0;
> #P pop;
> #P newobj 119 452 140 196617 patcher FADEin-out;
> #P message 48 176 165 196617 loop $1 , loopinterp 1 , startloop , 0;
> #P newex 48 493 27 196617 *~;
> #P newex 232 304 81 196617 groove~ sound1;
> #P message 158 560 29 196617 stop;
> #P message 90 560 67 196617 startwindow;
> #P newex 49 602 31 196617 dac~;
> #P flonum 83 275 62 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P flonum 296 174 59 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 218 141 105 196617 info~ sound1;
> #P newex 151 219 38 196617 sig~ 1;
> #P newex 48 305 81 196617 groove~ sound1;
> #P message 150 52 43 196617 replace;
> #B color 6;
> #P newex 150 110 78 196617 buffer~ sound1;
> #P newex 49 518 194 196617 +~;
> #P window setfont "Sans Serif" 10.;
> #P comment 32 52 128 196618 first , load an audio file;
> #P window setfont "Sans Serif" 12.;
> #P window linecount 6;
> #P comment 324 457 176 196620 This looper should: 1) - Loop a soundfile
> 2) - Allow crossfade (specifying a range in ms) 3) - allow continuous
> variable speedrate any help?;
> #P window setfont "Sans Serif" 9.;
> #P window linecount 1;
> #P comment 358 228 91 196617 Fade Time (ms);
> #P flonum 296 226 55 9 0. 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 331 286 27 196617 + 0.;
> #P connect 18 0 8 0;
> #P connect 18 0 16 0;
> #P connect 11 0 8 2;
> #P connect 11 0 27 0;
> #P connect 9 0 8 0;
> #P connect 9 0 16 0;
> #P connect 5 0 13 0;
> #P connect 5 0 13 1;
> #P connect 1 0 19 1;
> #P connect 1 0 16 1;
> #P connect 1 0 0 0;
> #P connect 1 0 0 1;
> #P connect 22 0 24 0;
> #P connect 21 0 22 0;
> #P connect 8 1 21 0;
> #P connect 0 0 16 2;
> #P connect 29 0 10 0;
> #P connect 17 0 5 0;
> #P connect 20 0 5 1;
> #P connect 26 0 9 0;
> #P connect 28 0 8 0;
> #P connect 8 0 17 0;
> #P connect 27 0 1 0;
> #P connect 25 0 18 0;
> #P connect 24 0 23 0;
> #P connect 23 0 19 0;
> #P connect 19 1 20 1;
> #P connect 19 0 17 1;
> #P connect 6 1 10 0;
> #P connect 10 6 11 0;
> #P connect 16 0 20 0;
> #P connect 15 0 13 0;
> #P connect 14 0 13 0;
> #P connect 12 0 8 1;
> #P connect 7 0 6 0;
> #P window clipboard copycount 32;
>
snapshot converts a signal- at audio rate- control rate data stream at a given time interval.
it's not as efficient, and you'll not see any more accuracy with this methodology. it does work really well for other types of patches, but i tend to try to stay away from it because of the amount by which it taxes the CPU.
instead i'd recommend the delta~ reading; for more info on this check the archives.
as for the "example"; it's just an example of some loop points you might want to set along with another example of a way to set them dynamically.
jl
Carlo Laurenzi schrieb:
> Doesn't snapshot good enough to grab the loop points? Actually, it is a
> signal-rate value.
snapshot~ is polling the audio values. That is expensive, because most
of the time it gets values which are not important. I always use edge~
to find a specific point in an audio signal...
Good for fading the signal of groove~ is trapezoid~ by the way. Can be
directly controlled by the sync output of groove~...
not as clean as my other examples, but take it as a starting point:
--
Stefan Tiedje------------x-------
--_____-----------|--------------
--(_|_ ----|-----|-----()-------
-- _|_)----|-----()--------------
----------()--------www.ccmix.com
Hi Stefan,
Thank you very much for your insight.
I don't understand why Groove~ modules stop playing and crossfading if I
play the loop in reverse (setting -1 speedrate, for example).
Playing loops in reverse is one of the things I need the most..
Can you help me?
Thank you.
Carlo
----- Original Message -----
From: "Stefan Tiedje"
To:
Sent: Wednesday, January 16, 2008 10:56 AM
Subject: Re: [maxmsp] Re: Groove patch
> Carlo Laurenzi schrieb:
>> Doesn't snapshot good enough to grab the loop points? Actually, it is a
>> signal-rate value.
>
> snapshot~ is polling the audio values. That is expensive, because most of
> the time it gets values which are not important. I always use edge~ to
> find a specific point in an audio signal...
>
> Good for fading the signal of groove~ is trapezoid~ by the way. Can be
> directly controlled by the sync output of groove~...
>
> not as clean as my other examples, but take it as a starting point:
>
> #P window setfont "Sans Serif" 9.;
> #P window linecount 1;
> #P newex 108 82 32 196617 sel 1;
> #P newex 54 150 54 196617 t f 0. stop;
> #P newex 290 232 13 196617 f;
> #P newex 422 201 55 196617 clip 0. 0.5;
> #P newex 422 147 13 196617 b;
> #P newex 464 229 30 196617 !- 1.;
> #P flonum 459 180 62 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 422 180 35 196617 !/ 20.;
> #P flonum 447 113 50 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P flonum 367 113 62 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 280 85 33 196617 sel 0.;
> #P newex 236 63 101 196617 info~ hitme;
> #P newex 287 133 13 196617 b;
> #P flonum 118 127 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 262 155 62 196617 !- 0.;
> #P newex 391 279 44 196617 ==~ 1;
> #P newex 259 279 44 196617 ==~ 1;
> #P user number~ 346 348 385 363 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221
> 221 222 222 222 0 0 0;
> #P message 425 345 49 196617 startloop;
> #P message 293 348 49 196617 startloop;
> #P user number~ 194 348 261 363 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221
> 221 222 222 222 0 0 0;
> #P user ezdac~ 174 405 218 438 0;
> #P message 175 21 31 196617 read;
> #P newex 175 41 71 196617 buffer~ hitme;
> #P newex 391 299 44 196617 edge~;
> #P newex 259 299 44 196617 edge~;
> #P newex 306 299 84 196617 *~;
> #P newex 174 299 84 196617 *~;
> #P newex 380 258 95 196617 trapezoid~ 0.1 0.9;
> #P newex 306 232 84 196617 groove~ hitme;
> #B color 5;
> #P newex 248 258 95 196617 trapezoid~ 0.1 0.9;
> #P button 54 100 15 0;
> #P flonum 54 127 47 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P message 192 149 24 196617 0.5;
> #P flonum 314 113 50 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P flonum 262 113 50 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P toggle 174 64 15 0;
> #P newex 174 169 27 196617 sig~;
> #P newex 174 232 84 196617 groove~ hitme;
> #B color 5;
> #P comment 501 115 100 196617 ms crossfade;
> #P comment 44 81 36 196617 start;
> #P fasten 15 1 38 0 298 320 304 320 304 227 295 227;
> #P connect 15 1 21 0;
> #P connect 11 1 23 0;
> #P connect 11 1 12 0;
> #P connect 12 0 14 1;
> #P connect 12 0 25 0;
> #P connect 10 0 13 1;
> #P connect 10 0 24 0;
> #P fasten 37 0 38 0 427 221 295 221;
> #P connect 37 0 12 1;
> #P fasten 37 0 35 0 427 221 469 221;
> #P fasten 35 0 10 2 469 254 337 254;
> #P connect 35 0 12 2;
> #P connect 33 0 37 0;
> #P hidden connect 33 0 34 0;
> #P connect 32 0 36 0;
> #P connect 32 0 33 1;
> #P hidden connect 26 0 31 0;
> #P fasten 26 0 33 0 267 176 427 176;
> #P connect 6 0 2 2;
> #P connect 6 0 28 0;
> #P connect 6 0 26 1;
> #P connect 6 0 11 2;
> #P connect 5 0 2 1;
> #P connect 5 0 26 0;
> #P connect 5 0 11 1;
> #P connect 3 0 2 0;
> #P fasten 3 0 11 0 179 194 311 194;
> #P fasten 4 0 40 0 179 80 113 80;
> #P connect 4 0 3 0;
> #P connect 40 0 9 0;
> #P fasten 39 2 11 0 103 203 311 203;
> #P fasten 39 0 2 0 59 212 179 212;
> #P connect 8 0 39 0;
> #P fasten 39 1 10 1 81 253 295 253;
> #P connect 29 6 6 0;
> #P connect 38 0 10 1;
> #P connect 16 1 22 0;
> #P connect 2 1 20 0;
> #P connect 2 1 10 0;
> #P connect 36 0 33 0;
> #P connect 28 0 26 0;
> #P connect 30 1 6 0;
> #P connect 29 3 30 0;
> #P connect 29 2 5 0;
> #P connect 17 1 29 0;
> #P connect 9 0 8 0;
> #P connect 7 0 3 0;
> #P connect 27 0 3 0;
> #P fasten 22 0 2 0 430 367 164 367 164 227 179 227;
> #P connect 2 0 13 0;
> #P connect 13 0 19 0;
> #P connect 14 0 19 1;
> #P connect 24 0 15 0;
> #P fasten 21 0 11 0 298 375 502 375 502 226 311 226;
> #P connect 11 0 14 0;
> #P connect 25 0 16 0;
> #P connect 18 0 17 0;
> #P window clipboard copycount 41;
>
>
> --
> Stefan Tiedje------------x-------
> --_____-----------|--------------
> --(_|_ ----|-----|-----()-------
> -- _|_)----|-----()--------------
> ----------()--------www.ccmix.com
>
>
I tried your patch - does a very nice job outputting sound at different intervaals of time one channel to another.
good
thanks
ron
Stefan Tiedje wrote: Carlo Laurenzi schrieb:
> Doesn't snapshot good enough to grab the loop points? Actually, it is a
> signal-rate value.
snapshot~ is polling the audio values. That is expensive, because most
of the time it gets values which are not important. I always use edge~
to find a specific point in an audio signal...
Good for fading the signal of groove~ is trapezoid~ by the way. Can be
directly controlled by the sync output of groove~...
not as clean as my other examples, but take it as a starting point:
--
Stefan Tiedje------------x-------
--_____-----------|--------------
--(_|_ ----|-----|-----()-------
-- _|_)----|-----()--------------
----------()--------www.ccmix.com
Have you tried to play the loop backwards?
Carlo
----- Original Message -----
From: ronald alford
To: maxmsp@cycling74.com
Sent: Sunday, January 20, 2008 8:41 PM
Subject: Re: [maxmsp] Re: Groove patch
I tried your patch - does a very nice job outputting sound at different intervaals of time one channel to another.
good
thanks
ron
Stefan Tiedje wrote:
Carlo Laurenzi schrieb:
> Doesn't snapshot good enough to grab the loop points? Actually, it is a
> signal-rate value.
snapshot~ is polling the audio values. That is expensive, because most
of the time it gets values which are not important. I always use edge~
to find a specific point in an audio signal...
Good for fading the signal of groove~ is trapezoid~ by the way. Can be
directly controlled by the sync output of groove~...
not as clean as my other examples, but take it as a starting point:
--
Stefan Tiedje------------x-------
--_____-----------|--------------
--(_|_ ----|-----|-----()-------
-- _|_)----|-----()--------------
----------()--------www.ccmix.com
------------------------------------------------------------------------------
hmmm...
no, never occurred to me to do that - HOW?
ron
Carlo Laurenzi wrote: Have you tried to play the loop backwards?
Carlo
----- Original Message -----
From: ronald alford
Sent: Sunday, January 20, 2008 8:41 PM
Subject: Re: [maxmsp] Re: Groove patch
I tried your patch - does a very nice job outputting sound at different intervaals of time one channel to another.
good
thanks
ron
Stefan Tiedje wrote: Carlo Laurenzi schrieb:
> Doesn't snapshot good enough to grab the loop points? Actually, it is a
> signal-rate value.
snapshot~ is polling the audio values. That is expensive, because most
of the time it gets values which are not important. I always use edge~
to find a specific point in an audio signal...
Good for fading the signal of groove~ is trapezoid~ by the way. Can be
directly controlled by the sync output of groove~...
not as clean as my other examples, but take it as a starting point:
--
Stefan Tiedje------------x-------
--_____-----------|--------------
--(_|_ ----|-----|-----()-------
-- _|_)----|-----()--------------
----------()--------www.ccmix.com
maxmsp mailing list
---------------------------------
maxmsp mailing list
Just write a negative value in the number field connected to sig~..
You'll notice that the looper will stops looping after few seconds.
Carlo
----- Original Message -----
From: ronald alford
To: maxmsp@cycling74.com
Sent: Monday, January 21, 2008 4:58 PM
Subject: Re: [maxmsp] Re: Groove patch
hmmm...
no, never occurred to me to do that - HOW?
ron
Carlo Laurenzi wrote:
Have you tried to play the loop backwards?
Carlo
----- Original Message -----
From: ronald alford
To: maxmsp@cycling74.com
Sent: Sunday, January 20, 2008 8:41 PM
Subject: Re: [maxmsp] Re: Groove patch
I tried your patch - does a very nice job outputting sound at different intervaals of time one channel to another.
good
thanks
ron
Stefan Tiedje wrote:
Carlo Laurenzi schrieb:
> Doesn't snapshot good enough to grab the loop points? Actually, it is a
> signal-rate value.
snapshot~ is polling the audio values. That is expensive, because most
of the time it gets values which are not important. I always use edge~
to find a specific point in an audio signal...
Good for fading the signal of groove~ is trapezoid~ by the way. Can be
directly controlled by the sync output of groove~...
not as clean as my other examples, but take it as a starting point:
--
Stefan Tiedje------------x-------
--_____-----------|--------------
--(_|_ ----|-----|-----()-------
-- _|_)----|-----()--------------
----------()--------www.ccmix.com
--------------------------------------------------------------------------
------------------------------------------------------------------------------
Carlo Laurenzi schrieb:
> Have you tried to play the loop backwards?
That had been left as excersize... ;-)
--
Stefan Tiedje------------x-------
--_____-----------|--------------
--(_|_ ----|-----|-----()-------
-- _|_)----|-----()--------------
----------()--------www.ccmix.com