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*

16365676869

Comments

  • @wim said:
    @ztones - a bit of clarification please ...
    Will any of the output from the foot switches go to ToneStack?

    If so, I need to do some checking to see if ToneStack can even receive from a Mozaic script. So far it's looking like maybe it's listening directly to the hardware pedal. If that's true then no script is going to help because it won't be able to intercept the midi between the pedal and ToneStack.

    Try sending from mozaic to aum out. Sending to Loopy’s virtual out is how you get midi from loopy to the ToneStack AU.

  • wimwim
    edited October 2024

    @espiegel123 said:

    @wim said:
    @ztones - a bit of clarification please ...
    Will any of the output from the foot switches go to ToneStack?

    If so, I need to do some checking to see if ToneStack can even receive from a Mozaic script. So far it's looking like maybe it's listening directly to the hardware pedal. If that's true then no script is going to help because it won't be able to intercept the midi between the pedal and ToneStack.

    Try sending from mozaic to aum out. Sending to Loopy’s virtual out is how you get midi from loopy to the ToneStack AU.

    Thanks. Yeh, I need to get to the bottom of the ToneStack mystery before taking time scripting something that may not work. I need to clear a path to the drawer that my foot switch and expression pedal is stuffed into first. 😂

  • Just realize that in Mozaic scripts, code to work with buttons labels, etc is often more complex than just dealing with midi messages. It's pretty simple to just detect a particular midi message and convert it to another message. Updating a pad's label and color takes more code than simply doing that.

    >

    I did not realize that! Yes, it was purely for visual purposes and possibly at times to have the option to tap the iPad screen instead of pressing the floor buttons, but if its easier to code for incoming CC's instead of Mosaic pads, then by all means lets do that! Thanks and looking forward to the new script!

    When you get a chance, I'd be curious to know if my work around for TS midi (few posts back) works for you?

  • @ztones said:

    Just realize that in Mozaic scripts, code to work with buttons labels, etc is often more complex than just dealing with midi messages. It's pretty simple to just detect a particular midi message and convert it to another message. Updating a pad's label and color takes more code than simply doing that.

    >

    I did not realize that! Yes, it was purely for visual purposes and possibly at times to have the option to tap the iPad screen instead of pressing the floor buttons, but if its easier to code for incoming CC's instead of Mosaic pads, then by all means lets do that! Thanks and looking forward to the new script!

    I need to clarify. What I'll be doing is modifying the script that does tap detection only. It'll send the CC's that your pedal sends, but the midi channel will be altered based on the type of tap.

    It'll be up to you to figure out how to use those CC messages for your purposes.

    When you get a chance, I'd be curious to know if my work around for TS midi (few posts back) works for you?

    Yeh, working on that now. If ToneStack isn't going to listen to Mozaic then there's not much point in going further.

  • @wim said:
    @ztones - a bit of clarification please ...
    Will any of the output from the foot switches go to ToneStack?

    If so, I need to do some checking to see if ToneStack can even receive from a Mozaic script. So far it's looking like maybe it's listening directly to the hardware pedal. If that's true then no script is going to help because it won't be able to intercept the midi between the pedal and ToneStack.

    Right now TS is only getting midi from Mosaic and it is working. At least from all places where I can check and see and make edits, its only getting midi from Mosaic.

    Just so you don't have to go hunting for that post, here is what I did to get it working:

    So I think I finally figured out how to get midi into Tonestack and how to make it stick! I did have to fire up the standalone version to make the midi port to show up in AUM midi routing. Then in my preset (inside TS) I setup the midi CC's and saved it as the default midi mapping for the unit. I also had to turn on the "Load CC Map from Patch" and the "Load Unit Default Map on Add". (not sure if the later was necessary, but I did and it works.) Same thing inside the plugin settings. After that I was able to reboot my laptop, NOT start TS standalone. Midi connection in AUM shows a broken icon for TS, BUT (!!!!) it still works! CC's are getting inside TS and wah pedal (in my case) and moving!

  • edited October 2024

    @wim said:
    I need to clarify. What I'll be doing is modifying the script that does tap detection only. It'll send the CC's that your pedal sends, but the midi channel will be altered based on the type of tap.

    It'll be up to you to figure out how to use those CC messages for your purposes.

    As long as those "taps" are the button presses on my pedal, that's fine. I probably can't tap with my foot as fast as finger, but I'm guess that'll adjustable? So what we're talking about is if my pedal button sends out CC11, it'll send out CC11 but on different channels, depending on the number of or "kind of" (hold etc) tap right?

    Yes.

    FYI, my pedal only send out a single value of #64. Whether I hold it or not, its just a single message of 64 value. Does that matter?

    There are two things here:

    • The output from the script of the CC 64 on/off message. That's fine if you want to use it for something other than the wah pedal.
    • The expression pedal variable output (CC 24). So far it looks like Tonestack may be getting that from the hardware itself, not from Mozaic.

    When you get a chance, I'd be curious to know if my work around for TS midi (few posts back) works for you?

    Yeh, working on that now. If ToneStack isn't going to listen to Mozaic then there's not much point in going further.

  • @ztones said:

    @wim said:
    @ztones - a bit of clarification please ...
    Will any of the output from the foot switches go to ToneStack?

    If so, I need to do some checking to see if ToneStack can even receive from a Mozaic script. So far it's looking like maybe it's listening directly to the hardware pedal. If that's true then no script is going to help because it won't be able to intercept the midi between the pedal and ToneStack.

    Right now TS is only getting midi from Mosaic and it is working. At least from all places where I can check and see and make edits, its only getting midi from Mosaic.

    Just so you don't have to go hunting for that post, here is what I did to get it working:

    So I think I finally figured out how to get midi into Tonestack and how to make it stick! I did have to fire up the standalone version to make the midi port to show up in AUM midi routing. Then in my preset (inside TS) I setup the midi CC's and saved it as the default midi mapping for the unit. I also had to turn on the "Load CC Map from Patch" and the "Load Unit Default Map on Add". (not sure if the later was necessary, but I did and it works.) Same thing inside the plugin settings. After that I was able to reboot my laptop, NOT start TS standalone. Midi connection in AUM shows a broken icon for TS, BUT (!!!!) it still works! CC's are getting inside TS and wah pedal (in my case) and moving!

    Please confirm for me:
    Send a midi CC from Mozaic to ToneStack (not from your expression pedal), and tell me if it works.

  • @ztones, after following the steps you described, I've confirmed that ToneStack is listening directly to the hardware, not to Mozaic. So, no amount of Mozaic scripting is going to help in trying to work with ToneStack.

    As far as I can tell, ToneStack doesn't listen to any midi apps, only to hardware. ( @espiegel123 seems to have heard that it can listen to Loopy Pro's virtual midi out, but I can't replicate that).

    So, I don't think there's any way for Mozaic or even Streambyter to help here.

    I'm still going to enhance the tap detection script and publish it on patchstorage because I think it'll be useful for other purposes. But I don't think it's going to help with ToneStack.

  • @wim said:
    Please confirm for me:
    Send a midi CC from Mozaic to ToneStack (not from your expression pedal), and tell me if it works.

    Hm...doesn't look like it is. Even though the ONLY connection is Mosaic, it is somehow still getting the physical connection. That's OK! Don't worry about TS for the script purposes! TS is what it is. Literally the only "live" midi I need in TS is the wah pedal, every other control will be via AUM preset recalls, which will be stored in AUM not TS.

  • edited October 2024

    @wim said:
    I'm still going to enhance the tap detection script and publish it on patchstorage because I think it'll be useful for other purposes. But I don't think it's going to help with ToneStack.

    Exactly! I do think the tap detection will be super helpful generally speaking and even specifically for me, I do not need it for ToneStack.

    The only thing I mentioned is my floor controller buttons only sends out a single value of 64 for each CC# whether short of long pressed. Is that an issue?

  • @ztones said:

    @wim said:
    I'm still going to enhance the tap detection script and publish it on patchstorage because I think it'll be useful for other purposes. But I don't think it's going to help with ToneStack.

    Exactly! I do think the tap detection will be super helpful generally speaking and even specifically for me, I do not need it for ToneStack.

    The only thing I mentioned is my pedal only sends out a single value of 64 for each CC# whether short of long pressed. Is that an issue?

    Oh, I see. No, I don't think it'll be an issue. There's a variable in the script to set the value at which to trigger.

    It might take me some time working on the script as I may want to make it flexible to adapt to pedals that send other messages such as notes and program change, and maybe to provide some visible feedback.

  • ToneStack midi implementation is wonky as heck. 🤷🏼‍♂️

    Even listening to the hardware, it works weird. I mapped a button to the on/off switch on an amp. It would only turn the button off, not back on. Oh well.

  • @wim said:
    ToneStack midi implementation is wonky as heck. 🤷🏼‍♂️

    Even listening to the hardware, it works weird. I mapped a button to the on/off switch on an amp. It would only turn the button off, not back on. Oh well.

    It sure is! It is the worst the midi implementation I have ever seen! But the effects do sound pretty good!

  • @ztones - does your foot switch send value 0 when the switch is released?

  • @wim said:
    @ztones, after following the steps you described, I've confirmed that ToneStack is listening directly to the hardware, not to Mozaic. So, no amount of Mozaic scripting is going to help in trying to work with ToneStack.

    As far as I can tell, ToneStack doesn't listen to any midi apps, only to hardware. ( @espiegel123 seems to have heard that it can listen to Loopy Pro's virtual midi out, but I can't replicate that).

    So, I don't think there's any way for Mozaic or even Streambyter to help here.

    I'm still going to enhance the tap detection script and publish it on patchstorage because I think it'll be useful for other purposes. But I don't think it's going to help with ToneStack.

    It isn't that I have heard that it works, it does work.I will post a video. Despite Tonestack getting the midi from the virtual port, you have to turn on the setting to listen to hardware and network ports. Video shortly.

  • @wim said:
    @ztones - does your foot switch send value 0 when the switch is released?

    2 settings are possible for me: Press down sends 64 and release does nothing. OR first press 64, second press 0. Boy I can see how that complicates things!!!

  • Confirmed that it works the same way in AUM

  • The fader in loopy is sending CC5 which is mapped to depth


    The routing

  • @ztones said:

    @wim said:
    @ztones - does your foot switch send value 0 when the switch is released?

    2 settings are possible for me: Press down sends 64 and release does nothing. OR first press 64, second press 0. Boy I can see how that complicates things!!!

    oh. That's going to mean more rework than I originally thought. I think I'm still up for it though.

  • I can confirm! When I route Mosaic to AUM source (virtual) and then in TS check off AUM destination, I can control TS parameters directly from Mosaic buttons/pads (no hardware). Pretty cool! Thank you @espiegel123

  • wimwim
    edited October 2024

    Thanks @espiegel123.
    I've lost my appetite for working with ToneStack midi mapping. It's pretty much garbage from what I can see.
    But it's very useful info that should be helpful for others later.

    The script I'll be working on won't care what it's sending to. So whatever works, works. 😎

  • @wim said:
    oh. That's going to mean more rework than I originally thought. I think I'm still up for it though.

    Bless you! LOL I knew, I had a feeling when I saw that the release doesn't send anything that is likely going to complicate things!
    Sorry...thank you!

  • @ztones said:

    @wim said:
    oh. That's going to mean more rework than I originally thought. I think I'm still up for it though.

    Bless you! LOL I knew, I had a feeling when I saw that the release doesn't send anything that is likely going to complicate things!
    Sorry...thank you!

    I'll probably do two versions. One specifically for your pedal, which will be simpler, and a more generic one to publish on patch storage. That won't be wasted time and may shorten the time before I can give you something to work with.

  • I'll probably do two versions. One specifically for your pedal, which will be simpler, and a more generic one to publish on patch storage. That won't be wasted time and may shorten the time before I can give you something to work with.

    Awesome! Take your time, no pressure! I don't mind waiting! I just appreciate your help, truly!

  • wimwim
    edited October 2024

    OK @ztones, here's something I think should work. At least it tests alright with my four button foot switch set to the same CC's and value as the first four switches of yours.

    Because your switch doesn't send anything on switch release, long-presses can't be detected. Also, a timer is required in order to count the number of taps while avoiding having to make an extra tap to send out the message. If you tap in under the timeout then the number of taps is increased. If you don't then the message is sent out when the timer expires. So, there will always be a bit of delay. That's unavoidable with this kind of switching.

    Let me know if you run into any issues. Hopefully it's not buggy. I had a number of distractions while working on it.

    @Description
    @ztones Foot Switch Extender v0.1
    Detect multiple tap sequences (Single, Double, Triple) and send the message coming from the pedal on a different midi channel depending on the number of taps. 
    • Because this footswitch doesn't send "off" messages on release, it isn't possible to detect long presses.
    • If the switch is tapped sooner than the configurable timeout (see @Settings) then the number of taps is increased. Otherwise, the message will be released after the timeout.
    • The timer for tap detection can be adjusted in the timeout[] variable in @Settings. There are separate timers for the first tap and for subsequent taps. Adjust to taste. They can both be the same number if you like.
    • By default messages are logged in Mozaic's log. Change to logging = NO in @Settings if you prefer it off.
    • The default is to send midi other than the switch messages through unchanged. Change midiThru = NO in @Settings to block other midi.
    • NOTE: Taps on more than one switch at a time aren't supported. Which message, if any, will be sent is indeterminate.
    @End
    
    @Settings
      // There are two timeout settings. The first is for the first tap, and the second is
      // for subsequent taps. Adjust to taste.
      timeout = [300, 400]
      
      // Channel to listen on for midi from the foot switch
      fsChannel = 0
    
      // The midi channel for the output each type of tap
      single = 0
      double = 1
      triple = 2
      
      // Channel the footswitch sends on per switch
      fsChannel = [0,0,0,0,0,0,0,0]
      
      // The type of midi message each switch sends
      // _CC for CC, _NOTE for notes. Program Change is not supported at this time.
      fsCommand = [_CC,_CC,_CC,_CC,_CC,_CC,_CC,_CC]
      
      // The CC or Note number each switch sends
      fsByte2 = [4,5,6,7,8,9,10,11]
      // The value each sitches sends when pressed
      fsByte3 = [64,64,64,64,64,64,64,64]
    
      // timer interval in ms - lower values increase accuracy but too low might lead to 
      // missed detections due to race conditions.
      interval = 10
      
      midiThru = YES
    
      // change this to YES for debug logging in Mozaic
      logging = YES
    @End
    
    @OnLoad
      Call @Constants
      Call @Settings
    
      timer = 0
        
      // tracking variables
      taps = 0
      longPress = NO
      tapTime = 0
      running = NO
      lastTapTime = 0
      
      SetTimerInterval interval
      
      LabelKnobs {ztones Foot Switch Extender v0.1}
    @End
    
    @OnMidiInput
    
      Call @CheckMessage
      if isFSMessage  
        // first tap can have a different timeout than subsequent taps
        // configure these in timer[ ] array in @Settings
        if taps = 0
          timer = 0
        else
          timer = 1
        endif
        
        tapTime = SystemTime
        if lastTapTime = 0
          lastTapTime = tapTime
        endif
    
        // Increment the taps but reset to zero if more than three
        if taps = 3
          taps = 1
        else
          Inc taps
        endif
        
        // If the time since the last tap is less than the timeout
        // Start the timer so that if no more taps come in under the timeout
        // the message gets sent.
        if tapTime - lastTapTime < timeout[timer]
          StartTimer
        endif
    
      else
        if midiThru = YES
          SendMIDIThru
        endif    
      endif  
    @End
    
    @OnTimer
    
      time = SystemTime - tapTime
      
      // take immediate action on timeout to avoid having
      // to wait for an extra tap
      if time >= timeout[timer]
        StopTimer
        Call @SendMessage
      endif
      
    @End
    
    @SendMessage
      channel = -1
      
      if taps = 1
        channel = single
      elseif taps = 2
        channel = double
      elseif taps = 3
        channel = triple
      endif
        
      if channel <> -1
        SendMIDIOut MIDICommand+channel,MIDIByte2,MIDIByte3
        Call @Logger
        
        // Do cleanup for the next detection
        tapTime = 0
        lastTaptime = 0
        longPress = NO
        taps = 0
      endif
    @End
    
    @Logger
      if logging = YES
        Log {Switch }, (switch+1), { | Taps: }, taps, {, Channel: }, (channel+1), {, Byte 2: }, MIDIByte2, {, Value: }, MIDIByte3, {, Timeout: }, time, {ms}
      endif  
    @End
    
    @CheckMessage
      isFSMessage = NO
      switch = 0
      while (isFSMessage = NO) and switch < 8
        if (MIDIChannel = fsChannel[switch]) and (MIDICommand = fsCommand[switch]) and (MIDIByte2 = fsByte2[switch])
          isFSMessage = YES
        else
          Inc switch
        endif
      endwhile
    @End
    
    @Constants
      _CC = 0xB0
      _NOTE = 0x90
    @End
    
  • edited October 2024

    U DA MAN! This is great! Thank you so much!!!! It is registering my taps perfectly! Questions:
    1: If I need to convert one of the taps to PC, do I do that somewhere in the code, or do I recall you saying easier to use an app? (I have MidiMessenger which is catching and converting nicely for now)
    2: Should I put this code into another instance of Mosaic or should I merge with other code, keep separate or doesn't really matter?

  • wimwim
    edited October 2024

    @ztones said:
    U DA MAN! This is great! Thank you so much!!!! It is registering my taps perfectly! Questions:
    1: If I need to convert one of the taps to PC, do I do that somewhere in the code, or do I recall you saying easier to use an app? (I have MidiMessenger which is catching and converting nicely for now)
    2: Should I put this code into another instance of Mosaic or should I merge with other code, keep separate or doesn't really matter?

    How best to handle conversions depends on your own preferences. If you feel like you understand the script well enough to add some code into it to modify the outgoing message, then the place to do that would be to add that into the @SendMessage event.

    I'd personally use a separate script or program to handle the conversions. For one thing, I wouldn't want to have to sift through the code every time I wanted a new conversion, and then hope I didn't break anything. I normally use mfxConvert for that kind of thing, but in some cases that isn't flexible enough. If MidiMessanger is doing the job, I'd stick with that.

    Or if you want to go all-in with learning Mozaic, you might try building in something flexible where you can alter the outbound mappings by turning knobs 'n such. 😉

  • @wim said:
    I'd personally use a separate script or program to handle the conversions. For one thing, I wouldn't want to have to sift through the code every time I wanted a new conversion, and then hope I didn't break anything. I normally use mfxConvert for that kind of thing, but in some cases that isn't flexible enough. If MidiMessanger is doing the job, I'd stick with that.

    Agreed!

    Or if you want to go all-in with learning Mozaic, you might try building in something flexible where you can alter the outbound mappings by turning knobs 'n such. 😉

    I would LOVE to learn it beyond basic editing existing script! :)

  • @ztones said:
    I would LOVE to learn it beyond basic editing existing script! :)

    You'll get there. 👍🏼

Sign In or Register to comment.