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.

Mozaic Footswitch Plus Keyboard Note to send PC and Session load in AUM.

2

Comments

  • You can add a one of these inside the @OnMIDICC block:

    SendMIDICC Channel, CC, Value
    or
    SendMIDIThru

    and the detected CC will show up in the output.

  • Thank you. I have been trying to do so. I thought I needed an “if” or “else” involved. I will try just adding “sendMIDIThru”

  • I got the sendMIDIThru inserted and working. Thank you so much.

    I had to simplify my routing as it was too confusing with so much going on.
    The sustain does work on channel one and the session/preset switching is working properly.
    Perhaps the octave switching could be handled within Mozaic also. It would only be used on midi channel one controlled by footswitch using CC#65.


    I just realized this is a different session than shown before. In this case all three channels go to LayR which is multitimbral. There are three synths programmed in it.

  • So happy to have the sustain as well as the other functions working.
    The only thing left to do in my case is enable transpose one octave up ONLY on midi channel one.
    I was using a footswitch CC#65 to enable one of two midi slots in AUM. One of the two was transposed up 1 octave.
    Now that everything goes to Mozaic first I need a different approach.
    I am open to ideas. I haven’t quite figured it out yet.🤔

  • Well , I got the octave switch working using my older method of sending midi channel one down two midi busses, one of them being transposed up an octave. The other two Chanel’s go down another buss. They all then go to Mozaic. It looks convoluted because it really is but everything works for the time being. Trying it out at a Brewery gig tomorrow and at a Blues festival Saturday if all goes well.
    If it doesn’t work or is unstable I’ll be looking for a Mozaic script to do the same within the script I am using.
    Thanks for your help everyone.
    Bruce

  • Hi Friends,
    My octave switching pictured above works but somehow makes my setup unstable intermittently. I think Wim was correct it may cause parallel paths some where.
    I would like to write a little code inside the script (shown a few messages back) to raise midi channel 1 one octave when the footswitch CC#65 is pressed. The octave transposition should drop back to normal pitch when the momentary switch is pressed a second time.
    This action should not change the physical on the keyboard used for session/preset selection.
    (Which turned out to be a problem with my midi routing semi solution above).

  • How about using pitchbend to accomplish this. Set the pitchbend range on the synth to 1 octave. You will need to keep the pedal depressed though to keep the coding simple.

  • @Alfred said:
    How about using pitchbend to accomplish this. Set the pitchbend range on the synth to 1 octave. You will need to keep the pedal depressed though to keep the coding simple.

    It is a good idea but does not fit in with my setup. I use pitch bend extensively on midi channel one from a couple of different sources and am afraid of going into that territory.😵‍💫
    Seems like to me code is the best way probably because I haven’t tried it yet.😊
    Thanks for your input.n

  • Maybe on another midi channel then?
    It gives a way to change octave without having to retrigger notes and tracking wich notes have been sent.

  • @Alfred said:
    Maybe on another midi channel then?
    It gives a way to change octave without having to retrigger notes and tracking wich notes have been sent.

    That may be a good idea. I will look into that. I am not sure if my Airturn footswitches send on different channels individually.
    Or perhaps notes could be on one channel and controls on another. I will look into it.
    I guess this is part of the trade off of using notes to trigger session/preset changes.
    I have gigs today and tomorrow but I will be back here soon.
    Thanks for your ideas.
    Bruce

  • @Bellows said:
    Hi Friends,
    My octave switching pictured above works but somehow makes my setup unstable intermittently. I think Wim was correct it may cause parallel paths some where.
    I would like to write a little code inside the script (shown a few messages back) to raise midi channel 1 one octave when the footswitch CC#65 is pressed. The octave transposition should drop back to normal pitch when the momentary switch is pressed a second time.
    This action should not change the physical on the keyboard used for session/preset selection.
    (Which turned out to be a problem with my midi routing semi solution above).

    That's an easy code change. Is the code you posted above the current version you're working with? I was under the impression you had been making some tweaks.

  • Thanks for your help win.
    Here is the current code.

    ``

    @ Description
    When foot switch is pressed, convert note On messages to Program Change. Otherwise, pass all midi through.
    Configure the foot switch message in @OnLoad
    Release the PC note before the foot switch to avoid extra Note-Off messages.
    @End

    @OnLoad
    // set the incoming cc, channel, and velocity from the footswitch
    cc = 20
    chan = 0
    velocity = 127
    passThru = YES
    @End

    @OnMidiCC
    if (MIDIChannel = chan) and (MIDIByte2 = cc)
    if MIDIByte3 = velocity
    passThru = NO
    else
    passThru = YES
    endif
    endif
    SendMIDIThru
    @End

    @OnMidiNote
    if not passThru
    if MIDICommand = 0x90 //Note ON only
    SendMIDIProgramChange chan,MIDINote
    endif
    else
    SendMIDIThru
    endif
    @End

    @OnMidiInput
    // pass through midi messages not handled above
    // 0x90 = Note ON, 0x80 = Note OFF, 0xB0 = CC
    if MIDICommand <> 0x90 and MIDICommand <> 0x80 and MIDICommand <> 0xB0
    SendMIDIThru
    endif
    @End

    @OnSysex
    SendSysexThru
    @End

    ``
    Not sure if I used the backwards “P” correctly but I am trying.
    Bruce

  • @Bellows said:
    Not sure if I used the backwards “P” correctly but I am trying.
    Bruce

    Close, but you only used two of them. Try three and the formatting should work. ✌🏼

  • wimwim
    edited March 23

    Just checking. When do you want to transpose midi channel 1 notes? Only when pass through is active?
    Also, I notice that you're passing through the cc used to set pass through on and off. Is that intended?

  • Another try at sending code.

    When foot switch is pressed, convert note On messages to Program Change. Otherwise, pass all midi through.
    Configure the foot switch message in @OnLoad
    Release the PC note before the foot switch to avoid extra Note-Off messages.
    @End
    
    @OnLoad
      // set the incoming cc, channel, and velocity from the footswitch
      cc = 20
      chan = 0
      velocity = 127
      passThru = YES
    @End
    
    @OnMidiCC
      if (MIDIChannel = chan) and (MIDIByte2 = cc)
        if MIDIByte3 = velocity
          passThru = NO
        else
          passThru = YES
        endif
      endif
      SendMIDIThru 
    @End
    
    @OnMidiNote
      if not passThru
        if MIDICommand = 0x90   //Note ON only
          SendMIDIProgramChange chan,MIDINote
        endif
      else
        SendMIDIThru
      endif
    @End
    
    @OnMidiInput
    // pass through midi messages not handled above
    // 0x90 = Note ON, 0x80 = Note OFF, 0xB0 = CC
      if MIDICommand <> 0x90 and MIDICommand <> 0x80 and MIDICommand <> 0xB0
        SendMIDIThru
      endif
    @End
    
    @OnSysex
      SendSysexThru
    @End
    
    

    @wim said:
    Just checking. When do you want to transpose midi channel 1 notes? Only when pass through is active?
    Also, I notice that you're passing through the cc used to set pass through on and off. Is that intended?

    If I understand your questions properly, the CC used to set pass thru is not needed anywhere else in my midi setup.

    When to pass thru the transposed notes is a little stickier. I would like the non transposed note from my keyboard to be used for the PC selection wether or not the octave footswitch CC has been activated. This means the physical keyboard notes will always switch to the intended PC and not to one an octave above.

    Thank you so much for your help.
    Bruce

  • @Bellows said:

    Also, I notice that you're passing through the cc used to set pass through on and off. Is that intended?

    If I understand your questions properly, the CC used to set pass thru is not needed anywhere else in my midi setup.

    I thought so. Right now it's passed through, but that's an easy fix.

    When to pass thru the transposed notes is a little stickier. I would like the non transposed note from my keyboard to be used for the PC selection wether or not the octave footswitch CC has been activated. This means the physical keyboard notes will always switch to the intended PC and not to one an octave above.

    I see. When pass-through is OFF, notes on any channel are used to trigger program changes and are not passed through. When pass-through is ON, notes on channel 1 are transposed up an octave, and notes on other channels are passed straight through.

    Correct?

  • wimwim
    edited March 23

    I think this should do you want based on my understanding so far. Route all midi though the script. Route the script to both the synths and AUM midi control.

    @Description
    When foot switch (cc 20) is pressed, convert note On messages to Program Change and do not pass them through.
    
    When foot switch (cc 65) is pressed, toggle transpose up by an octave on midi channel 1 when notes are not being used for program change.
    @End
    
    @OnLoad
    
    // cc number and channel from the foot switch to change to
    // triggering program changes from notes
    cc = 20
    chan = 0
    
    // cc number to turn transpose on and off
    transposeCC = 65
    
    // the channel to transpose up an octave when transpose is active
    transposeChannel = 0
    transpose = NO
    
    velocity = 127
    passThru = YES
    // display the info screen since we're not using the UI anyway.
    ShowLayout 4
    @End
    
    @OnMidiCC
    
    if (MIDIChannel = chan) and (MIDIByte2 = cc)
    // when passThru is NO, notes trigger program changes and are not passed through
      if MIDIByte3 = velocity
        passThru = NO
      else
        passThru = YES
      endif
      
    elseif (MIDIChannel = chan) and (MIDIByte2 = transposeCC)
    // toggle transpose on or off with each transposeCC message from the foot switch
      if MIDIByte3 = velocity
        transpose = NOT transpose
      endif
    
    else
    // send all other CCs through
      SendMIDIThru
    endif
    
    @End
    
    @OnMidiNote
    if (not passThru) and (MIDIChannel = chan)
    // use notes to trigger program change
      if MIDICommand = 0x90 //Note ON only
        SendMIDIProgramChange chan,MIDINote
      endif
      
    else
    // transpose notes up an octave on transposeChannel
      if (transpose = YES) and (MIDIChannel = transposeChannel)
        note = MIDINote + 12
      else
        note = MIDINote
      endif
      // check that the note is still in range
      // before sending it
      if note <= 127
        SendMIDIOut MIDIByte1,note,MIDIByte3
      endif
    endif
    @End
    
    @OnMidiInput
    // pass through midi messages not handled above
    // 0x90 = Note ON, 0x80 = Note OFF, 0xB0 = CC
    if MIDICommand <> 0x90 and MIDICommand <> 0x80 and MIDICommand <> 0xB0
      SendMIDIThru
    endif
    @End
    
    @OnSysex
    SendSysexThru
    @End
    
  • @wim said:

    @Bellows said:

    Also, I notice that you're passing through the cc used to set pass through on and off. Is that intended?

    If I understand your questions properly, the CC used to set pass thru is not needed anywhere else in my midi setup.

    I thought so. Right now it's passed through, but that's an easy fix.

    When to pass thru the transposed notes is a little stickier. I would like the non transposed note from my keyboard to be used for the PC selection wether or not the octave footswitch CC has been activated. This means the physical keyboard notes will always switch to the intended PC and not to one an octave above.

    I see. When pass-through is OFF, notes on any channel are used to trigger program changes and are not passed through. When pass-through is ON, notes on channel 1 are transposed up an octave, and notes on other channels are passed straight through.

    Correct?

    So far I have only sent PC messages on midi channel one. Although it is intriguing to send them on all channels I think it is an unnecessary complication. I can use the PC message to cause a session change in AUM which changes all apps, routings and presets on all channels.

    Also midi channel one is mostly used as a melody channel for my piano style short keyboard.
    That is where I really need the octave switching for performance. Midi channels 2 and 3 are usually for accompianment. One channel for bass and one for chords. This is typical of how an accordion is played.

    Again octave switching on midi channels 2and 3 could be useful but is beyond the scope of what I am trying to accomplish here.

    Does this answer your questions?
    Thank you,
    Bruce

  • @Bellows said:

    So far I have only sent PC messages on midi channel one. Although it is intriguing to send them on all channels I think it is an unnecessary complication. I can use the PC message to cause a session change in AUM which changes all apps, routings and presets on all channels.

    What I was getting at, is would you ever send notes to trigger program changes from a controller sending on another channel?

    I altered the script so that only notes coming in on channel 1 trigger program changes when passThru is OFF. This means that notes on other channels will always be passed through regardless of the mode. That can easily be changed.

    Also midi channel one is mostly used as a melody channel for my piano style short keyboard.
    That is where I really need the octave switching for performance. Midi channels 2 and 3 are usually for accompianment. One channel for bass and one for chords. This is typical of how an accordion is played.

    Again octave switching on midi channels 2and 3 could be useful but is beyond the scope of what I am trying to accomplish here.

    Does this answer your questions?

    Yup. All answered provided the changed script I posted does what you want it to.

  • Thank you very much Wim.
    I will try it out as soon as possible.👍

  • Hi Wim,
    I tried out the new script and it functions as we discussed.
    The octave switch works for midi channel one.
    The sustain switch also works for midi channel one.
    The session/preset switch also works perfectly.
    Very nicely done.👍

    But as usual something was affected. If I am holding a note and the octave footswitch is depressed the note becomes stuck on. I would think that was caused by a lack of the original note off.

    I don’t know why this was not happening with my original method of having two midi busses and enabling one or the other.

    I believe a solution that sends note offs for any notes held when the footswitch is pressed would be an acceptable as a solution. What do you think?

  • wimwim
    edited March 24

    @Bellows said:
    But as usual something was affected. If I am holding a note and the octave footswitch is depressed the note becomes stuck on. I would think that was caused by a lack of the original note off.

    Yes, I forgot to mention that would happen. I only made the minimum changes needed do your original script. No problem, that's not hard to deal with.

    I believe a solution that sends note offs for any notes held when the footswitch is pressed would be an acceptable as a solution. What do you think?

    That's a brute-force way of doing it, but will result in an unwanted cutoff of the original note that you were sustaining because you wanted to. I'll add some note tracking that will make sure the original note off isn't transposed.

    Hold my beer ...

  • This should avoid stuck notes now. I separated the note ON and note OFF processing and put a check in there to only transpose the note off if the note on was transposed.

    Let me know if you run into any problems or need changes.

    @Description
    When foot switch (cc 20) is pressed, convert note On messages to Program Change and do not pass them through.
    
    When foot switch (cc 65) is pressed, toggle transpose up by an octave on midi channel 1 when notes are not being used for program change.
    @End
    
    @OnLoad
    
    // cc number and channel from the foot switch to change to
    // triggering program changes from notes
    cc = 20
    chan = 0
    
    // cc number to turn transpose on and off
    transposeCC = 65
    
    // the channel to transpose up an octave when transpose is active
    transposeChannel = 0
    transpose = NO
    
    velocity = 127
    passThru = YES
    
    // use the NoteState array to track whether notes have been transposed
    // so that notes sustaining when the foot switch is pressed don't get stuck
    // NoteState = YES means the note ON was transposed
    ResetNoteStates NO
    
    // Turn logging on or off
    debug = NO
    call @Logger
    
    // display the info screen since we're not using the UI anyway.
    ShowLayout 4
    @End
    
    @OnMidiCC
    
    if (MIDIChannel = chan) and (MIDIByte2 = cc)
    // when passThru is NO, notes trigger program changes and are not passed through
      if MIDIByte3 = velocity
        passThru = NO
      else
        passThru = YES
      endif
      
    elseif (MIDIChannel = chan) and (MIDIByte2 = transposeCC)
    // toggle transpose on or off with each transposeCC message from the foot switch
      if MIDIByte3 = velocity
        transpose = NOT transpose
      endif
    else
    // send all other CCs through
      SendMIDIThru
    endif
    Call @Logger
    @End
    
    @OnMidiNoteOn
      if (not passThru) and (MIDIChannel = chan)
        SendMIDIProgramChange chan,MIDINote
      else
        if (transpose = YES) and (MIDIChannel = chan)
          note = MIDINote + 12
          SetNoteState MIDIChannel,MIDINote,YES
        else
          note = MIDINote
          SetNoteState MIDIChannel,MIDINote,NO
        endif
        if note <= 127
          SendMIDINoteOn MIDIChannel,note,MIDIVelocity
        endif
      endif
    @End
    
    @OnMidiNoteOff
      if passThru
        // Only transpose note OFF if the note ON was transposed
        if (GetNoteState MIDIChannel,MIDINote) = YES
          note = MIDINote + 12
        else
          note = MIDINote
        endif
        
        if note <= 127
          SendMIDINoteOff MIDIChannel,note,MIDIVelocity
        endif
      endif
    @End
    
    @OnMidiInput
    // pass through midi messages not handled above
    // 0x90 = Note ON, 0x80 = Note OFF, 0xB0 = CC
    if MIDICommand <> 0x90 and MIDICommand <> 0x80 and MIDICommand <> 0xB0
      SendMIDIThru
    endif
    @End
    
    @OnSysex
    SendSysexThru
    @End
    
    @Logger
      if debug
        log {passThru = },passThru,{, transpose = },transpose
      endif
    @End
    
  • @wim said:
    This should avoid stuck notes now. I separated the note ON and note OFF processing and put a check in there to only transpose the note off if the note on was transposed.

    Let me know if you run into any problems or need changes.

    It works great wim. You have done everything that I asked for. I played it quite a bit tonight and the session/preset, octave switching, and sustain all work perfectly.

    The octave switching works so smooth it is easier than moving my hand up an octave when the notes ARE available on my keyboard in some cases.

    This has greatly simplified my routing where I can keep a mental handle on it.
    I confess the code is too complex for me to follow but I will look at it and see what I can learn from it. The comments are appreciated.

    I was trying to solve a stuck note/inadvertand program change obstacle by simplifying the midi routing and there is an improvement here. I don’t believe Mozaic is involved in the problem.

    These anomalies happens much less now I think because the midi routing has been so simplified.
    While I have your attention please tell me your opinion.

    I have three and sometimes six midi channels being sent wirelessly by WIDI JACK directly to AUM from my midi accordion.

    I also have one midi channel one being sent by my Airturn foot switches directly to AUM.

    Do you think it is a problem that both the accordion and the footswitches use midi channel one?
    Thanks for all your help. You have succeeded in every way.
    Bruce

  • @Bellows said:
    It works great wim. You have done everything that I asked for. I played it quite a bit tonight and the session/preset, octave switching, and sustain all work perfectly.

    The octave switching works so smooth it is easier than moving my hand up an octave when the notes ARE available on my keyboard in some cases.

    This has greatly simplified my routing where I can keep a mental handle on it.
    I confess the code is too complex for me to follow but I will look at it and see what I can learn from it. The comments are appreciated.

    If you do want to try to understand it, I suggest looking at @OnMidiCC, @OnMidiNoteOn, and @OnMidiNoteOFF one section at a time.

    • The CC handling is simple. Just turn two variables on and off in response to a CC.
    • Note ON handling only does two things

      • Convert a note to a program change if passThru is NO
      • Transpose channel 1 up 12 semitones if passThru is YES and transpose is YES
      • Put YES or NO into the NoteState array to keep track if the note was transposed or not.
      • Send the transposed or not transposed note ON
    • Note OFF handling is similar, but...

      • It doesn't have to send out program changes
      • It ignores the transpose setting, looking instead to the NoteState array to see if the note ON was transposed or not.

    I was trying to solve a stuck note/inadvertand program change obstacle by simplifying the midi routing and there is an improvement here. I don’t believe Mozaic is involved in the problem.

    I think we probably could have sorted out your routing problems and solve it without modifying the script, but it seemed like that would be harder to work through, and more prone to breakage.

    These anomalies happens much less now I think because the midi routing has been so simplified.
    While I have your attention please tell me your opinion.

    I have three and sometimes six midi channels being sent wirelessly by WIDI JACK directly to AUM from my midi accordion.

    I also have one midi channel one being sent by my Airturn foot switches directly to AUM.

    Do you think it is a problem that both the accordion and the footswitches use midi channel one?

    Do the foot switches ever send notes?

    Thanks for all your help. You have succeeded in every way.
    Bruce

    I'm glad to hear it. It makes me happy to picture a live accordion performance driving apps in AUM. I bet that's a crowd pleaser. 😎

    Mike

  • These anomalies happens much less now I think because the midi routing has been so >simplified.
    While I have your attention please tell me your opinion.

    I have three and sometimes six midi channels being sent wirelessly by WIDI JACK directly to >AUM from my midi accordion.

    I also have one midi channel one being sent by my Airturn foot switches directly to AUM.

    Do you think it is a problem that both the accordion and the footswitches use midi channel >one?

    Do the foot switches ever send notes?

    The footswitches can send notes but are not configured that way now. They only send CC as shown in this pic

    .

    There also two analog expression pedals that send continuous CCs as shown in this pic. When these controllers are outputting values of 0 or 127 they are stable. When at a midpoint they hunt around the value rapidly changing. I have wondered if this action overwhelms AUM somehow.

  • Well, the answer as to whether having them both send on channel 1 depends on the routing and what they're routed to responds to.

    Say they're both routed to a synth and they both send notes. Both controllers are going to play notes on the synth. Say they're both routed to more than one app and send CC's . If any of the apps responds to those CC's there could be conflicts.

    You're probably not going to have those kind of conflicts if the foot switch sends CC's not notes. If it sends notes and it's routed to a synth ... it's gonna play notes.

    I hope that makes sense. There's no easy answer. You have to think of what every receiver of every device is going to do with what it sees. In AUM you have the ability to filter out every type of message granularly, so if there is a conflict, you can probably deal with it that way.

    As a general rule, when I can, I like to use channel 16 for control messages. I also only enable listening on the channel I know I expect for any given app (when I'm not being lazy). I think it's easier to set things up more restrictively than to try to troubleshoot unexpected results. If something's not working, I find it easier to check that I'm not blocking something I shouldn't than that I'm letting something through that I shouldn't.

  • Great advice. Thank you wim. 👍

  • If it is not against the rules here are a couple of clips on Facebook playing my Roland FR-1X electronic accordion at the Palmetto Blues Festval. These are onboard sounds as I didn’t reach my goal of using AUM here because of stability.
    https://www.facebook.com/100000155522812/posts/24338710645717448/?

  • I am working on filtering out everything that is not needed to help with intermittent stuck notes or an out of tune condition.
    In almost ALL cases using the session/preset switch to change the preset or session returns everything to normal.
    For some reason a stuck “C” sometimes occurs while I am changing parameters.

Sign In or Register to comment.