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
Mozaic Standalone is useful for a few things but to do its work there must be a MIDI master providing clock and BPM signals.
Developing the habit of hitting save in code editors is so important.
I am curious about warning pop-up… it’s probably some aspect of AUv3 apps communicating with its host that isn’t there. Most AUv3 apps post a help screen and don’t do general preset functions in standalone, do they?
My impression is that Mozaic wasn't really intended to be run as a standalone. When you start it up, it tells you to run as an AUv3 if you want to use it with MIDI input or output.
If I recall correctly, Bram put in the standalone mode to make app store rejection less likely -- since some AUv3 only releases get rejected by the App Store team if the review is done by someone unfamiliar with AUv3
Very Thank wim , espiegel and McD for replay .
I want to use layers with pads for pads for specific case . For example : layout = 2 ( all pads ) .
pad num 0 = preset 1 . and pad num 1 = preset 2 .
Preset 1 has 13 pads for sending cc #40 but with different values via 13 pads ,and preset 2 has 13 pads for sending cc #41 but with different values via 13 pads . So ( I am only allowed to touch one of 13 pads at a time to send a specific value ).
Question: how can I create layers pads with pads.
I can create layers knobs with pads or shift , but pad with pads not.
Problem is that, I can’t write : if last pad = 0 and last pad = 2 send midi cc x for example . I think we can’t create conditions for pads with pads , At least I can say that I don't know. Of course, I tried a lot to be able to create the layers in some way, for example with latchpad or color pad , but I didn't succeed.
Problem 2 : how can I create state saving for layers ? I don’t mean AU state saving. I mean state saving for active last pad for each preset .
For example i am in preset 1 = ( with touch pad 0 ) and touch pad num 6 ( color pad num 6 is blue, for example ) and then i go to the preset 2 = ( touch pad 1 ) ,and touch pad num 8 ( to be blue ) .
So I expect : pad #6 to be colorless and pad #8 to be blue automatically , when I go back to preset one, pad num 8 to be colorless and pad num 6 to be blue . ( state saving for layers).
Can you explain what you mean. Rather than tell us the problems, it might be easier to say:
when I press pad 1 i want X to happen. I then want to be able to ...
etc
re state-saving. have variables that hold the desired state. update them as needed and then update FROM them when needed. you may want arrays that track the various states and defaults that you want to track.
Yes, my problems are exactly what you wrote in a very concise way. I gave detailed explanations because I felt that if my explanations were too short and concise, someone would tell me why your explanations are insufficient and incomplete, and what exactly you want, and explain more. .
Regarding re state saving, I don't know exactly what to write. I have done this for knobs when we change layers with shift or pad, but I don't know about pad with pad.
@pejman, you're going to need to learn to get away from thinking of pads as holders of values. They do not. You are going to need to learn to use pad touches to store variables and recall variables.
You need to step back and learn some more of the basics before you launch into solving difficult problems all at once. Talk of layers and presets is premature until you have the mechanics of using variables.
@pejman, here's a quick example of using pad touches to first store something in an array when a pad is touched, then recall it to be used for something else.
@wim . Yes, I am familiar with the knob, shift, and pad function mechanism, but I have a problem with creating a layer by the pad through the pad itself, and I also wrote in the previous post that I can create layers and make a re state saving for them, but in the case of the pad with pad I have a problem .
It is interesting to know that I learned layer creation and re state saving through your own patch called Basic Midi Controller. I also know the use of Call@ xxxx from your patch .
I suggest taking a dive into the Simple Scaler script to get a feeling for one way to store and recall presets. There may be better examples out there, but that's one I'm familiar with, which might make it easier for me to respond to any questions that come up as you learn more about storing and recalling variables representing pad states.
Very thanks wim for Example and suggest into the Simple scaler . 🙏
I start to research more.
OK, but there's no concept of "Layers" to pads. They don't hold any value at all other than whether they're "Latched" or not. You've got to store any values you need into variables. If you want multiple "layers" then you need multiple variables (or a more complicated single variable - forget that idea for now).
Once you get the idea, you'll be able to do a lot with pads 👍🏼. The main thing is they aren't like knobs, they don't store values.
You can code for multiple PAD touch events. I just tested what happens with this code running:
I touched all 4 PADs at the same time and then lifted my fingers up one at a time and the script logged these statements. NOTE: The bottom line is the first statement logged and so on up the list. It proves I touched 3 before 2 and 0 and lifted 3 first.
Up0
Up2
Up1
Up3
Down0
Down2
Down3
Down1
You can see that every touch generates a OnPad event for the touch (Down) and release (Up). So, you can test to see if more than one pad is currently “Down” and detect double, triple, etc events and do something with that unique series of events.
Just save a list of “LastPad” numbers into an array and increment a counter of active PADS. Then scrub the number on the Up event for that LastPad. Using Lastpad as the index makes sense with another variable storing the current number of active PADs.
“Problem is that, I can’t write : if last pad = 0 and last pad = 2 send midi cc x for example”
Well, if the ActivePad array shows 0 and 2 are active then send CC x. This will all happen immediately after the second pad is touched if you check for this situation with every OnPadDown event handler.
Don’t worry about dozens and dozens of status tests… Mozaic can keep up with humans pushing a few PADs even at master drummer speeds.
Basically, the PAD has no “storage” but as a programmer you can create variables to store events that are like you mention… “states” that the PADS experience as touch sequences that you store into little recordings, lists, arrays, etc.
Everytime you ask a question there’s an opportunity to change the programming of your brain and teach you how to think about an event driven programming language. Computer Graphics code tends to follow these concepts of responding to events.
@McD. Thanks 🙏 for all explanations ,and help . This infos is very useful for me.
@wim , I can understand the patch you wrote, but I don't understand how it relates to what I want and mentioned.
And you even sent a code after that, which was related to,, layer01, layer02 and...
I can request you to explain the question I asked earlier in a simpler and clearer way or write the code
I can now write code that corresponds to layers related to knobs via shifts or via pads.
But I really have a problem in this regard, ( layer pads with pads ) no matter how much I study help, I don't get much.
Even analyzing ( simple scaler patch ) is difficult for me
@pejman : I don’t know if others are in the same boat, but I have no idea what you mean by layers in this context. Can you give a step by step explanation of what you want to have happen in that would help someone to understand the functionality you want to implement.
When you touch pads 1-4:
Reset the colors of all pads to default/white/neutral
And for that PAD change the colors of any pads that have a “history” being active of colored
“History” means you made a variable to save the PAD’s state of active PAD’s or CC or whatever.
Mozaic handles the presentation of a user interface. The Model or Layers as you call it just be coded by you to have a set of “behaviors”. You can do this. As you explain what you want it shows where you want
This to be presented in the GUI and how behaviors like CC’s output need to change as well. Everything is trigged by the user touching something on the screen and you having code ready to fulfill your wishes.
You are creating a new approach for Mozaic that only the best programmers can capable of writing but that doesn’t mean you can’t become a better programmer too. It’s just another summit to be targeted and conquered. Good luck.
Keep asking questions too.
>
This is a simple exercise just for the graphic UI or changing the colors state in the pads. With 2 series of pads : pad 1 and 2 are blue and other pads are pink. And trying to create layers with only two tracks.
In order to get to the concept of storing and recalling what you refer to as "layers", you first needed to understand storing the values related to pads in array variables. I didn't want to complicate the example by including more than just that until sure you understood that concept. Now you do. 👍🏼
I was hoping that would be enough to get you started understanding the Simple Scaler preset code but was also aware that it can be difficult to understand things when surrounded by a lot of complex code that does other things.
Sure. Here's an example intended to explain how to use an "active" set of variables to hold the values you're currently working with and then to copy in other sets of values as you need them.
Yes, the manual is excellent, but it doesn't go take things at that level. You've also introduced an abstraction, "layers," that makes sense to you but isn't easy to translate into Mozaic compatible terms for others.
It'll get easier to understand other people's code over time. You're making steady progress. 👍🏼
@pejman : there are several ways to do what you want. one way is to build an array for each track. the array slots will represent patterns. Have a 1 in any slot where the pattern is on and a 0 where it is off.
So, if the current track is track 2 and the user taps a pattern pad, set the pattern slot to 0 or 1 as appropriate.
Pseudo-code:
Hopefully that made sense
@wim , and @espiegel, Thank you very much. I will study and research your instructions, I hope I will be able to solve my challenges with them.
Thank you for taking the time for me. For codes and explanations.
I found the code you provided very interesting and informative, and I have some questions about it that I will ask you at the appropriate time.
Where should I put the SendMidicc command for 12 pads of each track separately ,now?
I know that this command should be executed under @OnPadDown , But I don't know how to associate SendMidicc under @OnPadDown with other commands or Array.
Here's the same example but now also sending out CC's in
@OnPadDown
. I added an array to keep a CC number for each layer just so there would be something available to use, and to demonstrate using two lookups in the sameSendMidiCC
command. Chew on that one for a bit and let me know if you have specific questions about anything you don't understand. 😉@pejman - Once you've understood the example above, take a look at this one. It's the same thing, but with the code that does the midi sending moved out into its own event. This helps keep the code easier to follow.
Thanks wim again. But none of the 12 pads send cc values. Only trackpads ( The first four pads ) send CC values instead
Of course, I mean by touching each of those 12 pads.
Yes. That's the way I made the example. It's not to implement whatever your idea is, it's to give you an example of how to send Midi from the
OnPadDown
event, building on the previous example. Its to help you to develop the knowledge to apply to your own scripting efforts.If you are developing a script and need help with specific pieces of code that aren't working then show what you've done and describe in detail what isn't working or what you don't understand. 👍🏼
Yes, I will try my best and if I encounter a problem again, I will ask for your help. Very thanks.