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 Store

Loopy Pro is your all-in-one musical toolkit. Try it for free today.

Request new Mozaic Scripts *HERE*

16364656668

Comments

  • edited November 2024

    Anyways, this has been another great learning opportunity! What seemed like a difficult feature to find elsewhere, it was such a simple solution in Mozaic!!! Love it! :)

  • @ztones - it's great that you're having fun learning Mozaic. 👍🏼

    SendMidiThru is somewhat nuanced. Since you have an @OnMidiCC section you have to handle it two different places.

    First in your @OnMidiCC you will need to put an else clause in the appropriate place and put the `SendMidiThru' there. However that will only let CC's through.

    If you want to send other midi through you will need to add an @OnMidiInput event as well. You might think you could simply put an @SendMIDIThru there a well, but there's a catch. @OnMidiInput handles all midi messages including CC messages. So your CC messages that you're handling with your script will leak through unless you exclude CC messages from @OnMidiInput to keep them from being handled twice. I hope that makes sense.

    You need to do something like this:

    @OnMidiInput
      // Exclude CC messages because they're handled in @OnMidiCC
      if MIDICommand <> 0xB0
        SendMidiThru
      endif
    @End
    
    @OnMidiCC
      if <main CC trapping logic here>
         // do stuff
      else
        SendMIDIThru
      endif
    @End
    
  • Thank you for that excellent explanation!

  • I'm glad it helped. btw, the section in the Mozaic manual that deals with the structure of MIDI messages is excellent. Understanding it will help a lot with ideas like the first byte containing the command + the midi channel number.

  • Slightly off topic...about showing the plugin window in AUM. I use one of the pads in Mozaic to send a CC to "show plugin". Opening/showing works fine, but closing it does not work. I tried sending 0, 127 and in between but the window stays open. Any ideas?

  • wimwim
    edited November 2024

    @ztones said:
    Slightly off topic...about showing the plugin window in AUM. I use one of the pads in Mozaic to send a CC to "show plugin". Opening/showing works fine, but closing it does not work. I tried sending 0, 127 and in between but the window stays open. Any ideas?

    Send two messages. First a value 127, followed by a value 0. AUM is expecting an 0n/Off sequence such as many (most?) foot switches send on press.

  • Unfortunately still no. I tried it without dalay, as well as with 20, 50, 100 ms delay the 0 message. Won't close.

  • wimwim
    edited November 2024

    @ztones said:
    Unfortunately still no. I tried it without dalay, as well as with 20, 50, 100 ms delay the 0 message. Won't close.

    Please post the code. Sending the midi the way I describe does work, so something else must be going on.

  • CH5 CC51 is the show/hide window. The CC50 is a bypass, which is working. I have commented out // the CC50, just to make sure bypassing it doesn’t interfere, but it makes no difference. Thanks!

    @OnPadDown
    If LastPad = 15 //TUNER
      if LastPadVelocity > 70
      LatchPad 15, YES
      SendMIDICC 4, 50, 0
      SendMIDICC 4, 51, 127
      //SendMIDICC 4, 51, 0, 20
      else
      LatchPad 15, NO
      SendMIDICC 4, 50, 127
      SendMIDICC 4, 51, 127
      SendMIDICC 4, 51, 0, 20
      endif
      endif
    
    @End
    
  • wimwim
    edited November 2024

    @ztones said:
    CH5 CC51 is the show/hide window. The CC50 is a bypass, which is working. I have commented out // the CC50, just to make sure bypassing it doesn’t interfere, but it makes no difference. Thanks!

    In the code you posted, CC51, not CC50 is the only one commented. If I remove that comment, the script works for me to toggle Nembrini NA Tuner visibility. Did you maybe just comment out the wrong line?

  • edited November 2024

    I was playing around with all kinds of variations. I just deleted the commenting out for CC51 but it still won't close. It opens fine, but doesn't close. The window goes blank gray, but stays open.

    So this is what I have now:

    If LastPad = 15 //TUNER
      if LastPadVelocity > 70
      LatchPad 15, YES
      SendMIDICC 4, 50, 0
      SendMIDICC 4, 51, 127
      SendMIDICC 4, 51, 0, 20
      else
      LatchPad 15, NO
      SendMIDICC 4, 50, 127
      SendMIDICC 4, 51, 127
      SendMIDICC 4, 51, 0, 20
      endif
      endif
    
  • @ztones said:
    I was playing around with all kinds of variations. I just deleted the commenting out for CC51 but it still won't close. It opens fine, but doesn't close. The window goes blank gray, but stays open.

    So this is what I have now:

    If LastPad = 15 //TUNER
      if LastPadVelocity > 70
      LatchPad 15, YES
      SendMIDICC 4, 50, 0
      SendMIDICC 4, 51, 127
      SendMIDICC 4, 51, 0, 20
      else
      LatchPad 15, NO
      SendMIDICC 4, 50, 127
      SendMIDICC 4, 51, 127
      SendMIDICC 4, 51, 0, 20
      endif
      endif
    

    What plugin are you using, and how is the midi routed? I'm not seeing the same behavior you are so there must be something different about our configurations.

  • edited November 2024

    That was it! I had to check off AUM virtual midi port. But then why was it opening???? LOL I am using Nembrini Tuner.

    It also seems like both open and close only respond to 127. I don't even need to put a zero in there. That does nothing. Opens and closes on 127.

    Thanks for thinking it through with me again! I didn't even think to check connections because it was responding to the open command. Oh the mysteries!

  • @ztones said:
    That was it! I had to check off AUM virtual midi port. But then why was it opening???? LOL I am using Nembrini Tuner.

    Without seeing your midi routing when it wasn't I can only guess that you had AUM Destination also routed to midi control and were getting doubled up messages confusing things.

  • edited November 2024

    So I just went through all the combinations, just for curiosity's sake.
    1: No midi routing at all to Plugin (though Mozaic is connected to "MIDI control Built-in") = opens but does NOT close
    2: Midi routed to plugin from Mozaic ONLY = WORKS
    3: Midi routed from Mozaic to "MIDI control Built-in" (nothing directly to plugin) = opens but does NOT close
    4: Midi routed from Mozaic to "Virtual" from "Virtual" to plugin = WORKS

    I was getting confused righting the above, I hope I didn't mess it up.... I think its right.

    So it seems it only works if either the only connection is from mozaic, but mozaic can NOT be connected to "MIDI control Built-in", or Mozaic to / from virtual and again, mozaic can NOT be connected to "MIDI control Built-in".

    What is "MIDI control Built-in"? Is it what controls AUM main midi controls parameters? Perhaps also the channel/plugin settings via midi. Sounds like I would need this for mozaic for connection to control other plugins/settings (unless connected directly to them). But this won't work if mozaic is connected to the "MIDI control Built-in".

    Update: I just tested a pad sending cc's to tap tempo in aum's main midi control parameter settings and it works just fine without mozaic connected to "MIDI control built-in".... so I'm not sure what its for...

  • @ztones said:
    So I just went through all the combinations, just for curiosity's sake.
    1: No midi routing at all to Plugin (though Mozaic is connected to "MIDI control Built-in") = opens but does NOT close
    2: Midi routed to plugin from Mozaic ONLY = WORKS
    3: Midi routed from Mozaic to "MIDI control Built-in" (nothing directly to plugin) = opens but does NOT close
    4: Midi routed from Mozaic to "Virtual" from "Virtual" to plugin = WORKS

    I was getting confused righting the above, I hope I didn't mess it up.... I think its right.

    So it seems it only works if either the only connection is from mozaic, but mozaic can NOT be connected to "MIDI control Built-in", or Mozaic to / from virtual and again, mozaic can NOT be connected to "MIDI control Built-in".

    What is "MIDI control Built-in"? Is it what controls AUM main midi controls parameters? Perhaps also the channel/plugin settings via midi. Sounds like I would need this for mozaic for connection to control other plugins/settings (unless connected directly to them). But this won't work if mozaic is connected to the "MIDI control Built-in".

    Update: I just tested a pad sending cc's to tap tempo in aum's main midi control parameter settings and it works just fine without mozaic connected to "MIDI control built-in".... so I'm not sure what its for...

    If you posted screenshots of the setup screens and routing , it might be easier to understand what’s going on.

  • @ztones, none of that makes any sense. You can ONLY control showing and hiding plugins by routing to MIDI Control. Same for tap tempo. Something else is going on here. I suspect other routings (such as possibly AUM Destination -> MIDI Control).

    Screenshots, as @espiegel123 suggests, are needed to sort through this.

  • edited November 2024

    Well, long story short, I def need mozaic(4:2) connected to the "MIDI control Built-in". Some important things don't work without it. And I can't get this tuner window to close as long as I have mozaic connected to the "MIDI control Built-in". Even though it opens, it doesn't close...even if I have nothing else connected to it. And as long as I have mozaic connected to the "MIDI control Built-in" it won't close even if I connect mozaic(4:2) to it directly.

  • @ztones said:
    Well, long story short, I def need mozaic connected to the "MIDI control Built-in". Some important things don't work without it. And I can't get this tuner window to close as long as I have mozaic connected to the "MIDI control Built-in". Even though it opens, it doesn't close...even if I have nothing else connected to it.

    Which Mozaic script is the one we're talking about here?

    I suggest you start a new AUM Session with only this mozaic script and NA tuner. Route the script to MIDI Control and see if it works as expected. Then we can take it from there.

  • Sorry, it looks like I updated my comment after yours...its in there. Its mozaic(4:2)

  • edited November 2024

    I'm not sure what's going on but now its working. I did reboot about 10 mins ago for a different reason, wondering if that had something to do with it? This very same configuration was'nt working originally. Now it is. Please dont waste more of your time for now, thank you for trying, but lets see if this sticks before investing more of our time into it. Thanks guys!

  • @ztones said:
    Sorry, it looks like I updated my comment after yours...its in there. Its mozaic(4:2)

    You also need to show us the actual midi control settings panel where you set up to the cc handling.

  • Sure, here it is, but you may not have seen my last comment that it is working right now….

  • Here's my request (on behalf of hardware users everywhere especially Elektron users)

    A 4 x 4 grid of input or two horizontal lines
    One for PC messages to CC messages
    and another for the reverse which would be
    CC messages to PC messages.

    @espiegel123 has made a start with this

    @OnMidiCC

    If midibyte2 = ccNumberICareAbout
    SendMIDIProgramChange midichannel, midiByte3
    Endif

    @End

    Thank you very much in advance for whomever completes this.

  • @Gavinski - that request is going to need some fleshing out. It’s too general to do anything with.

    For instance, is there a general rule that can be applied to the conversions? For example PC 0 always converts to CC0 value 127? Is this a fixed set of PC numbers such as 1 through 16? Or does it need to be configurable? Does it need to be configurable for channel number as well?

    Those are just a few of many questions that would need to be answered. To save time trying to guess what questions to ask, can you spell out in as much detail as possible exactly what needs to be converted and how the user would need to interact with the program to set up the needed conversions.

  • edited November 2024

    Hello all (although, let's admit it, @wim is the one that's gonna answer :) )

    I dug through patchstorage, etc. but haven't found this...

    Any chance there's something out there that will delay note-off, i.e. control gate length?

    I have drum pads that have a set time between note on and note off

    I'd like to be able to extend that.

    So a tool that could have a knob that just sets gate length in BPM related intervals would be killer.

    So you'd have like 1/64, 1/32, 1/4, 1/1, 2/1, etc. possible on a knob.

    Keeps track of note in's so you don't mess with polyphony (ie if I play a chord and all the notes hit at same time, they all get treated with the same note off delay).

    A repeat trigger on the same note just re-sets the clock.

    So if note length/gate is 1/4 and a new note comes in before the note off time, it just resets.

    Pretty common thing, and I have a few solutions in Reaper, so I'm thinking it's out there and I'm just using the incorrect search terms.

  • @MonkeyDrummer said:
    Hello all (although, let's admit it, @wim is the one that's gonna answer :) )

    I dug through patchstorage, etc. but haven't found this...

    Any chance there's something out there that will delay note-off, i.e. control gate length?

    I have drum pads that have a set time between note on and note off

    I'd like to be able to extend that.

    So a tool that could have a knob that just sets gate length in BPM related intervals would be killer.

    So you'd have like 1/64, 1/32, 1/4, 1/1, 2/1, etc. possible on a knob.

    Keeps track of note in's so you don't mess with polyphony (ie if I play a chord and all the notes hit at same time, they all get treated with the same note off delay).

    A repeat trigger on the same note just re-sets the clock.

    So if note length/gate is 1/4 and a new note comes in before the note off time, it just resets.

    Pretty common thing, and I have a few solutions in Reaper, so I'm thinking it's out there and I'm just using the incorrect search terms.

    Nothing?

  • @MonkeyDrummer said:

    @MonkeyDrummer said:
    Hello all (although, let's admit it, @wim is the one that's gonna answer :) )

    I dug through patchstorage, etc. but haven't found this...

    Any chance there's something out there that will delay note-off, i.e. control gate length?

    I have drum pads that have a set time between note on and note off

    I'd like to be able to extend that.

    So a tool that could have a knob that just sets gate length in BPM related intervals would be killer.

    So you'd have like 1/64, 1/32, 1/4, 1/1, 2/1, etc. possible on a knob.

    Keeps track of note in's so you don't mess with polyphony (ie if I play a chord and all the notes hit at same time, they all get treated with the same note off delay).

    A repeat trigger on the same note just re-sets the clock.

    So if note length/gate is 1/4 and a new note comes in before the note off time, it just resets.

    Pretty common thing, and I have a few solutions in Reaper, so I'm thinking it's out there and I'm just using the incorrect search terms.

    Nothing?

    Been away a few days ...

    https://patchstorage.com/note-length-mugger/

  • @wim said:

    @MonkeyDrummer said:

    @MonkeyDrummer said:
    Hello all (although, let's admit it, @wim is the one that's gonna answer :) )

    I dug through patchstorage, etc. but haven't found this...

    Any chance there's something out there that will delay note-off, i.e. control gate length?

    I have drum pads that have a set time between note on and note off

    I'd like to be able to extend that.

    So a tool that could have a knob that just sets gate length in BPM related intervals would be killer.

    So you'd have like 1/64, 1/32, 1/4, 1/1, 2/1, etc. possible on a knob.

    Keeps track of note in's so you don't mess with polyphony (ie if I play a chord and all the notes hit at same time, they all get treated with the same note off delay).

    A repeat trigger on the same note just re-sets the clock.

    So if note length/gate is 1/4 and a new note comes in before the note off time, it just resets.

    Pretty common thing, and I have a few solutions in Reaper, so I'm thinking it's out there and I'm just using the incorrect search terms.

    Nothing?

    Been away a few days ...

    https://patchstorage.com/note-length-mugger/

    Damn it! There was something from you hiding out there!!! And I did look! I was of course searching for things like "gate length" instead of "normal person" terms like note length! :)

    I'll give this a try tonight! Thanks man!

  • @MonkeyDrummer said:

    @wim said:

    @MonkeyDrummer said:

    @MonkeyDrummer said:
    Hello all (although, let's admit it, @wim is the one that's gonna answer :) )

    I dug through patchstorage, etc. but haven't found this...

    Any chance there's something out there that will delay note-off, i.e. control gate length?

    I have drum pads that have a set time between note on and note off

    I'd like to be able to extend that.

    So a tool that could have a knob that just sets gate length in BPM related intervals would be killer.

    So you'd have like 1/64, 1/32, 1/4, 1/1, 2/1, etc. possible on a knob.

    Keeps track of note in's so you don't mess with polyphony (ie if I play a chord and all the notes hit at same time, they all get treated with the same note off delay).

    A repeat trigger on the same note just re-sets the clock.

    So if note length/gate is 1/4 and a new note comes in before the note off time, it just resets.

    Pretty common thing, and I have a few solutions in Reaper, so I'm thinking it's out there and I'm just using the incorrect search terms.

    Nothing?

    Been away a few days ...

    https://patchstorage.com/note-length-mugger/

    Damn it! There was something from you hiding out there!!! And I did look! I was of course searching for things like "gate length" instead of "normal person" terms like note length! :)

    I'll give this a try tonight! Thanks man!

    This is the most convenient place to search, thanks to @_ki.
    https://abwiki.loopypro.com/doku.php?id=mozaic_scripts_list

Sign In or Register to comment.