Hey David, I just want to thank you for you input on this patch once again.
I had an idea. I think I need to implement a version of the same idea you had with the overdubbing to various speeds with over dubbing.
So if I overdub a speed = 2, the overdub should occur during one full time through the loop as you have it, but at the exact end of that loop the speed should immediately jump to 1. I can try and make a spigot type solution, like what you did.
I don't know if that explains it well, but I think it is something to try. I will assemble it and post a result.
The simple3 looper works perfect. Your solution was super simple and works perfect, way better than messing around with 2 arrays.
I couldn't try the loop.zip patch yet, because there are limiter~ objects from the zexy library that I don't have. I used Dekken and installed the library, but only the help file for limiter~ and z~ are there. I tried to join the github group for zexy to post a bug about that, but waiting for approval.
There is only one other issue with this looper that is tricky. When I try to overdub to a loop at a speed other than 1 or -1 things get out of whack. If I over dub onto a loop that is at speed greater than 1, the speed seems to double on playback after the overdub. If I overdub onto a loop at a speed less than 1 it seems to go twice as slow on playback. Note, this is not a scientific observation, but something I am determining by listening to what's happening.
I tried to implement this expr to resolve this: [expr if($f1 < 1, 2, if($f1 > 1, 0.5, 1))]
which multiplies a value less than 1 by 2 and a value greater than 1 by .5.
Here's the patch that I tried it out in: simple3.11.pd minus the array called loop that you need.
Anyway, it didn't resolve the problem, in fact when I try it out it sort of creates a moment of silence in the loop, so something is off.
If you have any ideas how to resolve this please let me know. Thank you for all your help!
Now that I think of it, because i am recording new material into the array, the actual contents of the array are changing, so even if the array size stays the same, what is inside the array is changing.
Maybe i need two different arrays, the same size as the initial recording, and moving at the same speed and same direction. When I overdub it will be into a second array. and if I overdub again it will go back to the first array. I don't know, but it's one idea.
Thanks a lot for taking a look at this. I think I have a better way of articulating the issue. When I do an overdub, if I don't stop it exactly at the end of the loop, the loop sounds like it will play the overdubbed part and then start at the beginning and play the loop, get to the end and the play the overdubbed part again. And it might omit some parts too. It does seem like the array size is staying consistent though so that's good.
Since the array size is not changing, and the phasor~ should be going from beginning to end of the loop maybe it's something in the logic of how I am overdubbing. Shouldn't tabread4~ just be reading the array? When I press "stop" in the overdubbing section why would that mess up where tabread4 is reading from?
I am trying to construct a looper. My goals seem simple but I am having some issues.
I want to record an initial loop into an array, and once that's recorded I don't want the array size to change.
I want to be able to playback my loop at different speeds, plus backwards.
I think all this is working fine in what I have, which I uploaded with this post. I record audio input, and the array is resized to reflect the length of my loop.
When I try and overdub additional audio I am running into issues where the original loop seems to skip around in time. I can't figure this out.
Ultimately I want to be able to playback the loop at various speeds and overdub onto that as well, which is giving my issues too, but I think if I resolve the first issue noted above it might help me resolve this goal as well.
If anyone can take a look at this patch and offer suggestions I would appreciate it.
I think maybe I don't need the ipoke~ constant recording part. I guess I'm more looking for a looper with variable speed playback and overdubbing.
I am going to start a new thread with the looper I have so far. I think it might be easier to modify mine to fit what I need. But this ipoke~ object is very cool.
Hi David @whale-av.
Thanks again for the patch. I still can't quite get it to work. Although it was recoding something and playing it back once. It seemed like it was always on and always recording, so I added a message from the start/stop box to the stop of ipoke~ and a play message at speed = 1. It didn't really seem to help much, although it does help to make the recording stop.
Let me know what else I should look at to get this to work.
Hi @whale-av. Thank you for this patch.
I am having a few issues with it. I am getting an error "inlet: expected float but got bang"
I think the issues is In the pd control start/stop section. In that section I disconnected the [s phase_reset] from the 2nd outlet of the trigger and connected it to the first outlet of the trigger so it could get a float. I don't know if that stopped other things from working.
Also, in that same start/stop section I can't get the "control" array to change sizes when I press the start or stop button. Would it make sense to have a timer in that box and have the array use the time from the timer to resize the array?
Thank you for the patch!
This post is related to another post I saw about making a Pure Data tape loop
Here is the link:
In that topic @whale-av posted a space_echo.pd patch that is constantly recording and can constantly play back, and you can control the speed of the playback too, it's a pretty cool patch.
Here is the patch
And you need ipoke~ for it to work
My question is how can I modify this patch to only record when I want it to. And the array size would only be the same size as what I record. I still want to be able to change the playback speed, and I would like to be able to overdub onto the initial recording.
I do have a looper I made that uses a timer to see how long a loop is when recorded. The audio is written into a tabwrite~ and played from a tabread4~ . The time of the loop is put into a phasor~ and that is used for playback. The array size doesn't actually change, but the phasor~ only reads from the beginning of recording to how ever long the timer measured as the loop time.
I can upload my example if that helps.
But it looks like in this space_echo patch the audio is being written into ipoke and played from tabread4~. I can't find much info on ipoke~ in terms of writting to it. Does anyone have any advice on how to proceed with what i'm trying to do?
Thank you for that information. I have like 40 arrays with soundfiles in them and all of them were checked with the "save contents" option. I just unchecked all of them and it made the warnings go away.
Thank you so much for the information. I just learned something new!
Take care. Nick