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.
Comments
Quick question,
Is there a way to control the pads from some of the Mozaic patches (for example LFOs, https://patchstorage.com/lfos/) from Atom Piano Roll2 for instance? I would like to have a way to turn these pads on or off automatically, without me having to click press on them.
Thanks!
The pads (and other controls) are accessible as AUv3 parameters, so you can MIDI map them to notes or CCs in your host, e.g. AUM or Audiobus. Alternatively, you could modify the script to respond to MIDI inputs directly.
Thanks for the quick reply @uncledave
I would like to have the pads on or off from notes triggered by APR2, but on Mozaic I see an option for "note 0", "note 1" etc, but I don't know what notes it is referring to (e.g. C1?, C2?), unless I am misunderstanding something. I tried different notes but none did the job
It is referring to the MIDI note number; note the Range 0 MIDI –> 127 MIDI. So, middle C is MIDI 60, named C4 in AUM, C3 in some other apps. You can work out from there.
Thanks! working perfectly now. I noticed I had forgotten to add the midi source on the midi control window of mozaic
Thanks for the help
Any reason or anything I should look at for Mozaic changing a sysex value when it's sent?
Never happened before. The script is just sending 16 sysex strings to test if a controller is reacting.
Nothing has been changed. Mozaic is showing decimal. Streambyter is showing Hexadecimal.
20 decimal = 14 hexadecimal.
Ah derp.
For the casual reader, here's the math behind why 20 in decimal is the same as 14 in Hexidecimal. I HAVE EDITED THIS SENTENCE TO FIX TYPO OF "20" as "28".
Computers came from transistor networks and store all numbers in binary formats of switches representing On and Off values.
So, numbers internally are stored as rows of 1's and 0's.
Hexidecimal represents these 1's and 0's in grouping of 4:
0000 = 0 (add a 1 to get to the next row each time with 1 + 1 going up to a 10)
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9 we need a symbol to represent the next number (10) in a single character...
letters are chosen
1011 = A
1100 = B
1101 = C
1110 = D
1111 = F
So HEX 14 is seen by the computer as 0001 0100. That's a 1 in the 16 column and a 1 in the 1's 4. 16+4 = 20 in decimal.
If you got lost in the concepts you are not alone. When you study computer engineering you are not allowed to give up. I recall a test where the sadistic professor made us to some basic
arithmetic in binary and we had to show our work. It was like multiple 13 x 11 in binary.
He wanted us to bring essay books for the test so we had pages to show our work.
He also gave us a final project where we had to implement a 16-bit computer board using "4 Bit Slice" chips... each chip did math on 4 bit values and could pass the carry bits up from the chip on the right. We had to hand code a program to print one of those messages on 4-bit LED displays. Nights and weekends for about 6 weeks to finish it the project win groups of 4 students. The assignment came after it was too late to drop the class.
The fact that StreamByter treats most numbers are Hex is the main reason Mozaic is so much easier to learn. It's like jumping from Assembly language to Basic.
I don't have an issue with hex. The controller wasn't responding and MIDISpy was being prude dishing out what it received, so I just tried mfx. My brain just didn't switch gears. It should have seeing the glaring giant F0 F7
Complete brain fart and I was more wrapped up in the controller not responding.
Edit: its amazing that things work when you convert ALL of the sysex array to decimal....
Interesting nugget of info @McD
Hi, I just got Mozaic and am fiddling around to see how it works. I know I need to rtfm but have a question which may get a quicker solution here. Using the cc to note preset, I can change the pads on my launchpad pro mki, which is easy to do. That’s fantastic but I want to map about 20 of the buttons. Does this mean I need to have 20 instances of Mozaic going for each button? Or can you stack presets within one Mozaic instance? As I’m using loopy pro, that takes a shed load of mixer space as I don’t think I can group and minimalism the midi groups together. Im sure there’s an easier way to do this. Perhaps I need to learn how to make an appropriate preset. Any suggestions? TIA
Can you provide more info on this statement? Is this a preset on the Launchpad or something you found in Mozaic? If it's Moziac then it's a script that can be modified for
as many mappings as you'll need. You might learn to make the changes or provide details and get a solution crafted for you and others that have launchpads. There's ben a lot of
work done already for this device I think with solution posted to http://patchstorage.com/mozaic.
This is requirement someone with this hardware to design and test a solution if it's not solved yet.
I doubt it. A script can perform thousands of interesting MIDI actions on a target... like a
MIDI controller hardware, a software synth or any MIDI capable device. Using a DAW like AUM is required however. The Mozaic standalone app does not output MIDI... I wish it did but I understand Bram reason for NOT supporting it since AUM and the DAW's have rock solid MIDI features that he did not want to write or maintain. Writing a programmable
IOS app is a tricky business and Bram gave us a rock solid tool and went on to make
a dozen other products while we keep making cool Mozaic hacks.
Should be doable with someone to do the work.
You're welcome. I hope we can help get you a solution but you might have to explain
more and get the interest of a scripter with a Launchpad. I almost bought one to play but
a solid developer type jumped in to make the PAD light up and do all sorts of magical controls. Check out patchstorage and learn to download some Launchpad related solutions.
You won’t need multiple instances. You will will probably need to learn the Mozaic scripting language to at least modify scripts for your purposes.
It’s possible that one of the many pre-written scripts on patch storage.com can be used for your purposes. One that I can think of that might work for you is Basic MIDI Controls. https://patchstorage.com/basic-midi-controls/
There’s a nice compact listing of scripts on the wiki: https://wiki.audiob.us/doku.php?id=mozaic_scripts_list.
You won't need multiple instances for each button. You may or may not need multiple instances to perform separate tasks.
Mozaic is one of those things where it's hard to help you with it until you know what you are trying to do with it. What are you trying to accomplish or what problem are you trying to solve?
Thanks for the replies! It’s actually wims preset that i was testing https://patchstorage.com/cc-trigger-to-notes/ . As I’m using the LP mki in programmers mode, there’s no editor. And for this particular use, I just want to change the outer buttons to trigger lumbeat apps within loopy pro. So mozaic looks like it can do the job. I figured it’d require a bit of work and thought. The app is very new to me and there’s a lot of things I need to learn about mozaic. Guess I’ll start with the basic midi controls. Cheers!
You can add or request additional features for cc-trigger-to-notes.
Here's the workflow to get there:
What events are generated by the Launchpad when you push one of those buttons?
Use an @OnMIDIInput code block to catch these events. Such a code block probably exists.
You just need to add "If" tests to catch the specific MIDI type and data being sent it.
Then you send out the desired MIDI instructions you want.
I hope this helps. Anyone can read @wim's script and offer assistance or advice without
breaking his script as it exists on patchstorage. Check @wim's license for permission to create a "forked" version of the code.
As a start, what MIDI does pressing these buttons generate? There are MIDI monitors to
answer this question or there would be details in the product docs.
Hey @Lacerate - there might be a solution that doesn't involve scripting for your immediate need. mfxConvert is a great little utility that allows you to change multiple midi messages from one type to another. You just need to set it to Learn mode, then send a midi message. Then you can configure what should come out the other side when that message is received. Keep repeating until all your buttons are mapped. You can save a preset with those mappings for later use.
Also - for pure converting tasks such as this, StreamByter can be a trimmer alternative to Mozaic. Each conversion is one line of code, such as:
(I didn't actually test that script, but it should give an idea.)
BTW, mfxConvert is basically just a front-end to internal Streambyter code generated behind the scenes in the plugin.
Thanks again everyone….it all helps! @wim that seems to be an easier solution….wasn’t keen on buying more stuff but I’m sure the time it saves is worth it. I’ll have a look at streambyter too as I’ve already got it. Strangely, the basic midi control preset doesn’t show in my mozaic. There’s another LP preset in patch storage that doesn’t appear too. They’re both in my mozaic folder. Cheers for all the help, ideas and suggestions!
File management with Moziac is a bit tricky.
I use this process:
@McD thanks for the detailed solution. That indeed worked for both patches. Cheers!
I hope more seek out solutions on patchstorage for Mozaic, Drambo, Atom, AudioKit Synth One, miRack, Moog Model D, Moog Model 15, NanoStudio 2, Beatmaker 3, Holon.ist, Tonality, Groove Rider and (wait for it)... FAC Drumkit which is waiting for it's first upload.
I think I already know the answer to this, but is there anyway to put a variable in a sysex array you’re sending?
Var1 = 16
Sysex1 = [01, 84, Var1]
SendSysex sysex1, 3
I’m looking to send a lot of the same strings multiple times with only the variable being a different in every array.
I have a feeling I might have to copy a few arrays into a new array to send and loop that.
That’s what I thought. Had to copy. It will be multiple copies. There will be multiple variables in the string with consistent stuff between them.
(Prolly some incorrect syntax in there, but that’s the gist?)
Setting a single position by a direct assignment will work, but if you want to insert an array into another array, you need to use
CopyArray
.I don't know if you had a specific reason for taking all those steps. If not, you could also do something like this:
@wim
My use case here is scripting an Arturia beatstep. For example, to control a pad and make it a midi cc switch, I have to send some or all of the following (x16 pads):
(the above taken from https://www.untergeek.de/2014/11/taming-arturias-beatstep-sysex-codes-for-programming-via-ipad/)
This doesn’t even control the light status. It’s roughly the same thing for the 16 encoders. So I’ll be saving states of lights,pads,encoders in lots of arrays, and finding an easy routine to loop sysex strings built from these arrays seems the best way (no?).
Fair enough. If there's a reason for copying arrays around then by all means go for it. I was just making sure it's clear that you don't have to build up arrays by appending the parts together in order.
and that was really distracting from the main point: Changing a single value in an array can be used with an
=
operation, but operations with multiple elements have to be done withCopyArray
.Do you see a better way? I’m picturing something for the above would be build the sysex string for midi channel of a pad (pulled from an array), loop that 16 times, replacing pad number and midi channel each time. Then build light status, loops 16 times,…..
I’d really only have to send all 6 or 7 once to set it up at @onload, after than it’s 2 or 3 to just update.
I’ve built a couple UIs for controllers, but most of the sysex in those was routine without variables. Single lines here and there. This is the 1st time everything needs to be done in sysex.
I dunno @AlmostAnonymous - I can't give a meaningful answer to a generalized question like that. I'd have to wrap my head around exactly what you're trying to do. I suggest just going for it. 👍🏼
You've got the basics you need if you understand arrays in general, and when
CopyArray
is needed specifically.