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
I have a request for the Scenic Sequencer script (is the author a member here?) I love this script, but I would like to offer a possible improvement.
I would like for the Edit Controller view, OnPadDown behavior to send the cc with the knob value, so if you are attempting to get the value just right you are able to do so. In the current form , it just sends the CC value 1, for midi learning purposes.
I can not work out how to pull the controller's scene's CC value to send on the Midi message OnPadDown in this view.
Any help is appreciated!
https://patchstorage.com/scenic-sequencer/
All right! I think I’ve licked the stuck notes problems. At least I hope so. The Chordulator version 1.0 is available on patchstorage.com. https://patchstorage.com/the-chordulator/
Be sure it comes up with the version 1.0 indication in the description when you load the script. Note, previously state-saved sessions in AB, AUM, etc. will not automatically load the new version. You have to reload the script.
I just uploaded a new script to https://patchstorage.com/platform/mozaic/ called Scale Compendium.
This script will quantize incoming MIDI notes to a preset scale, of which 32 are included along with their associated modes. Also included are an assortment of common triads and 7th chords.
Scales are organized in three banks. There are up to ten scales per bank, with each scale having a number of modes equal to the number of notes in the scale (except for the symmetrical scales, which are a special case).
Press the SHIFT key to change banks. Use the SCALE knob to select the scale and the MODE knob to select the mode. The KEY knob changes the root note.
the STYLE knob determines what the script will do when it encounters a note outside the scale. STYLE 1 will filter out all out-of-scale notes; only notes in the scale will sound. STYLE 2 & 3 will move out-of-scale notes to the nearest scale note, but if there are two equally distant notes, STYLE 2 will move to the higher note while STYLE 3 will move to the lower note. STYLE 4 will always move up to the next scale step regardless of distance whereas STYLE 5 will always move down to the previous step. STYLE 6 will quantize toward the root, perfect fifth, or major or minor third whenever possible.
@wim cheers for updating our let you know if I get any new stuck notes.
I still seem to be getting some. Not nearly as bad as before, but not perfect yet. 😐
@Bryan Are the buttons meant to be showing with this script all I can see is the script description where the buttons usually are. Probably missing a trick here but are the banks showing ?
Beside LastPadVelocity it would be nice to have LasPadX/Y as well
Everything is set by the dials. The numbers are defined in the text so you have to scroll down in the text field and look up what you want. “Key: “ is the only dial that is self-explanatory.
Yes, I’m here for sure. Glad you like the script. Your proposal is good and shouldn’t be hard. I was anyways planning to make an update, adding some labels to the pads now when it is possible. Hopefully will get it down the coming days, will post here when done.
There is:
GetXValue
andGetYValue
But he wants: GetPadXValue and GetPadYValue.
LastPadX/Y, from all the pads, not just the XY pad. Also requested by me on p. 5 of this thread. Where also you said "oops. You meant from the pads" on the next page ;-)
I mean for the 16 pads, would add some extra functionality.
With a single pad you could transpose -1,+1,+1 oct, -1oct, reset
On an 13" iPad the 4 pads of the first layout are HUGE, tapping at (0,45,90,120,...,center) is not a problem.
But we could use the the same variable as I believe all callbacks share a single thread.
Actually it would also be useful for other obj like the shift button (prev/next layout) and even the knobs, a quick tap would bring you there in no time, great if the knob has just 2-4 states. Off course we would then need an OnKnobDN/UP proc.
Just a suggestion, but as I believe most of the coding for it is already there ..
Ahh misread it.
Basically 16 little bitty XY pads. OK, I get it.
Missed your post on page 5, yes even better if we can catch movements
We really need an FR section
oops
The trick is that you press the Shift button to switch banks. The active bank will display in the Log window.
And in case you aren’t aware, you can scroll the text in the text window, which you should do because in addition to a description of the various controls, there is also a complete list of the scales. Find the scale and mode you want, then set the bank using the Shift key, and set the scale and mode with the knobs.
If you have any other questions, just ask!
Hi, @brambos - I’ve also run people being confused about things that are in the description because they don’t realize they need to scroll down and haven’t seen them. I think there really needs to be some kind of indication that there’s more in the block (a scroll bar, arrow, some kind of simple indicator).
I just uploaded a new version of the Scale Compendium to https://patchstorage.com/platform/mozaic/. I added a new quantization style which uses a random coin toss to determine whether to quantize up or down. I also added a blurb to the description to prompt the user to scroll down.
At @Bryan, you missed all the microtonal scales
Now that pads have labels I would use them instead, using the pads label to show full text
A knob for the banks, Upper pads for Scales and lower one for the Modes
And good practice when writing midi plugs would be to avoid overwriting the midi channel unless it's the purpose of the script.
Also non used msg CC,PW,.. should be forwarded as is.
Currently Mozaic is doing one weird thing, if you have a
@OnMidiNote
handler and a@OnMidiInput
, both will receive the NoteOn messageActually the safest way is to use only
@OnMidiInput
and Rewrite your own routines@OnMidiInput
if MidiCommand = 0x90 // note on
Call
@TransposeNoteOn
// or whateverif NewNote <> -1 // tracking transpose overflow
SendMidiOut MidiCommand+MidiChannel, NewNote, MIDIByte3
SetNoteState MidiChannel, MIDINote, NewNote
else
SetNoteState MidiChannel, MIDINote, -1
endif
Exit
endif
if MidiCommand = 0x80 // note off
Call
@TransposeNoteOff
// not needed in this casetmp = GetNoteState MidiChannel, MIDINote
if tmp <> -1
SendMidiOut MidiCommand+MidiChannel, tmp, MIDIByte3
SetNoteState MidiChannel, MIDINote, -1
endif
Exit
endif
SendMidithru // send all other msg untouched
@End
It makes it also easier for others to see what the plug is doing, all in a single function
my 2 cents
@brambos It would be nice to pass an optional value to ResetNoteState
For live playing it would make it easier to map from scale to scale. Ex: C major to any other key/scale and in this case there would be no note guessing. Of course this would only work with 7 note scales. Playing mono on weird scales is one thing but figuring out chords is a bit tedious.
Another cool trick would be to have two scales, ascending and descending, the script would switch automatically. But then it wouldn't be easy to find an appropriate descending scale just by name.
Like this:
https://youtube.com/watch?v=dEFHSnmdhrM
6:24 minutes of fun
New version of Scenic Sequencer now available:
https://patchstorage.com/scenic-sequencer/
Includes the proposal from @bcrichards (sending current value instead of 1) as well as labels on the pads plus the possibility to delete the last sequence step by holding Shift and tapping any pad.
Awesome!
This will be in the next update already.
I’m also thinking about adding a “SendMIDIThruExceptNotes” (or another name) which forwards all MiDI events except notes. This seems to be a really common use case, so that will save quite a few lines of code.
You could then add this as a catch all for CC, pitchbend, programchange, etc.
Thoughts?
Thanks for the script explanation @Bryan, all understood now. I’ve seen the update on patch storage so I deleted the old version downloaded and installed the new but at the top of the script description it still sayes version 1 so bit confused which version I’m on !
@brambos It would be handy in the preset list if the version number of the script had a column to show what version of a particular script was loaded. I suppose that down to the script writer to implement? Is there any way meta data could show this ? It would also be handy once a script is loaded to show the script name somewhere on the GUI aswell, maybe on the black banner at the top.
Thanks
And then a SendMIDIThruExceptCC, SendMIDIThruExceptNotesAndCC, ...
I think it would be easier this way:
If the user has a handler to catch note on, off, cc, allmidi , pass the event to it, otherwise Mozaic would take care of sending them as is
Then if the user really wants to filter these events, although most of the time we don't want to do that, then we just add a
So if there is no midi callback in the user script, then Mozaic should just act as a midithru
Also if there is a onNote, onCC,.. function, then OnMidiInput shouldn't receive these events as this requires extra filtering, and I don't see any benefit of receiving twice the same event.
IMO this would be less confusing and easier to deal with
@NoonienS thanks!
Deleted and installed new Mozaic 1.0.5. Grabbed a half dozen scripts to play with. Using latest apeMatrix. iOS 12.3.1 on 10.5 Pro.
Even just 1 instance of Mozaic is eating 90% CPU. Tried 3 different scripts. 2 instances of Mozaic kicks cpu to 160% and kills audio. Tried various scripts with same issue, but the last time was @brambos looper script using his Ruismaker on Chan 1 and Ruismaker FM on Chan 2. Was using another instance of Mozaic with midimarble script sent to DRC synth.
I'll see if I can reproduce that on apeMatrix. I haven't seen such CPU loads on AUM! Thanks for the report
It started out fine. Worked as expected for nearly half hour. Then it’s like it snowballed exponentially with the cpu use until it killed audio. Quit, relaunched and tried switching to your drum synths instead but it did the same thing. Like it grabs all the cpu and won’t let go.
Have you tried rebooting your iPad? There is a weird MIDI bug in recent iOS version that requires rebooting.