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
Thank you very much, your corrections and insights helped me to improve my code.
https://patchstorage.com/piano-led-visualizer-rotary-sim-alternate/
https://patchstorage.com/piano-led-visualizer-rotary-sim-sweep-v1-0/
After some rework I eded up with 2 versions that will do the trick.
The first code is alternating 2 notes at both ends of my keyboard's LED Strip.
The second code turns on a trail of notes at one side of the Keyboard's LED strip
Here is the end result
https://youtu.be/NAIaEoDAVyY
Here is the patchstorage link
https://patchstorage.com/piano-led-visualizer-rotary-sim-alternate/
Nice job @jjpl2001 👍🏼
Is there a script that will quantise incoming midi velocities to a certain range, eg. 100 to 127? in this example, any incoming note below 100 will be output at a value of 100, and any incoming note above 100 will be output at the same velocity as its input value.
That’s going to be easy. You can also do it easily with MIDI Curves.
https://patchstorage.com/midi-scaler-v1-0/
It doesn't do "clipping" as you describe though. It compresses the full range proportionally into the given range.
I've searched, but can't find the answer.... What I would like to achieve in Mosaic is turn on the wah (unbypass) while the pedal is moving and turn off IF the pedal stops moving (no midi activity) for longer than 2000ms for example. So (I think) basically something like onMidiCC do this, otherwise do that, but ONLY IF the CC's are no longer coming in for more than X period of time. Another way to put it, IF X happens, do Y, otherwise do Z but but only if X value hasn't changed in 2000ms (for example). Thank you so much!
Something like this should work
Set timer interval to 2 secs
each time a cc event arrives set lastCcTime to systemTime and stop timer and start timer
when the timer goes off compare current time to system time; if the time elapsed is >2000, stop the timer and do your timeout stuff
That sounds like the right concept, would you mind helping with the actual script? I'm in baby shoes! Thank you!
I’m afraid that I am short time.
Call me old-school, but all my WAH pedals are analog. What model do you have? Is it actually a WAH pedal, or an expression pedal? What midi cc does it send out?
It's an expression pedal. Sends cc23 on ch1, but can be set to anything. I'm using a wah in Tonestack Pro. Not bad actually!
I'll see if I can whip up a script that works. Not knowing what you want to happen during the on and off periods, I'll just put in log messages or something as placeholders.
I'd really appreciate that! Thank you so much!
This should work, I think. I kept it to the basics. Let me know if I made any careless mistakes or if you need help with fleshing the script out.
Wow! This works exactly as I was hoping! Awesome work! Thank you so much for your help!!! Your notes and hints were helpful! No noticeable change on the CPU. I definitely couldn’t have done this on my own!
Would it be possible with Mozaic to capture all MIDI notes and truncate those that are longer than e.g. 1 bar or in the moment when the next note is started?
I'm trying find out a workaround for this bug in iBassist:
I don't understand "in the moment when the next note is started". Can you elaborate?
Wait. I think I understand.
You want to cut off a very long note as soon as any other note is played. Correct?
If so, then that's not practical. To detect if the note is over one bar long, you have to wait until one bar has passed. You can't then go back in time and truncate the note - At least not until time travel is invented. This would probably have to be a Mozaic 2.0 feature request.
The best you could do would be to cut off any note as soon as the next note comes in, effectively making the midi monophonic, which might be a reasonable thing to do with iBassist. There's an existing script that claims to do that: https://patchstorage.com/force-monophonic/
It is correct, sorry for MIDI term mismatch.
You nail it - making the midi monophonic is a clever and straightforward way.
Thank you @wim!
@wim, I've been using your timed script for my expression pedal and it works flawlessly! Now that my expression pedal turns on/off the wah if not moving, I'd love to add a double and triple tap option to my buttons. I've been searching and looking at some code(s), but I wasn't sure if its possible to have other timer events added without messing up the first one?
My floor switches currently send out a single message of CC#4 through #11 with a value of 64. This can be edited of course and I believe if needed, to be set up as either momentary or latching.
So it is eight switches and currently they are triggering 8 pads in mosaic. I'm assuming creating double and triple tap for the pads is the way to go in the script?
If doable, can you please help with where and how to add those? Thank you very much!
That gets a quite a bit more complicated. There's only one timer. So, there needs to be 9 checks in total (8 for the switches and one for the expression pedal) within the timer. Then there needs to be a routine to determine if each is a single, double, or triple tap.
I have an old script around somewhere that has tap-detect code. I'll try to dust that one off and see if it still makes sense to me now. 😂
No promises. But I'll look into it.
Maybe we'll both get lucky and someone else who knows what they're doing more than I do will beat me to it.
I appreciate that! If there is only one timer, would another instance of Mosaic (in AUM) solve that?
FWIW, I used to do double-tap detection by recording the system time on the cc on event and whenever a cc on event I checked to see if it was within my timeout (let’s say 250 ms). It frees you from needing to have complicated timer loops.
You'd need an additional instance for each thing you want to time. That would mean 9 instances in this case, assuming you want to have tap detection for all buttons. That would be a clumsy and high-maintenance solution.
No, it's all doable in a single script without too much trouble. And as @espiegel123 noted above (and I remember now ... it's been a long time), you don't need to use a timer for that anyway.
Detecting and acting on the different tap types is probably the more involved of the two issues.
I found this script. Is this what you used?
`@OnLoad
FillArray downStart,0,16
pressTime = 250
@End
@OnPadDown
downStart[LastPad] = SystemTime
@End
@OnPadUp
pad = LastPad
if SystemTime - downStart[pad] < pressTime
Log {Short tap pad }, pad
else
Log {Long tap pad }, pad
endif
@End`
Does the desired action go into the OnPadDown and/or OnPadUp section?
Yeah, 9 instances is not elegant at all! LOL Instead of single/double/triple tap, would a single/double/long-hold be easier to detect or same difference?
Doesn't matter too much. In fact, I think my old script has all three.
Nice! That would give really multiply my buttons usefulness! And probably add to my confusion! LOL I can't wait to see your script!
Btw, @ztones, what host(s) are you using Mozaic in?
If you're interested, Loopy Pro has various tap detections built-in.