record~ loop in tape-style guitar looper: problems with overdubbing
Hey everyone! I am trying to create a stacking looper based on this Andrew Robinson's video with variable speed and the option to overdub while the groove~ object is playing at different speeds.
There are two buffers, one for recording and one for playing. The recording buffer gets copied in the playing one and the groove~ object that plays the playing buffer is fed back into the record~ object to be written into the recording buffer.
Here you first need to create a base loop with the top left toggle e then with the top right toggle you can overdub to that loop.
I have a doubt about the overdubbing: if I just record a base loop, switch off the top left toggle and then switch on the top right (overdub) toggle and just let it sit there with no input I notice that my waveform shifts to the left with different step sizes every time. I am not sure about what could cause this behaviour.
Has anyone tried to do something similar? Thank you in advance!
your looper is too complicated, and it does not really overdub.
Idea to overdub into separate buffer is kind of ok,
one can delete it and keep original loop,
but you copy recording into overdub buffer and then record over it.
A bit strange.
Also overdubbing allways restarts recording from beginning ?
Another point is that recording/overdub allways runs at original speed,
I don't see how can you overdub while listening to different speeded playback.
You have no stop, play ... resume or similar functions ?
Hi! Thank you very much for your reply and for taking the time to take a look at my messy patch.
Yes, the idea is that the the feedback loop is obtained by copying the recording in another buffer that plays into the record~ object. The buffers are much longer than needed because I am trying to use groove~'s loop endpoint to have a variable length loop.
I have seen simpler and more direct approaches but I am trying to see if this method is viable.
For example, If I slow down playback while overdubbing I want the slowed down playback to overwrite the old buffer and the new length would set the record~ endpoints. It kinda works, but it's still a bit janky. Stop, play and resume are obtained by sending 0, 1 signals to groove~.
What I don't really understand is why the overdub keeps shifting by a variable amount when I start overdubbing and just do nothing. I would like to just leave the overdub on and then play over it without it losing samples or shifting over time (just like ableton live's stock looper).
I tried implementing a signal-only version using poke~ and counters instead of clockers and messages. It is a bit better, but not really stable and reliable.
Here it shifts only somtimes, while other times it stays consistent. I suspect it has to do with the latency of the system, but I'm not really sure how to correct for that. Also, when it shifts it creates really ugly artifacts. I believe that this is due to the duplicate message.
again - you recording, no matter if initial or "overdub" is running at original speed.
your playback gets recorded into different buffer together with audio input.
You need no copy or whatever, simply record - mix 2 signals and play them back.
I can't really test you patches because that deltaedge is unknown object

Thank you again for your reply!
I'm really sorry, I left inside an abstraction for the delta~ detector. Here are the patches without abstraction.
I will now try to implement the solution without buffer copy. Thanks!
As your recording has nothing to do with playback,
it is simply from one barrel to another barrel loop recorder.
Initial recording overwrites old audio and sets new loop size .
overdub starts recording from beginning and also captures groove~ output,
no matter what speed it runs, or if it runs at all.
You could decide to keep recording size or set new, it does not matter really,
unless you want to keep "overdubbing" over initial loop length.
Record fade in / out would be helpfull to avoid clicks and pops...
what is not clear to me is relation between playback and recording.
they are totally separated in your patches, so what is about tape style looping in there ?
P.S. I am not critisizing, only trying to understand what you want to achieve
To be fair, critiques are more than welcomed... I am a newbie and I still have to learn about patching efficiently :)
You were right, removing the second buffer was a real headache solver. I saw a patch on this forum that really helped me achieve what I was trying to do, that is: using the groove~ sync signal to address the samples in the buffer with poke~.
This is what I managed to do up to now:
It is pretty much what I wanted to have. I will set up some more features later :)