|
Post by acoustiman on May 5, 2019 11:47:47 GMT
I wonder if it’s possible to build a simple midi looper with StreamByter? E.g. use the sliders to start/stop recording, overdub and undo a recording.
|
|
|
Post by mcdtracy on May 8, 2019 17:02:13 GMT
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.
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on May 8, 2019 17:31:18 GMT
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. ;-)
Regards, Nic.
|
|
|
Post by mcdtracy on May 8, 2019 23:23:33 GMT
Nic: Good to know. What's the best way to save the timing details to accurately loop using some clock reference. If there's a section in the docs just slip me a clue.
|
|
|
Post by acoustiman on May 9, 2019 9:46:58 GMT
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 🎹🎶
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on May 9, 2019 11:18:59 GMT
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.
Regards, Nic.
|
|
|
Post by acoustiman on May 9, 2019 13:47:48 GMT
Hi Nic, Great plan👍🏻. Thx for taking this initiative. I’m really looking forward to the first looper within StreamByte. Grtz, AcoustiMan 🎹🎵
|
|
|
Post by acoustiman on May 14, 2019 16:38:39 GMT
|
|
|
Post by acoustiman on May 14, 2019 16:39:29 GMT
Yes a looper!
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on May 14, 2019 17:49:04 GMT
Aha - well spotted!
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.
Regards, Nic.
|
|
|
Post by acoustiman on May 14, 2019 18:20:01 GMT
Hi Nic,
I saw the screenshot on Disschord.com
What a huge update of StreamByter! And it’s great you initiated the StreamByter University that will really help people to script.
I would like do a testflight✈️
Regards, Julien
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on May 17, 2019 6:54:44 GMT
Hi acoustiman , 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. mcdtracy - did you want to try this out too? Regards, Nic.
|
|
|
Post by mcdtracy on May 18, 2019 19:47:41 GMT
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.
|
|
|
Post by mcdtracy on May 19, 2019 3:22:18 GMT
OK. I have the update... probably had it for a couple days and it looks like the Looper isn't included in the sample apps so I'd like to have the script to test and study the timing secrets please.
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on May 19, 2019 18:51:01 GMT
Hi mcdtracy , 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. Regards, Nic.
|
|