Loopy Pro: Create music, your way.
What is Loopy Pro? — Loopy Pro is a powerful, flexible, and intuitive live looper, sampler, clip launcher and DAW for iPhone and iPad. At its core, it allows you to record and layer sounds in real-time to create complex musical arrangements. But it doesn’t stop there—Loopy Pro offers advanced tools to customize your workflow, build dynamic performance setups, and create a seamless connection between instruments, effects, and external gear.
Use it for live looping, sequencing, arranging, mixing, and much more. Whether you're a live performer, a producer, or just experimenting with sound, Loopy Pro helps you take control of your creative process.
Download on the App StoreLoopy Pro is your all-in-one musical toolkit. Try it for free today.
Streambyter script for enhanced hh control needed plz
Hi,
Firstly, i cant code. :-) but I can copy/paste:-)
I'm looking for a SB script that will take one CC's values....Cc 4 in my case....and use the values to transpose incoming midi notes. Like to 3-4 zones.
Ex. 0-33 values of cc4 would transpose a specific midi note .......me hitting my hh pad sending note # 48.....would send note # 50.
Cc4 values of 34-66 would transpose the incoming note # 48 to , let's say, 52. And so on.
I found a close script on the SB board/forum, but I don't know how to block the original #48 midi note from also being sent.
This script would allow using an ekit hh pedal and pad to send,say,drumperfectpro multiple midi messages to multiple samples of hh "openness".
BTW @wim I got the pedal sound to mute the open hh sound, but I don't think its using cc but a choke using the pedal sounds midi note to close it.
I'm sorry if I'm not explaining well, or if I've posted this in the wrong place.
Help?
Thanks!
Comments
Try this. I believe it meets your specs. Note that the selector knob positions work like a switch: positions at each end, then spaced out equally. So, if you're computing the CC values, instead of using a knob, you'd use 0, 64, and 127 for 3 zones.
It changes the input note messages directly, so only the transposed value comes out. You can use the monitor in StreamByter (magnifier icon) to check it out.
Hi,
Thank you...will try.
How the hell does one do that? Do you think in code?
Holy c rap! It works!
Man Uncle Dave,thank you so much! I started Midifire,added a SB,and watched the output. Wonderful! I owe you.
Now to see how Drum perfect pro handles this.
I must say, the adjustable velocity to volume in DPP gave me a real wide audio dynamic range. Starting to sound better when played from an electronic kit. And if I can make multi open hats work.....shaazaaaam thx to you:-)
Thank you!!!
Edit... I may be being naive,but you have made a monster in electronic percussion on iPad.
You may know that many drum brains in the las 2 decades have a thing called positional sensing. Mostly Roland mid to high end.
Like on a 2 zone ride pad. Head and edge/rim. In the head zone it sends out a CC just before every note as you move from the edge of the head to the center sending different CC values on the way.
So now you have 3zones.....rim=ride edge..think gongy sound....edge of head to just before center=stick tip ride....and center=bell. Now in iOS thx to Uncle Dave!
And snare...same deal.
And this can be done with many samplers on iOS.
I hope that DPP doesn't give me a gotcha...but aside from the hh I can't see a problem. Cept for a lot o midi mapping.:-)
Much appreciated good sir. You and guys like you make this place an irreplaceable resource. Thank You.
Good to hear. If you need some advice on adjusting the notes, etc., I could help, but I tried to make it pretty obvious. Just be sure to Install Rules to make any changes take effect. I see you're using MIDIFire, which is fine for stand-alone. But you can also use the free StreamByter app in AUM, Audiobus, Loopy Pro, etc. to have the same features in an AUv3 environment.
Hi,
Thanks for your generosity uncledave!
Its working great so far. I adjusted the notes sent out by typing in the streambyter script. Its funny, the streambyter module in midifire doesn't show knobs. So I think, I'll go get the auv3 version and......no go. Requires 14.5 iOS . I'm still on my original 14.3 8 gen iPad. I'm scared to update to 17.3. Everything is working...Beatmaker3....DPP...all my older stuff. That's my problem:-)
I have one more thing......I FD up in a way saying I needed to block ALL orig, pre script messages. I was wrong...I still need the original cc 4 messages to go thru to DPP. Is that hard to do? Or if it is, can you tell me where to start?
I'm sorry I gave you a non complete idea....
Yes, the StreamByter in MidiFire is an earlier version, without the "GUI".
I suspect the AppStore StreamByter was only recently (in 2021!) updated to require 14.5. Have you tried to "buy" it? It may offer an earlier version, compatible with your system.
And, to pass the CC4 messages, just delete the "block" near the end, on the line after the call to Knob_select. That's what prevents that one message from going through.
SB probably needs to be “bought” on a compatible device but once that is done, you will be able to download the last compatible version on another device. So if you have a compatible iPhone , you cod download there first then try from your iPad.
Hi,
Thanks Dave and espiegel123.
Wow that's simple on the cc block.
Alas no iPhone. I'm so tempted to upgrade to 17.3 The oldest things that I need are maybe midi link sync, sunrizer, bm3.
Again, much appreciated. Would've never gotten my iPad to do serious music work without this place and you good people.
Reading this script is pretty useful to see some of the techniques a good Streambyter programmer uses.
But IMHO they tend to make the code tricky to understand.
These are the statements used and a brief description of it’s intended use:
There are only a few additional statements allowed:
WHILE (to set up blocks that loop and can be escaped when something is no longer true)
The tricky part of StreamByter is how much relies on understanding HEXIDECIMAL numeric encodings. We usually only consider numbers in DECIMALS. StreamByter will allow also DECIMAL value by preceding the number with a $.
But most MIDI documentation show MIDI Commands as 0x80, 0x90, etc which means little meaning to most as 128 and 144 respectively.
@McD : I disagree that the techniques uncleDave used make the vide harder to understand. It is nicely commented and structured.
While SB takes some getting used to, I think this dave’s code is about as readable as it gets.
You wrote: “ Alias (useful to assign numbers to a text label… similar to assignments in other programming languages)”
Alias lets you associate a name with a particular array slot or number. It basically is a variable or constant declaration. It is not an assignment statement.
For example, if you are using I0 (which means slot 0 of array I) in your code as the place to store the midi channel assignment , you can give it a name like midiChannel. So, you can have
ASSIGN midiChannel = 1
instead of
ASSIGN I0 = 0
I am unclear why you think that this code is trickier to understand than if alias had not been used.
I did not understand the purpose of the Alias statement so I saw it as using text if lieu of some random value. But creating a pneumonic label for an array slot is a clever idea to show the intended use. Most languages just allow variable to be declared using such labels. I think the StreamByter dev tried to make his script syntax powerful but readability is not its strength. It’s a “language” most should only tackle after several other close to the metal languages like C or potentially an Assembler to have the Hex skills that are needed to follow along and create new complex MIDI transformers.
Hi. I use Alias for two purposes. First to define literal constants, similar to #define in C. This enhances readability, allows one name to be used in several locations for easier maintenance, and places those definitions at the top for easy user adjustment. Second, I use Alias to give names to scalar variables. This improves readability because you don't need to parse array names to confirm that the same register is being used. Notably in the Sub where dlib0 is used on every line. Unfortunately, you cannot use an alias as an array subscript. So we have
Alias J00 currentZone
and thenAss M1 = KJ00
, unfortunately.I also use Alias when working with the SB controls GUI, the Qi registers. I alias both the register and its array index. These aliases are then used wherever the register is used. I can then re-order the controls and only need to change the aliases. I don't need to hunt through the code to update the register names.
Btw, calculator programming (HP45) is also a good background for SB programming. That's why I use "register" to refer to these array elements.
Hi,
The script works great! And I still giggle inside whenever I see...ASS.:-)
Hex,strangely enough,is familiar to me because Ive been using Sound diver universal editor librarian since the 90s. All midi is in hex. I would fill in the values needed for a certain piece of midi gear into SD,and it would make a fully working editor librarian.
But actually code, ASS still makes me giggle.:-)
Before Diver it was Unisyn and before that it was Dr Ts Xor. But never,never Midi Quest.:-)
Thx UD !
Are there RPN (Reverse Polish Notation) aspects to StreamByter coding?
It’s been 39 years since I was given an HP-45 as an HP Engineering Intern. Actually, it was called the Student Educational Engineering Development (SEED) program. The woman I reported too gave me a trophy that was labeled “World’s Best SEED”. When it was presented in front of a large group there was a mix of chuckling and a few gasps. The poor woman suddenly realized the double endre meaning and turned beet red.
I loved that HP-45 and created a lot of programs for it but I’ve over written all that information with dozens of other programming languages but it did help me learn to start thinking as a machine does.
@mcD: I recommend taking a look at the Streambyter manual: https://audeonic.com/streambyter/manual/
There aren't RPN aspects (i.e. operand operand operator).
@uncledave : the places where SB doesn't treat alias names correctly still throws me for a loop. I found a workaround at one point using DEFINE but it hurts my brain.
Thanks for the “operand operand operator” clue… Now I remember. On the HP-45 you would enter a number(operand 1) and hit enter then a second number (operand 2) and then select a math operator (+,-,X,%,/) to be applied.
Before the HP “gift” I was used to the Texas Instruments scheme which most of us converged towards which followed left to right processing with special consideration of parenthesis in a math formula where you might park an intermediate result in a Memory location for recall when it’s ready to be processed by another intermediate value.
I have been scanning the Streambyter manual to help me recall what statements and tokens mean in the script
shared here.
I'm still a fan of the original substitution syntax before all the additional elements were introduced. Something like
9X XX XX = B0 XX XX
is just so sweetly compact and readable.I just wish you could make use of the
$
syntax for base 10 numbers in that syntax. I like using hex for byte 1 due to how much sense it make for midi commands, but really dislike converting for the other numeric positions.The substitution syntax is great for some things and not applicable to some.
I didn’t realize till yesterday that you can’t use variables or array slots with it.
I was hoping to have Q0 hold a midi channel and use substitution syntax to channelize all midi using substitution syntax. The solution was not too bad but not as nice as the substitution version.