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
@wim
🔺I changed your code to 1.5 hertz , And I added setknobvalue and send CC to it so that we can see the changes more easily through knob
Please see this video . It seems complicated to me why this happens sometimes.
https://www.dropbox.com/scl/fi/8k9dyxfcbi2b5nb4hn3g3/out_2024-01-27-10-54-50.mp4?rlkey=ior2ypyrx5uqsjivcbvwjwakw&dl=0
Please note that in some cases I will enable or disable cubasis playhead and enable .
@OnLoad
hz = 1.5
interval = 60
SetTimerInterval interval
SetLFOType 0,{Square}
SetupLFO 0,0,127,NO,hz
running = NO
@End
@OnTimer
SetKnobValue 0, GetLFOValue 0
SendMIDICC 0, 1, GetLFOValue 0
Log GetLFOValue 0
@End
@OnPadDown
running = not running
if running
StartTimer
else
StopTimer
endif
@End
I’m sorry, but I have no idea what that video is supposed to demonstrate.
@wim
I wrote in response to your question : “ ___The image you see in the screenshot is related to the performance of LFOs patch by orchid.
I have this problem in the codes that I wrote myself, but unfortunately, because the codes that I wrote are not readable for you, I refuse to send them.”___
Unfortunately, as I have not yet written my code in a way that is publicly understandable or comprehensible, I will refrain from posting it at this time until I have modified it to be readable by all at the appropriate time.
But in fact, I wanted to say that this problem exists in LFOs patch Too .
I see.
I may be able to find some time to look at the LFO patch by orchid tomorrow.
Have you tried in another host such as AUM to isolate whether this may be caused by Cubasis?
@pejman - I’m not seeing any incorrect behavior of the LFOs script in AUM.
Are you sure you don’t have a modulator set accidentally on th square LFO you’re recording?
@pejman - I didn’t see the problem in AUM during one quick test, but I do see it in Cubasis and Loopy Pro. I can’t say if it’s a problem of that LFOs script or something else.
@wim
You wrote : Have you tried in another host such as AUM to isolate whether this may be caused by Cubasis?
🔺I also tested it in aum, strangely, sometimes this happens during the entire LFO execution, and other times when I enable and disable the LFO, there is no problem at all.
You wrote ; Are you sure you don’t have a modulator set accidentally on th square LFO you’re recording?
🔺No I haven’t any modulator .
This video is test in AUM .
https://www.dropbox.com/scl/fi/xic1lcj5765orjs23l0s6/out_2024-01-27-12-42-45.mp4?rlkey=pn2sjmzcsj7czoayf7x5dflts&dl=0
If there is a case where it is not working in Loopy Pro, could you post a project on the slack?
I can confirm the occurrence of intermediate values (during transients) of Moazaic square LFOs.
@brambos Here a modified version of @wim ‘s script showcasing the behavior.
I myself can live with that Mozaic quirk and simply would add extra code if i were sending out square lfo CCs to ‚recitfy‘ the values before sending.
Hi
I want to mix delay with HostTempo , But with the condition that if the tempo increases or decreases, the delay will increase and decrease properly compared to the given tempo.
Imagine that inside Aum as host app, I have a sequencer that plays bass drum and snare notes alternately and regularly. It sends notes to my mozaic patch .
I created a 500 ms delay through knob number one of mozaic , While the host tempo is 100 , but when I increase tempo in Aum , The amount that should be reduced delay is not reduced by the code I wrote and the ratio is incorrect.
In this patch I wrote “ delay - HostTempo * 2 “ that I know it works wrong.
My goal is to create something similar to swing, that by increasing or decreasing the tempo, the swing ratio should be observed correctly.
@pejman -
HostBPM is in beats per minute. But the delay parameter is in milliseconds. So, to use HostBPM to calculate a delay in ms, you have to do some math:
Explanation:
Now that you know how many milliseconds are in a beat, it's easiest to target your delay to some fraction of a beat. Lets say we want a 32nd note worth of delay. We just need to divide the milliseconds for a beat by the right amount. A 32nd note is 1/32nd of a whole note (4 beats) so we have to be aware of that in the formula.
So we end up with:
ms per whole note = (60,000 / HostBPM * 4) ms per 32nd note = (ms per whole note ) / 32 = (60,000 / HostBPM * 4) / 32I hope I explained that in a way that makes sense.
Delay calculations could also be based on the
QuarterNoteMozaic variable, which returns the millisecs per Quarternote..So adding a delay of 1/16 could be specified as QuarterNote/2, while a delay of 1/2 is QuarterNote*2.
To offer a knob specifying the fraction, i would setup an array of fractions like
tempo_fractions = [ 0.25, 0.5, 1, 2]for 1/16, 1/8, 1/4, 1/2 note delays and a knob that defines the integer index to be used to index into that array (lets name itdelay_idx). Whenever the code needs to specify a delay value, usetempo_fractions[ delay_idx ] * QuarterNoteto specify the note-length dependent delay time.One can also add fixed fractions for dotted and tripplets to the array (and thereby to the knob dialing through these)
As i re-read your problem description, you want to add tempo dependent swing, which means staying off grid and not to use the fixed note length steps my above post offered.
BTW as i learned for implementing my ‚Apply Swing’ Mozaic script, it is common in pop music to apply swing delay only to notes issued in certain times during a bar/beat, ie the ones arriving on the odd 1/16th or odd 1/8th.
A first step to archive bpm dependent delay would be to use the knob as a ‚ratio‘ between 0 and 0.5 for
QuarterNotefrac = TranslateScale (GetKnobValue 0), 0, 127, 0, 0.5and the usefrac * QuarterNoteas delay time. So its somewhere (but still fix for all bpm tempi) between no-delay and 1/16 note. In center position it‘s exactly 1/32 delay(one can also use
QuarterNote * (GetKnobValue 0) / 255without the need for the frac variable as GetKnobValue returns 0 .. 127)@wim
Sorry for late . I was testing and reading the material you sent me .
Thanks for reply and help .
I understand the theory of what you said, but I don't understand its relation to delay .
I don't know how I can use this formula in my patch.
Should I be using 0 to 32 translated instead of the 1000 milliseconds I put in my patch?
That's a much more elegant way of doing it. Thanks.
@pejman, I would make the dial go from 0 to 0.5 as @_ki says, then use @_ki 's simplified calculation rather than mine.
Something like:
@_ki
@wim
I didn't realize @_ki had sent two posts after @wim. I don't know why I didn't see them, maybe I hadn't refreshed forum.
Thanks @_ki and @wim ❤️.
I will try this method.
@_ki
Thanks for reading my post again. Yes, that is exactly what I meant .
You’re formula work properly, thanks 🙏.
Only I used 1 instead of 0.5 for more delay.
frac = TranslateScale (GetKnobValue 0), 0, 127, 0, 1
@wim
Thanks wim for writing suggested @_ki code , 🙏.
Hi ,
How to calculate note length in mozaic ?
It means the number ( milliseconds ) from the time interval of the note being pressed until the time the note is released ?
Use the systemtime function to record the time when the note arrives and when it ends subtract that from the current system time.
@espiegel123
Thanks espiegel for help , i will try . 🙏
Hi again,
I use lfos in some of the patches that I am making. I use labels and set knobs to show the performance of lfos, for example, I use the values that are being exported from each Lfos for setknobposition and label knob.
Therefore, I have to use them in @ontimer along with loops, and this issue causes the cpu consumption to increase drastically.
As far as mozaic warns about using too many loops in @ontimer, but the patch works properly
I remember that @espiegel warned me about this before, but I don't have a solution to avoid many loops and many lines of code that I used in ontimer.
Please guide how and where should I use the codes related to labelknobs, setknoblael and setuplfo that I want to use except @ontimer . ??
@pejman - The timer interval is important. If you're doing a lot in each timer interval then you should set as long a timer interval as you can and still get smooth enough results.
Other than that, there may be ways to optimize the code in your timer loop. Sometimes lengthy if - then statements can be reduced using arrays and in other ways. Maybe if you post an example of an
@OnTimersection that's giving you trouble, we can spot some ways to reduce its overhead.@pejman - here's a simple example meant to show two things:
forloop. The text on the labels is kept simple to work withoutif ... elseifstatements, but wouldn't create a lot more overhead if you to use one for more customized labels.Maybe this will give you some ideas for streamlining your
@OnTimersection.@wim
Thanks for all of information 🙏.
I am reviewing and testing all the content you sent me.
Soon I will send you one of the codes I wrote in that @ontimer.
Today I was getting mildly frustrated with getting the Orchestral Dreams pack in Module to sound right without hitting my keyboard unnaturally hard. I looked at AUM’s own keyboard with its ‘velocity range’ feature, and thought, “This is surely something @wim would have written a Mozaic script for, right?” and lo, it was so. Thank you, past @wim.
Good to know. 👍🏼
Which script was that? There are probably more sophisticated ones available. I don't remember writing anything like that. 😂
Ha, the https://patchstorage.com/orchestral-instruments-range-limiter/ — I think the velocity range was an afterthought, but what I was looking for. Though the actual note range limiters also come in handy for my scenario, too 👍
You might also want to check out CurveMaker and MIDI Scaler.