I'm no expert but your question deserves an answer.
I think it would be extremely hard to use StreamByter to make a looper due to limits of data storage.
StreamByter works best when you think of it as a MIDI event "decorator". A constant stream of midi events flow through and the output shows a modified stream typically with only a millisecond or so of additional latency.
With a Looper your asking for extreme multi-second latencies. So, Every event must be stored somehow and until this amount of delay and then added to the output stream. Streambyter gives the programmer a few arrays to hold data. Exceed that amount of data and you would have to throw away events. It doesn't allow you to create additional storage like a programmable scripting tool might.
Maybe Nic is considering adding more user storage allocations but I suspect he wants to stay in the realtime space as a tool builder. Leave that niche and the support issues get overly complex. Many good tools do one thing really well. Some users like multi-tools and some programmers build them.
So, I think it's probably just a bad use case for an amazing realtime MIDI tool. Think of MIDI additions and transformations that happen without holding too much data and you'll have a good use case. Low latency is a key feature.
NOTE: There is a "delay" option for the Send (SND) statement that helps create really cool delay and echo effects and requires no data buffering. You just request the SND with a delay value of 1000 and it holds the echo for 1 second for example. I fed this delay output back into the stream once and then had to kill the script because of the infinite looper problem.
Power tools in the wrong hands can be dangerous. It helps to have that "Kill All Notes" script handy too when learning to control the superuser's power being granted to mortals.
I reckon you probably could, but unsure why - are there no MIDI loopers for iOS?
Next update will have larger space (although not infinite) for working with data. I suspect that you wouldn't need a huge amount of space. Realistically, how many notes in the loop would you have going at the one time? Said update will also make things easier for creating things like a looper; language and GUI wise. Shouldn't be an issue with timing of events either - I think it is doable. Probably more doable (hopefully) by next week. ;-)
Hi Everyone, There are not that many good midiloopers in ios. Infinite looper and Atom Pianoroll are fine loopers. However the first is not an auv3 and the second is auv3 but doesn’t support remote controlling with au parameters of start/stop recording etc.which is essential in a live context. Regarding storage 32 notes per sequence/loop would be a good starting point. Grtz, AcoustiMan 🎹🎶
OK, let's try making a simple looper. We can handle up to 256 note ons/offs in the one loop, so 128 notes. That's better than 32.
I'd like to revisit this once the new update is out, but the technique is not that hard. In a nutshell:
1. We need an 'inject trigger event' to keep the loop going once we have notes captured in it.
2. When a note comes in during record we add it to our list of notes along with the time difference from the 1st note in the loop (timing variable) if in record/overdub. So we'll need to use all 4 local arrays.
3. Each loop trigger, we simply push all the stored notes with delays set to the time difference of each note in one go.
Just need a few UI niceties to start/stop, record/overdub, clear. Could even add a slider to control the loop's speed after it is recorded so you can speed up or slow down.
In theory we could preserve the loop variables and save the actual loop inside a preset...
I will have a go at this probably next week (unless someone beats me to it) and see how we get on. The new update will allow the creation of a better fitting GUI for this.
Yes, I have made good progress on this. Writing this has exposed some bugs in StreamByter, so the plan is to rectify those bugs and deliver the Looper shipped with the next update. I really want to get this submitted to Apple this week and move on to MidiFire.
If either of you are interested in TestFlighting just let me know.
I have the looper working pretty well now and I expect to push it out with a new beta today. Is it OK to use the email you registered on this forum with the TestFlight invitation? If not, PM me which email address you would like me to use.
It looks great. I will wait for the update.Honestly, I get on these betas and forget to do the work a beta user should contribute. I'm like the dog in "Up"... "SQUIRREL". Short attention span. The update will be a nice SQUIRREL.
The most recent App Store update does not have the looper. I am hoping to get this bugfix version out this week which will include the looper code. The looper code relies on some fixes and small enhancements so I don't want to post it here just yet. If you would like the current code purely for study purposes, please PM me.