Groove patch


    Jan 14 2008 | 7:20 pm
    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

    • Jan 14 2008 | 7:51 pm
      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
    • Jan 14 2008 | 7:56 pm
      some of this may help... one of the more important things to remember is to grab your loop point at signal-rate.
      jl
    • Jan 15 2008 | 12:23 am
      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
    • Jan 15 2008 | 12:26 am
      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; >
    • Jan 16 2008 | 6:45 am
      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
    • Jan 16 2008 | 9:56 am
      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
    • Jan 17 2008 | 1:36 am
      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 > >
    • Jan 20 2008 | 7:41 pm
      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
    • Jan 21 2008 | 11:51 am
      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
      ------------------------------------------------------------------------------
    • Jan 21 2008 | 3:58 pm
      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
    • Jan 21 2008 | 6:46 pm
      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
      --------------------------------------------------------------------------
      ------------------------------------------------------------------------------
    • Jan 22 2008 | 7:13 am
      Carlo Laurenzi schrieb: > Have you tried to play the loop backwards?
      That had been left as excersize... ;-)
      -- Stefan Tiedje------------x------- --_____-----------|-------------- --(_|_ ----|-----|-----()------- -- _|_)----|-----()-------------- ----------()--------www.ccmix.com