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.
Question for MobMuPlat folks.
Does anyone know if it is possible to save the state of a patch within the app itself? I have not had much luck finding info on this. I'd love to be able to store the state of the gui objects like a preset. Also, it would be really rad to store recorded audio from tables. Anywho, any info would be greatly appreciated.

Comments
@otem_rellik I don't believe you can save patch states locally.
A work around would be to use the network capability of MobMuPlat, to send and recieve patch data.
It is possible to have a save and load feature for your patches, but it would have to be implemented by a Dev.
It could be done using the principle used to create the Table GUI object, by creating a load and save object that would load and save data from your PD tables on request, but I think this is a job for Dan the Dev and he should only add it as an IAP.
Hi. You can load a patch and preset locally. I put a folder called 'patch' in my MMP Documents folder. Call it what you want. This file I uploaded just needs a way to get the data from the MMP sliders to the sliders in PD. I get 'udpsend blocked' craziness when I connect the sliders. I'll work on the save later tonight. I'm tired, gotta work soon. Hope this helps.
https://www.dropbox.com/s/bq3ijhsfiw9s1c2/patchtest.zip?dl=0
Blah. Couldn't sleep. Figured it out, I think. Needed to add a switch and spigot. Seems to work, no problem. What do you think?
https://www.dropbox.com/s/97eu01q9bnjwnt0/workingsave.zip?dl=0
Hi everyone,
libpd does not (I believe, but am checking further) support re-saving the pd patch, which would allow saving newly generated data (with the patch) within a table or text object. So it looks like there isn't a way to persist performance data between patch opens. That's a bummer.
As for getting recorded audio out of a table: look at the [soundfiler] object, and try sending it a write message. Hopefully it will then write a file to the same "documents" directory as the patch. (There's always a chance that iOS will block file write access. It should work fine on Android). Let me know if that works...
I did a test patch, recording sounds, saving as .wav, and reloading. It works! (..on iOS.)
I wrote a preset write/recall system subpatch a while back, which on the mac requires saving the whole patch. Currently, it works for "factory" patches, created while using the MMP editor on the computer. Now, I need to re-write it so it saves to a single table, which then should be saveable/loadable. If it works, there will be writable memories, as well as last opened state recall.
Ditto for midi learn...! Will share.
@otem_rellik So, here is a POC that saving and loading files and presets locally works. Saves in MMP/Documents/patch. Lots can be done, like synching bpm, etc. Anyway, here it is. Also, I included a 16x16 pd file grid object for those feeling frisky about saving, etc.
http://www.dropbox.com/s/8ugaa6sj7kelffi/SaveLoad.zip?dl=0
Oh, a pict.... Turned 'round wrong.
https://www.dropbox.com/s/a8qmxr9lsg4s1zm/ag_memory_template.zip?dl=0
Call me obsessively friskily. Here's my subpatch of memories, with a MMP example. Does not yet include "last state recall". Not yet tested on the iPad, but i need to go to sleep now. G'night.
@vsmqu Very sexy patch.
It would be great if MMP supported AB2 state saving.
Ahh, saving state to a file on disk...good idea @ArcaneScreams...why didn't I think of that.
Is this successful on both iOS and Android?
A good Doh! moment can be as satisying as a Eureka! @ArcaneScreams thank you!
Tested on the ipad. It works!
@danl no android to test on here.
@danl No Android here either. I think it would work. @vsmqu Must find a way to inspire more Eureka moments. Keep up the fantastic work!
Awesome work! I'm working some of it into my looping patch tonight.
https://www.dropbox.com/s/tt8wxvo9s8omxnc/ag_CClearn_template.zip?dl=0
Midi CC learn. 1.Turn on "learn-enable" 2.Move a control in MMP 3.Send it a CC message (repeat steps 2 & 3 for each MMP control) 4. Turn off "learn-enable"
Saves to currently selected memory when learn-enable is turned off. This version can assign 36 controllers, in 8 memories (8 separate .wav files). Has its own midi channel select.
@vsmqu Ok, so it took me a minute or two to actually figure this out. Not because of your instructions, which are clear, just because of initial midi setup on iOS. Anyway, you just made life with Lemur a hell of a lot easier. Thank you. Works like a charm. Kudos to you. So, we can add more controllers by copy/paste pd 12xCCLearn, and renumbering, and setting CCmemory_temp1 to a higher number?
Yes. The CCmemory_temp1 array is already sized 64. Also, in "pd CCmemrecall", increase the number input to "until". The memory files are already big enough for 1000+ controllers!
As I'm sure you already know, you can send the outputs directly to your PD patch, rather than through the MMP GUI, though you still need the GUI to assign CCs.
Glad you like it, have fun!
[To add: store input channel in memories.]
[To add: store input channel in memories.]
This is where I got lost. Also, in 12xCClearn24-35, one integer is set to 43, when all others are 64. It's going into list/AA. What's that do?
Thanks @vsmqu for the patches, I'll "study" them on weekend!
@danl I am using the java editor and would like to ask if it's possible to copy elements form different mmp projects. It is essential for merging different layouts into one, like I do with pd files and merging them to one.
If it's possible with the Mac editor I could try using OSX with virtualization....
@ArcaneScreams Lapsed into a thought bubble there. That should say: [Note to self: something I just thought of to add to the patch- saving the midi channel selection with each memory, which isn't the case now. Will do, should be easy.]
All the control conversion factors are left over from the larger patch I pulled "CClearn" out of to make a template. The ÷64 is for a toggle (2 position switch), ÷43 is for a 3 position switch- so if you were using a physical knob controller, it would match the motion of the virtual knob (range 3) in MMP, with no precision required*. If you have the means to send precise CC values, no conversion of the 0-127 CC values is necessary. See notes in "pd 12xCClearn0-11", and the 9 position knob (conversion factor ÷15) in the example.
*My old M-Audio Radium49, which was a great find at Value Village, will sometimes spit out a wee CC message when bumped.
https://www.dropbox.com/s/tt8wxvo9s8omxnc/ag_CClearn_template.zip?dl=0
Updated with more instructions, saves midi channel with each memory.
Ok, I understand. The extra instructions help a lot. Cool patches. Seriously.
@ArcaneScreams You might want to download it again. Found an extraneous loadbang, which was rendered obsolete by the midi channel recall.
Or, you can just remove it, if that's easier. In the "pd CClearn_x36_mem" main patch, there is a message object {1} to the left of the select object {select 1...16}, connected to the loadbang below. Delete that message object. It's no longer in the version on dropbox now.
@vsmqu your patch saved me, man! I was trying to save a "bank1.txt" file with no success. Then I saw that below your |textfile| object you linked a |; $1 $2( message. It works now ,but I don't understand why!
@Korakios Now I'm the confused one. I don't think that's my patch, I didn't use a |textfile| object. My patches save as wav files with the |writesf~| object (because I was already using an array to store memories... and it's what I could figure out!). I think you owe your thanks to @ArcaneScreams ?
The textfile just stores the read/write info of the patches in a list. And the vis 1 is sending the data to the canvas.
Ok , sorry for the mess...@ArcaneScreams is also my hero!lol....I downloaded the "workingsave" patch while ago and messed things a bit. Now I got the textfile working ,but writing an array straight to wav file is brilliant idea...Thanks both! I am writing a simple app (patch) for using my casio xw g1 synth as a midi controller . I reached the point where I stored the data to array . But stacked on how to save them. Thanks both!
Has anyone managed to load a photo from a different folder (not the root)? Although now I can save files as presets on different folders (even sub-folder) ,I have to place a jpg image on the main MobMuPlat shared document folder.
Also I cannot scale properly the image I use for background. In the java editor it seems filling all the screen ,but on my ipad mini the bottom is empty.
I found that with a simple expression " |;array write bank1.txt( " I can write instantly an array, but I figured out a cool way to store a bank depending on the button name.For example if I have 3 buttons when pressing " button1","button2","button3" I can instantly write a 1.txt, 2.txt, 3.txt file with a single expression. If anyone is interested I can upload that part of my patch.