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.

Loopy Pro and the full PC message

Can Loopy Pro send MIDI message Bank select (LSB MSB) and Program Change?
I can't find this possibility, but maybe there exists?

Comments

  • edited May 2023

    LP can send PC messages (with the "Send MIDI" action); I haven't built in support for Bank Select yet, although you can enter a custom MIDI string and put in anything you like.

    In the next version you'll be able to enter "xx" anywhere in the custom field to substitute the value of a slider/dial/etc, so you'll be able to do stuff like "B0 00 01 C0 xx" for a Bank Select message.

  • A bank select message is just two CC messages in a row. Loopy can send any sequence of CC's in an action, so all you need to do is send those, followed a Program Change message.

    Bank select uses CC#0 for the MSB (most significant byte) and CC#32 for the LSB (least significant byte). The value of the CC selects the bank. Some targets only use the MSB, so you can omit the CC#32 for those.

  • @wim said:
    A bank select message is just two CC messages in a row. Loopy can send any sequence of CC's in an action, so all you need to do is send those, followed a Program Change message.

    Bank select uses CC#0 for the MSB (most significant byte) and CC#32 for the LSB (least significant byte). The value of the CC selects the bank. Some targets only use the MSB, so you can omit the CC#32 for those.

    Nice one!

  • wimwim
    edited May 2023

    @Michael said:

    @wim said:
    A bank select message is just two CC messages in a row. Loopy can send any sequence of CC's in an action, so all you need to do is send those, followed a Program Change message.

    Bank select uses CC#0 for the MSB (most significant byte) and CC#32 for the LSB (least significant byte). The value of the CC selects the bank. Some targets only use the MSB, so you can omit the CC#32 for those.

    Nice one!

    Those substitute values will be HUGE for a lot of things. 😎👍🏼

  • @Michael
    @wim
    Thank you very much for your response.
    I just got home from ......., closed the front door and sat on the rig with no rest. Interesting that until now I never associated the MSB and LSB in the cc#0 and cc#32 positions with those used in the MSB-LSB-PC combination. Imagination was not set. I typed in some MIDI actions and as far as I can see it works. Of course the sysex message also works. I will now have a very busy two days, so that the next attempts on Thursday. Thanks again and all the best wishes.

  • @VoytecG - glad it helped.
    Here are a few links that helped me understand this:

    http://www.andrelouis.com/qws/art/art009.htm
    http://midi.teragonaudio.com/tech/midispec/bank.htm

  • @Michael said:
    In the next version you'll be able to enter "xx" anywhere in the custom field to substitute the value of a slider/dial/etc, so you'll be able to do stuff like "B0 00 01 C0 xx" for a Bank Select message.

    I assume support of "xx" replacement was added? I didn't see it in the documentation.

  • @quadbus said:

    @Michael said:
    In the next version you'll be able to enter "xx" anywhere in the custom field to substitute the value of a slider/dial/etc, so you'll be able to do stuff like "B0 00 01 C0 xx" for a Bank Select message.

    I assume support of "xx" replacement was added? I didn't see it in the documentation.

    It was added but appears not have made it into the documentation.

  • @Michael said:
    LP can send PC messages (with the "Send MIDI" action); I haven't built in support for Bank Select yet, although you can enter a custom MIDI string and put in anything you like.

    In the next version you'll be able to enter "xx" anywhere in the custom field to substitute the value of a slider/dial/etc, so you'll be able to do stuff like "B0 00 01 C0 xx" for a Bank Select message.

    This is a somewhat old thread, but I'll give it a try...

    I have tried this @Michael , but it seems that LP cannot do what I want:

    I want to send a SysEx message (Dial-wheel) from LP to a MIDI device. The SysEx message should adjust Time-parameter in a Delay from the value 10 (0a 00) to the value 2000 (50 0f):

    From: f0 52 00 00 31 13 03 00 0a 00 f7
    To: f0 52 00 00 31 13 03 00 50 0f f7

    In LP, at least, this does not work with e.g.: f0 52 00 00 31 13 03 00 xx xx f7

    Suggestions for a solution?

  • @OlaRos : when you say that it doesn’t work, do you mean that you can’t restrict the range to 10 - 2000?

  • wimwim
    edited March 14

    @OlaRos said:

    @Michael said:
    LP can send PC messages (with the "Send MIDI" action); I haven't built in support for Bank Select yet, although you can enter a custom MIDI string and put in anything you like.

    In the next version you'll be able to enter "xx" anywhere in the custom field to substitute the value of a slider/dial/etc, so you'll be able to do stuff like "B0 00 01 C0 xx" for a Bank Select message.

    This is a somewhat old thread, but I'll give it a try...

    I have tried this @Michael , but it seems that LP cannot do what I want:

    I want to send a SysEx message (Dial-wheel) from LP to a MIDI device. The SysEx message should adjust Time-parameter in a Delay from the value 10 (0a 00) to the value 2000 (50 0f):

    From: f0 52 00 00 31 13 03 00 0a 00 f7
    To: f0 52 00 00 31 13 03 00 50 0f f7

    In LP, at least, this does not work with e.g.: f0 52 00 00 31 13 03 00 xx xx f7

    Suggestions for a solution?

    The encoder dial is sending only relative midi in custom mode, so you're only getting f0 52 00 00 31 13 03 00 00 01 f7 for clockwise and f0 52 00 00 31 13 03 00 00 00 f7 for counter-clockwise.

    You'll have to use a regular dial. The problem is you won't be able to limit the range to 0x50 0x0F. I can picture a fairly simple Mozaic script that could scale the output. Or one that could create absolute output from the relative output of the encoder. I can't think of any other way.

  • 🤔 maybe a limited regular dial triggering a second dial that sends the sysex?

  • @wim said:

    @OlaRos said:

    @Michael said:
    LP can send PC messages (with the "Send MIDI" action); I haven't built in support for Bank Select yet, although you can enter a custom MIDI string and put in anything you like.

    In the next version you'll be able to enter "xx" anywhere in the custom field to substitute the value of a slider/dial/etc, so you'll be able to do stuff like "B0 00 01 C0 xx" for a Bank Select message.

    This is a somewhat old thread, but I'll give it a try...

    I have tried this @Michael , but it seems that LP cannot do what I want:

    I want to send a SysEx message (Dial-wheel) from LP to a MIDI device. The SysEx message should adjust Time-parameter in a Delay from the value 10 (0a 00) to the value 2000 (50 0f):

    From: f0 52 00 00 31 13 03 00 0a 00 f7
    To: f0 52 00 00 31 13 03 00 50 0f f7

    In LP, at least, this does not work with e.g.: f0 52 00 00 31 13 03 00 xx xx f7

    Suggestions for a solution?

    The encoder dial is sending relative midi in that mode, so you're only getting f0 52 00 00 31 13 03 00 00 01 f7 for clockwise and f0 52 00 00 31 13 03 00 00 00 f7 for counter-clockwise.

    You'll have to use a regular dial. The problem is you won't be able to limit the range to 0x50 0x0F. I can picture a fairly simple Mozaic script that could scale the output. That's the only solution I can think of.

    One trick that you can use to limit the value is to use a fader slider or knob to control the slider or knob that sends the midi.

    I.e.
    set up slider A to send the sysex with the embedded XX XX. Let’s say “f0 xx xx f7”

    set up slider B to change the value of slider A. Long press the min value and enter 0.0006

    For the max value enter 0.1221

    This results in values from 00 0A to OF 50

    But I notice that @OlaRos seems to need LSB first. Loopy does MSB. So, Mozaic may be needed.

  • wimwim
    edited March 14

    @wim said:
    🤔 maybe a limited regular dial triggering a second dial that sends the sysex?

    That works, I think, with the right scaling, but I don't understand the values you state. 0x0A00 is 2560, and 0x500F is 20495 (or 3920 if you reverse the MSB and LSB).

  • @espiegel123 beat me to the math ... but only by a little. 😉

  • wimwim
    edited March 14

    @espiegel123 said:
    But I notice that @OlaRos seems to need LSB first. Loopy does MSB. So, Mozaic may be needed.

    I still can't come up with 2000 from 0x0F50.

  • @wim said:

    @espiegel123 said:
    But I notice that @OlaRos seems to need LSB first. Loopy does MSB. So, Mozaic may be needed.

    I still can't come up with 2000 from 0x0F50.

    Remember that this is 14-bit midi not hex. You convert to 7-bit numbers and do some voodoo. I was lazy and used a calculator on the midi designer site

    https://mididesigner.com/help/midi-byte-calculator/?sum=2000&number_of_bytes=2

  • @wim said:

    @espiegel123 said:
    But I notice that @OlaRos seems to need LSB first. Loopy does MSB. So, Mozaic may be needed.

    I still can't come up with 2000 from 0x0F50.

    Just convert each byte to decimal, multiply the high byte by 128, and add. So 15x128 + 80 = 2000. Easy.

  • @espiegel123 said:
    @OlaRos : when you say that it doesn’t work, do you mean that you can’t restrict the range to 10 - 2000?

    Yes! I mean - not with LP alone.

    I’m now experimenting with a Dial wheel in LP and sending it’s values (0-127) to StreamByter.
    From here I think that StreamByter have do some math - and finally send the right SysEx to my midi-device (Zoom LiveTrak L6max).

    Agree?

  • @OlaRos said:

    @espiegel123 said:
    @OlaRos : when you say that it doesn’t work, do you mean that you can’t restrict the range to 10 - 2000?

    Yes! I mean - not with LP alone.

    I’m now experimenting with a Dial wheel in LP and sending it’s values (0-127) to StreamByter.
    From here I think that StreamByter have do some math - and finally send the right SysEx to my midi-device (Zoom LiveTrak L6max).

    Agree?

    I explained a few posts up how to limit it.

    See: https://forum.loopypro.com/discussion/comment/1460023/#Comment_1460023

    Loopy Pro does MSB then LSB. If you need it the other way around you can use streambyter to flip the bytes.

  • wimwim
    edited March 14

    @espiegel123 said:

    @wim said:

    @espiegel123 said:
    But I notice that @OlaRos seems to need LSB first. Loopy does MSB. So, Mozaic may be needed.

    I still can't come up with 2000 from 0x0F50.

    Remember that this is 14-bit midi not hex. You convert to 7-bit numbers and do some voodoo. I was lazy and used a calculator on the midi designer site

    https://mididesigner.com/help/midi-byte-calculator/?sum=2000&number_of_bytes=2

    Ahh. thanks. @espiegel123 and @uncledave
    I'm familiar with 14-bit midi, but I never encountered it in a sysex context before.

  • wimwim
    edited March 14

    @OlaRos said:
    From here I think that StreamByter have do some math - and finally send the right SysEx to my midi-device (Zoom LiveTrak L6max).

    Agree?

    Yes.

    Streambyter syntax can be a little challenging. If you need help, it might be a good idea to start a new thread. Mozaic is an alternative that might be a little easier to do the implementation in. Either way will work.

  • @OlaRos : if you are sure that your destination needs the bytes in reversed order, you could use the solution that I used in loopy pro and send it to streambyter but streambyter won’t need to do any math it will just need to swap two bytes in the message which is pretty straightforward

    If you can’t figure that part out, remind me in a few days and I’ll post how.

  • wimwim
    edited March 14

    Seems to me that if Streambyter is needed anyway, it would be cleaner to use a single full range dial and do the whole conversion in the script. But whatever works, works.

    The TranslateScale command in Mozaic would make the math a bunch easier I think.

  • Fwiw, if the message I suggested is used, the only script needed is this:

  • edited March 14

    @OlaRos : here is an implementation of what you described. The dial is used for interaction. The slider handles the sysex generation with an assist from Streambyter to swap the byte order from MSB LSB to LSB MSB for your value.

    One control in Loopy Pro and there’s done in Stresmbyter or Mozaic would be more elegant but would require more complicated scripting and setup imo.

  • You have all been very helpful!
    I have tested your example @espiegel123 - and it worked.
    However, I would have liked to do all the calculations in StreamByter - to avoid multiple objects in Loopy Pro.

    For the sake of order, I have started a new thread - following advice from @wim.

Sign In or Register to comment.