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
Circling back to this issue... Turns out I wasn't totally crazy and the problem didn't just "fix itself". I've been watching the behavior to see if I could spot a pattern but for now I'll just say it's random. I haven't changed a thing since the last postings about the tuner window showing and closing, but sometimes it closes the tuner window and sometimes it doesn't. I'll try to spot a pattern and when I figure it out, I'll certainly post back here in case somebody can benefit from the information.
Is there a way to write a script so that AUMs keyboard will always quantize to a scale of choice? Or to always tell the keys to run thru an app like scaler when you simply press the keyboard option on any open app?
I know there are app like scaler that will quantize the keys, but in the middle of a live jam having to reroute to each instrument is not feasible.
Would be cool if scales were added into aums keys but i don’t count on that ever happening
No. Mozaic can only act on midi that's routed through it. When you pull up the AUM keyboard by tapping the icon in an app window, the keyboard is automatically routed straight to the app.
There are ways to make this a it more performance friendly.
One is to use midi busses. Create one bus for each synth and make the routing from the bus to the synths. Route the AUM keyboard to the scale app. Route the scale app to all the busses. Disable all the busses but the one you want to play. When ready to switch, disable the old one and enable the new.
Another is to use midi channels. You can route through a script such as MIDI Channel Router or others, to alter the outbound midi channel, then use channel filtering on the target apps.
Of course, that doesn't bring the app window you want into the foreground. So the idea would probably need to be taken further to set up some buttons to send a midi command to parallel bind to change the routing and bring the app to the foreground.
Is it possible to create an awesome glide in Mozaic. Osc Audio made a great glide in sub808. If it’s possible to create a similar glide in Mozaic script. I can’t do Mozaic for the life of me.
Glide is usually created in the synth itself via a setting that enables it for overlapping notes. It's not generally done over midi.
One could use pitch bend with some knobs to control the rate, but it's problematic. Non MPE pitch bend is global, meaning it will affect all playing notes in the target synth. You also need some way to trigger the slide. If you use overlapping notes and there's more than one note overlapping, how do you know which note to slide to? The bend needs to be released in such a way that you don't hear it sliding back down. Mozaic can know when the note is turned off, but it has no way of knowing when the note has stopped sounding. If the target has a long decay, the release of the pitch bend will sound.
Some of these issues would be a bit more manageable if the target synth is MPE enabled, or if it's purely Mono. But in those two cases I bet virtually every one has built-in glide.
I could go on about all the potential issues, but I've already thought of enough to convince me I wouldn't like to try it.
What target synth(s) did you have in mind.
I had assumed that glide was made with midi. I was using Dagger and wanted to glide with soundfonts too. Will be great to have for when you need it. Not every synth rompler has a glide. Do you know if ChatGPT or Ai can make Mozaic scripts?
Dagger has glide built in. Any other apps you have in mind? I can't think of any that don't have glide off the top of my head.
I remember some attempts to get ChatGPT to write Mozaic code. I'm not sure if this was ChatGPT fail or success recently: https://forum.loopypro.com/discussion/comment/1378373/#Comment_1378373.
You have a lot more questions to figure out before you try to write a program, ChatGPT or no. I listed a few. All of which and more would need to be considered. I'm not trying to be discouraging, I'm trying to help you set a direction that has a chance of being successful.
On the other hand, sometimes the best way to flush out questions and issues is just to jump in. If I'm honest, a lot of my projects go that way. I think about it as hard as I'm able, but usually just dive in. Most people would tell us that's a bad way to go. It usually (eventually) works for me though.
Is there a script in existence which allows to set a timer in between messages that are being passed through?
so for instance if you have a CC LFO, to be able to set the milliseconds in between every CC on the output?
Do you mean to only let through one message each period, ignoring the rest?
I don’t see a script like that, but it would be simple to make if thats all that’s needed.
Not ignoring the rest but putting an interval in between every pass through message.
@Mo13
https://patchstorage.com/datareducer/
Cheers
Thanks for the tip @Alfred but I don't think this is what I'm looking for as it doesn't seem to put a time distance in between sent out messages.
Here is a line of code from @wim's "mega cc randomizer" which does exactly what I'm after, but then if it could be applied to process incoming messages:
// default delay in ms between sending CC messages out
cc_metering_ms = 50
Check this for lfo:
https://apps.apple.com/nl/app/gsdsp-mmmm/id6450306205
That would not work.
If that LFO is sending a constant stream of messages, you can't just spread that out like that indefinitely.
Let's say it's sending 100 messages per second (1 message even 10ms) and you tell it to spread them out to 50ms apart. You get and send the first message, then 10ms later the second message comes in. You want that message to fire 40ms later. So you save it, and trigger it 40ms later.But in the meantime, 4 more messages have come in.
Each of those four messages has to be saved and delayed, but while each one is being delayed more messages are pouring in. You end up with a potentially infinite number of values that have to be saved and then played out over time. Mozaic has limited variable storage. Each variable can store only 1024 values. After that it gets tricky to manage storing lots of values.
Think of an assembly line where parts come down the conveyer belt once per second. At one assembly point it takes 10 seconds to do an operation and put the part back on the belt. By the time the first part is done, there's 9 parts needing assembly. By the time the next part is done, there will be 18, by the time those 18 are done there will be something like 162, by the time those are done, something like 1,458 ... and so on.
It could work for limited numbers of messages, but for something like a constant stream of LFO messages it'd be impractical.
Hello all again! I’m trying to utilize the single/double/triple tap/hold script by @_ki but its a bit over my head (understatement of the year, but its only Jan, so its OK…. ). Where and how do I specify I want “THIS” to happen when I single / double / triple tap Pad 1 and Pad 2, etc. I’m sure it has to be in the @OnPadDown event, but I’m uncertain how. Right now the event looks like this:
@OnPadDown
pmPadDown[LastPad] = YES
if pmPadExclude[LastPad]
pPad = LastPad
pNumTaps = 1
pDown = YES
Call @OnPad
else
Call @PMCheckStartTimer
if not pmPadActive[LastPad]
Inc pmPadsActiveCnt
pmPadActive[LastPad] = YES
endif
inc pmPadTaps[LastPad]
endif
@End
Do I change the LastPad to an actual pad number for each pad? What about the each tap? Or do I write it somwhere else entirely? Thanks!
Here is the entire code:
Hi. I think you do not want to change the script at all. According to the documentation, you need to implement the OnPad and OnShift event handlers, replacing the logging in the sample code with the actions you wish to implement.
@ztones and @uncledave
Yes, you are right uncledave. The script is only a sample code on how to use the ‚script snippet‘ found between the lines
and
As described in the source you need to
Call @PadAndShiftManagerInit
in theOnLoad
function of your script and if needed, set set some of the pmXXX configuration variables before doing so.Then all you normall need to do is to add the two callback functions (ie user defined events)
@OnPad
andOnShift
in which you need to react to the values set in their respective parameter variables.If your script really needs to implement the Mozaic events
OnPadDown
/OnPadUp
/OnShiftDown
/OnShiftUp
orOnTimer
, the script contains instructions on how to cope with this requirement - usually the functionallity of the two new events will be enough.Ok I'll give that a go and see if I can set it up right... Thank you!