Buffer~ and Groove~ resizing issue


    Jul 27 2006 | 9:53 pm
    Hey everyone. I'm currently building a small patch that takes a trigger from an on/off guitar footswitch and uses that to 'freeze' audio going through the patch. The way that I'm doing that is I am constantly recording audio to a buffer in the patch while routing the non-frozen audio into a selector object. I then 'freeze' the audio by hitting the footswitch and routing the recorded audio out of the selector~ object. The groove~ object just plays the audio in the buffer repeatedly, and since the buffer is very small, it sounds like it's frozen.
    All of this works fine, however the problem in the patch arises when I try to resize the buffer by sending it a size $1 message followed by a clear message. Assumedly after resizing and then clearing the buffer, the record~ object should just function as normal and it does, but the sound that comes out of the groove~ object attached to the buffer is just a hum. If I double click on the buffer~ and look at the waveform, everything looks like it should. Somehow, after changing the size of the buffer~, that effectively 'breaks' the groove~ object and the patch doesnt work as it should. Does anyone have any insight as to what's wrong with the groove~ object in the patch below?
    thanks nic

    • Jul 27 2006 | 10:50 pm
    • Jul 28 2006 | 5:02 pm
      I've tried the tapin~ tapout~ thing before but it just doesnt sound that perfect to me. The thing about the buffer is that it seems like it is 'made' to do the stuff I need. It sounds great until I resize it. I would try the two buffer approach but after I resize any buffer it stops the function off the groove~ object entirely, until I reset the max patch.
      Any other ideas? Anyone?
      Nic
    • Jul 28 2006 | 5:45 pm
      Why not just leave your buffer~ size alone... the beauty of groove~ is that it lets you change the loop start and end points on the fly. if you use a larger buffer than you need for each frozen-loop, you can just change the loop points to a different sized loop, or when trying to clear the sound, move the loop points to a silent portion of the buffer.
      I've tried the tapin~ tapout~ thing before but it just doesnt sound that perfect to me. The thing about the buffer is that it seems like it is 'made' to do the stuff I need. It sounds great until I resize it. I would try the two buffer approach but after I resize any buffer it stops the function off the groove~ object entirely, until I reset the max patch.
      Any other ideas? Anyone?
      Nic
    • Jul 28 2006 | 5:52 pm
      hello
      I think "resize" also clears the buffer. Moreover, resizing takes some time so you should not send a "clear" message immediately after. Maybe, try to remove the "clear". But "resize" itself is not suited to live music because you can't know how many time it takes. For freezing sound I would perhaps use a fixed-size buffer (long enough) and choose a "start point" and an "end point" inside [groove~] (set to loop mode). You can change these points in realtime at signal rate if you want.
      Other freeze solutions include freezing reverbs (see the Freeverb or Altiverb), infinite reverb (well, it's not really a freeze but it can sound similar) or phase vocoder.
      n z :
    • Jul 28 2006 | 9:19 pm
      Thanks for all the ideas, everyone. What I ended up doing is just re-assigning the buffer name to the groove object every time I resize the buffer and that works pretty well.
      Nic
    • Jul 29 2006 | 11:40 am
    • Jul 29 2006 | 3:17 pm
      My apologies for all the quoted crap on the end of that one - it's an easy trap to fall into when reading/replying via 'mail cheers Roger
    • Jul 29 2006 | 4:52 pm
      No worries Roger - thanks for thinking of it. I've tidied the thread up a bit.
      -A