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.
[Logic Pro] How to use a MIDI Controller to control your plug-ins (+lots more) with MIDI Scripter.
I’ve made a MIDI Scripter script (adapted from one of the example scripts) that can map any incoming MIDI to any other Cc, plug-in parameter, pitch bend or aftertouch.
It can learn the target parameter by twiddling the controller in the plugin panel. You can assign parameters from any plug-in in the track -- Instruments and effects. After selecting Learn Plug-in parameter, Just tap the plug-in widget under the scripter UI to switch to the plug-in you want and touch the parameter you want to learn.
You can scale the Min and Max values and swap them over to invert the controller.
The attached script auto assigns controllers 12-19 to the inputs (you can change this if you edit the code on the Mac -- No code editing possible on iPad). You can also change the number of input/target pairs by changing the line:
Line 24: var TOTAL_TARGETS = 8; Change that value to the number of pairs you want.
To use the Controller Mapper script, open the attached project, tap the scripter tile and then tap the "..." menu button and save the script as a preset for use in any track.
You can now load MIDI Scripter in any track and load the preset from the browser.
You can also save the Patch (Tap the track name in the tracks view to save it as a patch) to save the full channel strip with all the assignments for the instrument + Audio fx.
It's a useful script on Mac too. You can setup different assignments for each track which can be easier than messing with controller assignments. Plus it can just plain convert CCs.
NB: You can record the MIDI normally. Just press record and twiddle the controller. The data will be saved as its original value. For example, if you map CC12 to ES-2 Filter Cut-off and record your playing and tweaking, Logic will record CC12 data. The scripter needs to be on to convert the data during playback.
It's easy to edit the controller data in the piano roll.
Apart from obvious things like mapping the knob on you MIDI controller to a plug-in parameter, you can do things like convert Pitch Bend to Delay feedback. Convert Velocity to filter cut-off. Use your mod wheel to pitch bend.
You can also use it to make things like @brambos Rozeta LFO etc. work with Logic's built in plugins. Put the Midi Script after Rozeta LFO and you can map the CCs that Rozeta LFO spits out to any plug-in parameter even when the plug-in might not have MIDI learn. Or even convert rozeta's LFO values to Notes, Pitchbend or aftertouch...
Much of the code comes from scripts that ship with Logic for Mac.
Feel free to suggest improvements. Please share your code if you improve or adapt the script...
***NB: It's just a MIDI mapper. It's not a replacement for proper controller assignments. You can't control the mixer channel/pan etc. It maps MIDI to PLug-in Parameters. ***
The attached Demo project has versions of the script with 4, 8 and 16 target pairs. The 16 target version excludes the scaling as that makes the UI way too unwieldy.
You can stack the script by adding another midi scripter plugin after the first to get more inputs.
You can have the same input controlling multiple parameters all with different scaling. For example in the demo below the distortion plugins output is reduced when drive is increased via the same controller.
*****EDIT 10/06/23*****
Updated script to fix it duplicating of values
*****EDIT 23/06/23*****
Updated project to include an instance of Alchemy with the performance pad X and Y parameters pre-mapped (it's not possible to select Y as a parameter to control on iPad).
Save the alchemy track as a patch to use it pre-mapped in any other project.
Ps it’s obviously totally free. If you make any improvements, please share :-)
Comments
Wow! Very impressive!
If my controller weren’t based on Mackie protocol, I’d be trying your code out. You could really be on the way to solving a problem.
Definitely interested in this!
I've implemented scaling for each parameter (based on the example script in Logic for Mac):
You can map any CC, Note, Velocity, Pitchbend or aftertouch...
to any MIDI (select via menu or learn) or plug-in parameter. ANY parameter for ANY plugin selected on the track can be assigned. So you can control, say, cut-off and resonance in ES-2 AND Drive in Distortion from the one script as shown in the above iPad screenshot.
I've not got my iPad with me at the office (quickly updated during lunch break!) so the above are obviously from Logic for Mac.
The output from the script is just MIDI so doesn't work with automation. Say I have input 1 as CC 12 and convert that to ES-2 filter cutoff. I can record the MIDI and it will be saved as CC12. The script then takes that MIDI and converts to ES-2 cutoff when you play it back. It won't be recorded via automation modes.
Not sure if that's possible or not.
This is for using your MIDI controller to control plug-in parameters, it's not a replacement for mix automation.
I made it to map the knobs on my AKAI MPK mini keyboard thingy (piece of crap that it is ) to synth and plug-in parameters and it works pretty well for that task.
I like it on the Mac too as I can save different assignments for different synths and works better for me than controller assignments as I want to record the MIDI in a region, not the automation when I'm tweaking a synth. Also, I can save a config for a plug-in and don't have to MIDI learn each time (or use it for synths that don't have MIDI learn). I find it works better for the way I like to do things than mapping smart controls which often causes issues as I don't always want the controls assigned...
(Edit: moved info from this post to OP)
@klownshed
Great work
Cheers. I take it it's working OK for you then?
@klownshed
No at work
Might get a chance to try tomorrow
But reading the thread, sounds like you’ve done a good job
Will report back once tested
Surprised no one else has jumped on this
Haha yeah.
I was gone for a year. Nobody noticed
I noticed
:-)
Amazing! Thanks for sharing! Will try later this week.
How do you open that project file direct into Logic for iPad?
You literally just open it.
Hmmm…
When I unzip it, it became and folder with extension .logicx
I had to try it again… Thanks!
I’ve switched to Safari then the zip-files was OK…
Have default to use iCabMobile as webbrowser, and that is awesome and superior in many ways in comparison with Safari…
But not in that way
Actually first time ever that it fail - have been using iCabMobile for many year, and it’s a joy to use…
Just had a moment to try this. Works perfectly. This basically solves the main automation gripe I had with Logic. Thanks @klownshed!
And this improves using midi cc in desktop Logic too. Imagine sending automation from Drambo and recording that.
@Samu @Gavinski @jwmmakerofmusic and anyone else check this out.
Wow. This is cool! Gracias amigo!
@klownshed as I said earlier, thank you for your incredible piece of creative work here!
This illustrates the difference between Logic Pro and other tools on the iPad. Logic Pro is a “platform” for which it is possible to develop significant and useful extensions. Nothing else in the IOS music toolset fits this description so far.
I sure will when I have time.
EDIT: Truth be told, I have lost interest in Logic Pro as a creative platform and have returned to Gadget for the most part. Instrumental tracks will be mixed down in Gadget. Vocal tracks will have stems rendered into Logic and mixed down in Logic. All to be mastered in Logic.
On thing I've found though is that not all AUv3's (even though they have AUParameters that can be manually automated using curves) respond to touch when trying to assign the parameters, auGEN X is one such plug-in.
This is caused by either the Plug-In or Logic's way of registering touch automation parameters.
Personally I'm in no emergency need of Midi CC automation as I prefer to draw my automation and most AUv3's respond well to touch-automation.
One other thing you can do,
You can set multiple inputs to the same MIDI cc and have it control different targets all scaled differently,
So you could make the modhweel control filter cutoff between 24 and 70 and resonance between 80 and 20 inverted.
Or say every time you turn the resonance up you can add a tiny bit more drive in the distortion plugin from the same controller.
And then save it all as a patch with your plug-in chain to re-use in other projects...
I've attached a demo with 3 instances of Scripter.
The first has 4 controller pairs, the second track has 8 pairs and the last track has 16 controller pairs but without the scalers as that's overkill for the UI.
The scripter in track 1 has a Modulator with an LFO sending to CC1 (modulation). That modulates Retro Synth Filter cut-off and resonance, increases the drive in the distortion plugin and reduces the distortion output as the drive goes up all from cc1.
You could also use Rozeta LFO and have three LFOs target multiple parameters. Add additional MIDI scripters if you need more than 16 targets!
Screenshot from the DEMO running in Logic on a Mac.
EDIT : Download is in the OP
Yeah multiple targets is like having your own mod matrix. You could also dedicate certain midi cc for external controllers while others use LFOs or Envelopes.
...
Seems like it’s outputting the midi input x8
Play a single E2 note, you’ll see it sends 8 off them and 8 noteoffs when released
With ob-xd for instance it’s playing mono only and with built in logic instruments, it doubles the velocity> @klownshed said:
Seems like it’s outputting the midi input x8
Play a single E2 note, you’ll see it sends 8 off them and 8 noteoffs when released
With ob-xd for instance it’s playing mono only and with built in logic instruments, it doubles the velocity
I used the mfx midi monitor to troubleshoot
Thank you @klownshed, you did brilliant work. 👏👍
Whatever I do to escape from JavaScript coding, somehow always find the way and bite me.
Should be fixed. Updated project file in the OP (first) post. Let me know if this works for you :-)
👍🏻
Amazing. Thanks