Audiobus: Use your music apps together.

What is Audiobus?Audiobus is an award-winning music app for iPhone and iPad which lets you use your other music apps together. Chain effects on your favourite synth, run the output of apps or Audio Units into an app like GarageBand or Loopy, or select a different audio interface output for each app. Route MIDI between apps — drive a synth from a MIDI sequencer, or add an arpeggiator to your MIDI keyboard — or sync with your external MIDI gear. And control your entire setup from a MIDI controller.

Download on the App Store

Audiobus is the app that makes the rest of your setup better.

Request new Mozaic Scripts *HERE*

1454648505162

Comments

  • @quartzite said:
    Thanks @McD and @wim for the replies!

    I think the main thing missing from all these options is that I'm looking for something that is not quantized and records more like an audio looper. I don't just want the notes but the spaces between the notes.

    Its good to understand better how mozaic is probably not the best choice to explore this. I may extend the convo here https://forum.audiob.us/discussion/45846/the-definitive-midi-looper-in-mozaic or just give up for now.

    https://patchstorage.com/loopy-endless/ Maybe? I only skimmed the description, so don’t know if it’s quantized or not.

  • wimwim
    edited February 2022

    Midi Tape Recorder is worth looking at too.

  • @wim said:
    Midi Tape Recorder is worth looking at too.

    👆

  • edited February 2022

    Hey folks, I just posted this in its own thread but realised that perhaps it could be done in Mozaic (which I have, but I'm not familiar with scripting).

    I am trying to find a way to take an incoming MIDI note number and output the same value but as a CC message (to a specified MIDI device, in this case my Nord Drum). Is there a way to do this (for any note 0-127, ideally with channel information retained) in Mozaic?

    E.g. When I play note C60 on channel 2 with, I want MIDI CC 31 to send a value of 60 on channel 2 to a device I have specified. When I play note D62, the value 62 is sent, etc. I’d love this set up for any note, across six channels (1-6).

    Any help or ideas would be appreciated.

    Other thread with use case

  • @handed said:
    Hey folks, I just posted this in its own thread but realised that perhaps it could be done in Mozaic (which I have, but I'm not familiar with scripting).

    I am trying to find a way to take an incoming MIDI note number and output the same value but as a CC message (to a specified MIDI device, in this case my Nord Drum). Is there a way to do this (for any note 0-127, ideally with channel information retained) in Mozaic?

    E.g. When I play note C60 on channel 2 with, I want MIDI CC 31 to send a value of 60 on channel 2 to a device I have specified. When I play note D62, the value 62 is sent, etc. I’d love this set up for any note, across six channels (1-6).

    Any help or ideas would be appreciated.

    Other thread with use case

    it would be simple to do this in Mozaic.

  • wimwim
    edited February 2022

    @handed said:
    Hey folks, I just posted this in its own thread but realised that perhaps it could be done in Mozaic (which I have, but I'm not familiar with scripting).

    I am trying to find a way to take an incoming MIDI note number and output the same value but as a CC message (to a specified MIDI device, in this case my Nord Drum). Is there a way to do this (for any note 0-127, ideally with channel information retained) in Mozaic?

    E.g. When I play note C60 on channel 2 with, I want MIDI CC 31 to send a value of 60 on channel 2 to a device I have specified. When I play note D62, the value 62 is sent, etc. I’d love this set up for any note, across six channels (1-6).

    Any help or ideas would be appreciated.

    Other thread with use case

    I think the KEY to CC script does exactly this - if I understand what you wrote correctly.

  • @wim said:

    @handed said:
    Hey folks, I just posted this in its own thread but realised that perhaps it could be done in Mozaic (which I have, but I'm not familiar with scripting).

    I am trying to find a way to take an incoming MIDI note number and output the same value but as a CC message (to a specified MIDI device, in this case my Nord Drum). Is there a way to do this (for any note 0-127, ideally with channel information retained) in Mozaic?

    E.g. When I play note C60 on channel 2 with, I want MIDI CC 31 to send a value of 60 on channel 2 to a device I have specified. When I play note D62, the value 62 is sent, etc. I’d love this set up for any note, across six channels (1-6).

    Any help or ideas would be appreciated.

    Other thread with use case

    I think the KEY to CC script does exactly this - if I understand what you wrote correctly.

    Fantastic, thanks, I'll check it out.

  • Thanks @wim & @McD for pointing me to examples of midi recording, it helped me hone down what I really was looking for.

    I ended up realizing I could build the effect I wanted in Drambo with a few Buffer Repeat modules. I uploaded a patch of it here if folks are interested https://patchstorage.com/midi-freeze/

  • @quartzite said:
    Thanks @wim & @McD for pointing me to examples of midi recording, it helped me hone down what I really was looking for.

    I ended up realizing I could build the effect I wanted in Drambo with a few Buffer Repeat modules. I uploaded a patch of it here if folks are interested https://patchstorage.com/midi-freeze/

    That's brilliant! I would never have thought of that.

  • edited February 2022

    @wim said:

    @quartzite said:
    Thanks @wim & @McD for pointing me to examples of midi recording, it helped me hone down what I really was looking for.

    I ended up realizing I could build the effect I wanted in Drambo with a few Buffer Repeat modules. I uploaded a patch of it here if folks are interested https://patchstorage.com/midi-freeze/

    That's brilliant! I would never have thought of that.

    🙇🏻‍♂️ Thanks 🙂

  • @Toastedghost said:

    @Skyblazer said:

    @Toastedghost said:

    @wim said:

    @Toastedghost said:
    Hi Guys, I love Mozaic and the fabulous scripts and script wizards. I want to be able to have Launchpad Pro (not mk) pads to remain lit when pressed or at least appear like they do on the Launchpad app. My Launchpad did autobind in Loopy Pro and I even wrote instructions explaining to others how to do it but sadly it wont work now. They will work under midi learn but then turn blank after they have been triggered off. Hope this makes sense, is there a script out there that can achieve this. Would be so grateful to anybody who can help.

    I don't have a Launchpad of any type to test with, and I have no idea if this will help, but I wrote a script some time back that can echo midi back to the controller it came from. It might be worth giving a shot. (Or it might cause a midi loop and be a train wreck. :# )

    https://patchstorage.com/controller-feedback-and-restore/

    [edit ... could be a waste of time if the launchpad is sending notes or other messages, not CC's]

    Thanks for the patch, the Launchpad on Live Port mode originally wants to send notes not ccs. I used the settings in midi learn/setup to send a cc for an input but have so far being unable to make the patch work successfully.
    Again thanks for your input

    So you just want a light to toggle on and off when you tap a pad, and maybe translate the Launchpad's output from notes to CC messages?

    @wim I usually send SysEx messages to the Launchpad to light the pads, rather than notes on Channel 1. I would use a grid of ones and zeroes if you're toggling the LEDs, but maybe I'm not understanding the problem or the solution.

    First, you need to send a SysEx message for "Programmer Mode On" to the Launchpad.
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x0E, 0x01]
    SendSysex Sys_Message, 7

    To allow the user to exit programmer mode, send the same message, with 0x00 instead of 0x01 at the end. (You can also write 0 and 1 instead of 0x00 and 0x01, just to set that digit apart visually, if you want.)

    Every control on the Launchpad is assigned a number from 11 to 99. The first digit is for the row, the second digit is for the column, starting from the bottom left pad, which is numbered 11. 12 is to the right of that pad, 21 is directly above, etc.

    This message lights the bottom left pad. Change the 67 at the end to a different number, if you want.
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x03, 0x00, 11, 67]
    SendSysex Sys_Message, 7

    This message unlights the same pad; 0 is the "color palette position" for "LED Off".
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x03, 0x00, 11, 0]
    SendSysex Sys_Message, 7

    So, if the user taps the pad at the bottom left, it will send:
    NoteOn and NoteOff messages, with Byte2 being 11. (Next to it is 12, 13, 14...above it is 21, 22, 23...).

    And it should receive:
    one of those two sysex messages directly above, based on whether there's a 1 or a 0 at position 11 in an array. (Or position 0...but I prefer to make an array with the first 11 positions blank, along with position 20, 30, 40, etc.)

    It could also translate that NoteOn with Byte2 = 11 to a CC message, if that's how you want to launch clips.

    Here's a sysex for lighting the top row's 8 buttons. The first button will be off, the second one will be a different color: 68.
    DisplayArray = [0, 68, 67, 67, 67, 67, 67, 67]
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x03, 0x00, 91, DisplayArray[0], 0x00, 92, DisplayArray[1], 0x00, 93, DisplayArray[2], 0x00, 94, DisplayArray[3], 0x00, 95, DisplayArray[4], 0x00, 96, DisplayArray[5], 0x00, 97, DisplayArray[6], 0x00, 98, DisplayArray[7]]
    SendSysex Sys_Message, 30

    Fun fact, the Launchpad models also have different color palettes.
    I usually make mistakes when I'm tired, otherwise I'd try to write the rest. ;) Hope this helps.

    Wow you sure know your stuff. That does through lighton the subject, pardon the pun.
    My poor dyslexic head struggles unfortunately to convertthose sysex messages into a code that Mozaic can understand. Is there anybody here who could please rise to that challenge? It would certainly open doors and I would be super grateful.

    Many thanks in advance,

    @Toastedghost said:

    @Skyblazer said:

    @Toastedghost said:

    @wim said:

    @Toastedghost said:
    Hi Guys, I love Mozaic and the fabulous scripts and script wizards. I want to be able to have Launchpad Pro (not mk) pads to remain lit when pressed or at least appear like they do on the Launchpad app. My Launchpad did autobind in Loopy Pro and I even wrote instructions explaining to others how to do it but sadly it wont work now. They will work under midi learn but then turn blank after they have been triggered off. Hope this makes sense, is there a script out there that can achieve this. Would be so grateful to anybody who can help.

    I don't have a Launchpad of any type to test with, and I have no idea if this will help, but I wrote a script some time back that can echo midi back to the controller it came from. It might be worth giving a shot. (Or it might cause a midi loop and be a train wreck. :# )

    https://patchstorage.com/controller-feedback-and-restore/

    [edit ... could be a waste of time if the launchpad is sending notes or other messages, not CC's]

    Thanks for the patch, the Launchpad on Live Port mode originally wants to send notes not ccs. I used the settings in midi learn/setup to send a cc for an input but have so far being unable to make the patch work successfully.
    Again thanks for your input

    So you just want a light to toggle on and off when you tap a pad, and maybe translate the Launchpad's output from notes to CC messages?

    @wim I usually send SysEx messages to the Launchpad to light the pads, rather than notes on Channel 1. I would use a grid of ones and zeroes if you're toggling the LEDs, but maybe I'm not understanding the problem or the solution.

    First, you need to send a SysEx message for "Programmer Mode On" to the Launchpad.
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x0E, 0x01]
    SendSysex Sys_Message, 7

    To allow the user to exit programmer mode, send the same message, with 0x00 instead of 0x01 at the end. (You can also write 0 and 1 instead of 0x00 and 0x01, just to set that digit apart visually, if you want.)

    Every control on the Launchpad is assigned a number from 11 to 99. The first digit is for the row, the second digit is for the column, starting from the bottom left pad, which is numbered 11. 12 is to the right of that pad, 21 is directly above, etc.

    This message lights the bottom left pad. Change the 67 at the end to a different number, if you want.
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x03, 0x00, 11, 67]
    SendSysex Sys_Message, 7

    This message unlights the same pad; 0 is the "color palette position" for "LED Off".
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x03, 0x00, 11, 0]
    SendSysex Sys_Message, 7

    So, if the user taps the pad at the bottom left, it will send:
    NoteOn and NoteOff messages, with Byte2 being 11. (Next to it is 12, 13, 14...above it is 21, 22, 23...).

    And it should receive:
    one of those two sysex messages directly above, based on whether there's a 1 or a 0 at position 11 in an array. (Or position 0...but I prefer to make an array with the first 11 positions blank, along with position 20, 30, 40, etc.)

    It could also translate that NoteOn with Byte2 = 11 to a CC message, if that's how you want to launch clips.

    Here's a sysex for lighting the top row's 8 buttons. The first button will be off, the second one will be a different color: 68.
    DisplayArray = [0, 68, 67, 67, 67, 67, 67, 67]
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x03, 0x00, 91, DisplayArray[0], 0x00, 92, DisplayArray[1], 0x00, 93, DisplayArray[2], 0x00, 94, DisplayArray[3], 0x00, 95, DisplayArray[4], 0x00, 96, DisplayArray[5], 0x00, 97, DisplayArray[6], 0x00, 98, DisplayArray[7]]
    SendSysex Sys_Message, 30

    Fun fact, the Launchpad models also have different color palettes.
    I usually make mistakes when I'm tired, otherwise I'd try to write the rest. ;) Hope this helps.

    Wow you sure know your stuff. That does through lighton the subject, pardon the pun.
    My poor dyslexic head struggles unfortunately to convertthose sysex messages into a code that Mozaic can understand. Is there anybody here who could please rise to that challenge? It would certainly open doors and I would be super grateful.

    Many thanks in advance,

    I might be able to help with the Launchpad script this week, but I'm still not sure what your goal is. Is it just a workaround for a bug in Loopy Pro? I've been working on some stuff related to clip launching, and some Launchpad scripts for beginners to learn from.

  • @Skyblazer said:

    @Toastedghost said:

    @Skyblazer said:

    @Toastedghost said:

    @wim said:

    @Toastedghost said:
    Hi Guys, I love Mozaic and the fabulous scripts and script wizards. I want to be able to have Launchpad Pro (not mk) pads to remain lit when pressed or at least appear like they do on the Launchpad app. My Launchpad did autobind in Loopy Pro and I even wrote instructions explaining to others how to do it but sadly it wont work now. They will work under midi learn but then turn blank after they have been triggered off. Hope this makes sense, is there a script out there that can achieve this. Would be so grateful to anybody who can help.

    I don't have a Launchpad of any type to test with, and I have no idea if this will help, but I wrote a script some time back that can echo midi back to the controller it came from. It might be worth giving a shot. (Or it might cause a midi loop and be a train wreck. :# )

    https://patchstorage.com/controller-feedback-and-restore/

    [edit ... could be a waste of time if the launchpad is sending notes or other messages, not CC's]

    Thanks for the patch, the Launchpad on Live Port mode originally wants to send notes not ccs. I used the settings in midi learn/setup to send a cc for an input but have so far being unable to make the patch work successfully.
    Again thanks for your input

    So you just want a light to toggle on and off when you tap a pad, and maybe translate the Launchpad's output from notes to CC messages?

    @wim I usually send SysEx messages to the Launchpad to light the pads, rather than notes on Channel 1. I would use a grid of ones and zeroes if you're toggling the LEDs, but maybe I'm not understanding the problem or the solution.

    First, you need to send a SysEx message for "Programmer Mode On" to the Launchpad.
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x0E, 0x01]
    SendSysex Sys_Message, 7

    To allow the user to exit programmer mode, send the same message, with 0x00 instead of 0x01 at the end. (You can also write 0 and 1 instead of 0x00 and 0x01, just to set that digit apart visually, if you want.)

    Every control on the Launchpad is assigned a number from 11 to 99. The first digit is for the row, the second digit is for the column, starting from the bottom left pad, which is numbered 11. 12 is to the right of that pad, 21 is directly above, etc.

    This message lights the bottom left pad. Change the 67 at the end to a different number, if you want.
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x03, 0x00, 11, 67]
    SendSysex Sys_Message, 7

    This message unlights the same pad; 0 is the "color palette position" for "LED Off".
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x03, 0x00, 11, 0]
    SendSysex Sys_Message, 7

    So, if the user taps the pad at the bottom left, it will send:
    NoteOn and NoteOff messages, with Byte2 being 11. (Next to it is 12, 13, 14...above it is 21, 22, 23...).

    And it should receive:
    one of those two sysex messages directly above, based on whether there's a 1 or a 0 at position 11 in an array. (Or position 0...but I prefer to make an array with the first 11 positions blank, along with position 20, 30, 40, etc.)

    It could also translate that NoteOn with Byte2 = 11 to a CC message, if that's how you want to launch clips.

    Here's a sysex for lighting the top row's 8 buttons. The first button will be off, the second one will be a different color: 68.
    DisplayArray = [0, 68, 67, 67, 67, 67, 67, 67]
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x03, 0x00, 91, DisplayArray[0], 0x00, 92, DisplayArray[1], 0x00, 93, DisplayArray[2], 0x00, 94, DisplayArray[3], 0x00, 95, DisplayArray[4], 0x00, 96, DisplayArray[5], 0x00, 97, DisplayArray[6], 0x00, 98, DisplayArray[7]]
    SendSysex Sys_Message, 30

    Fun fact, the Launchpad models also have different color palettes.
    I usually make mistakes when I'm tired, otherwise I'd try to write the rest. ;) Hope this helps.

    Wow you sure know your stuff. That does through lighton the subject, pardon the pun.
    My poor dyslexic head struggles unfortunately to convertthose sysex messages into a code that Mozaic can understand. Is there anybody here who could please rise to that challenge? It would certainly open doors and I would be super grateful.

    Many thanks in advance,

    @Toastedghost said:

    @Skyblazer said:

    @Toastedghost said:

    @wim said:

    @Toastedghost said:
    Hi Guys, I love Mozaic and the fabulous scripts and script wizards. I want to be able to have Launchpad Pro (not mk) pads to remain lit when pressed or at least appear like they do on the Launchpad app. My Launchpad did autobind in Loopy Pro and I even wrote instructions explaining to others how to do it but sadly it wont work now. They will work under midi learn but then turn blank after they have been triggered off. Hope this makes sense, is there a script out there that can achieve this. Would be so grateful to anybody who can help.

    I don't have a Launchpad of any type to test with, and I have no idea if this will help, but I wrote a script some time back that can echo midi back to the controller it came from. It might be worth giving a shot. (Or it might cause a midi loop and be a train wreck. :# )

    https://patchstorage.com/controller-feedback-and-restore/

    [edit ... could be a waste of time if the launchpad is sending notes or other messages, not CC's]

    Thanks for the patch, the Launchpad on Live Port mode originally wants to send notes not ccs. I used the settings in midi learn/setup to send a cc for an input but have so far being unable to make the patch work successfully.
    Again thanks for your input

    So you just want a light to toggle on and off when you tap a pad, and maybe translate the Launchpad's output from notes to CC messages?

    @wim I usually send SysEx messages to the Launchpad to light the pads, rather than notes on Channel 1. I would use a grid of ones and zeroes if you're toggling the LEDs, but maybe I'm not understanding the problem or the solution.

    First, you need to send a SysEx message for "Programmer Mode On" to the Launchpad.
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x0E, 0x01]
    SendSysex Sys_Message, 7

    To allow the user to exit programmer mode, send the same message, with 0x00 instead of 0x01 at the end. (You can also write 0 and 1 instead of 0x00 and 0x01, just to set that digit apart visually, if you want.)

    Every control on the Launchpad is assigned a number from 11 to 99. The first digit is for the row, the second digit is for the column, starting from the bottom left pad, which is numbered 11. 12 is to the right of that pad, 21 is directly above, etc.

    This message lights the bottom left pad. Change the 67 at the end to a different number, if you want.
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x03, 0x00, 11, 67]
    SendSysex Sys_Message, 7

    This message unlights the same pad; 0 is the "color palette position" for "LED Off".
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x03, 0x00, 11, 0]
    SendSysex Sys_Message, 7

    So, if the user taps the pad at the bottom left, it will send:
    NoteOn and NoteOff messages, with Byte2 being 11. (Next to it is 12, 13, 14...above it is 21, 22, 23...).

    And it should receive:
    one of those two sysex messages directly above, based on whether there's a 1 or a 0 at position 11 in an array. (Or position 0...but I prefer to make an array with the first 11 positions blank, along with position 20, 30, 40, etc.)

    It could also translate that NoteOn with Byte2 = 11 to a CC message, if that's how you want to launch clips.

    Here's a sysex for lighting the top row's 8 buttons. The first button will be off, the second one will be a different color: 68.
    DisplayArray = [0, 68, 67, 67, 67, 67, 67, 67]
    Sys_Message = [0x00, 0x20, 0x29, 0x02, 0x0C, 0x03, 0x00, 91, DisplayArray[0], 0x00, 92, DisplayArray[1], 0x00, 93, DisplayArray[2], 0x00, 94, DisplayArray[3], 0x00, 95, DisplayArray[4], 0x00, 96, DisplayArray[5], 0x00, 97, DisplayArray[6], 0x00, 98, DisplayArray[7]]
    SendSysex Sys_Message, 30

    Fun fact, the Launchpad models also have different color palettes.
    I usually make mistakes when I'm tired, otherwise I'd try to write the rest. ;) Hope this helps.

    Wow you sure know your stuff. That does through lighton the subject, pardon the pun.
    My poor dyslexic head struggles unfortunately to convertthose sysex messages into a code that Mozaic can understand. Is there anybody here who could please rise to that challenge? It would certainly open doors and I would be super grateful.

    Many thanks in advance,

    I might be able to help with the Launchpad script this week, but I'm still not sure what your goal is. Is it just a workaround for a bug in Loopy Pro? I've been working on some stuff related to clip launching, and some Launchpad scripts for beginners to learn from.

    Dont know that it is bug or just me, but I have tried a full reinstal but did not solve the issue. Before I turn on Loopy, switched on my Launchpad Pro (not mk) set it to Live and hey presto all the lights on the Lauchpad matched the coloured clips in Loopy. Now I do the same and nothing. Sure I can create bindings but the pads only light when pressed which leaves me with a blank Launchpad and guesses as to where loops lie. Any help you give will be much appreciated. Many thanks for reading this.

  • @Toastedghost Okay, somehow I missed that before. Did you report the bug? I reported a bug with Loopy Pro's Launchpad support, and the developer said that fixing it wasn't a priority, but it looks like he's been fixing similar stuff lately, so it's worth asking. I can't replicate the functionality of lighting the pads based on the number, position, color, and choke group of Loopy Pro's audio clips. If you always use the same template, maybe something I'm writing would be useful for you, but a bug fix could probably come sooner.

  • @Skyblazer said:
    @Toastedghost Okay, somehow I missed that before. Did you report the bug? I reported a bug with Loopy Pro's Launchpad support, and the developer said that fixing it wasn't a priority, but it looks like he's been fixing similar stuff lately, so it's worth asking. I can't replicate the functionality of lighting the pads based on the number, position, color, and choke group of Loopy Pro's audio clips. If you always use the same template, maybe something I'm writing would be useful for you, but a bug fix could probably come sooner.

    It isn’t a bug. Loopy doesn’t have built-in support for that particular launchpad. It may eventually be added.

  • @quartzite said:
    Thanks @McD and @wim for the replies!

    I think the main thing missing from all these options is that I'm looking for something that is not quantized and records more like an audio looper. I don't just want the notes but the spaces between the notes.

    Its good to understand better how mozaic is probably not the best choice to explore this. I may extend the convo here https://forum.audiob.us/discussion/45846/the-definitive-midi-looper-in-mozaic or just give up for now.

    There’s photon Au which has been marked down to $3.99 for awhile. Not sure if it fits your use case but might be worth a look. Usually $5.99.

  • @espiegel123 said:

    @Skyblazer said:
    @Toastedghost Okay, somehow I missed that before. Did you report the bug? I reported a bug with Loopy Pro's Launchpad support, and the developer said that fixing it wasn't a priority, but it looks like he's been fixing similar stuff lately, so it's worth asking. I can't replicate the functionality of lighting the pads based on the number, position, color, and choke group of Loopy Pro's audio clips. If you always use the same template, maybe something I'm writing would be useful for you, but a bug fix could probably come sooner.

    It isn’t a bug. Loopy doesn’t have built-in support for that particular launchpad. It may eventually be added.

    @espiegel123 yes I get that and the fact that this is not a bug, the weirdest thing is it automapped originally, without me doing anything expect setting the Launchpad to Live.

  • Hello , I have an iRig Blueboard with an Expression Midi Pedal attached to it. The idea es that by pressing each of the four buttons/switches that are available on the Blueboard ( A,B, C and D) you could route the Midi Pedal data to different CC numbers.
    I managed to code the following instructions, which work as intended , except that for reasons I cannot debug, it works routing the information to only 3 choices. That is when I press button A , the Midi Pedal info goes to Ch 1 CC 1 , when I press button B it goes into Ch 1 CC 2, but when I press button C it does note go to Ch 1 CC 3 as it should but rather it jumps to Ch 1 CC 4 which is the instruction that belongs to button D. In other words there is an "elseif" command which is skipped, and I cannot understand why. I would kindly appreciate some help. Thank you

    ```@OnLoad
    // this is just to name the four pads to match the Blueboard switches
    SetShortName {BlueRT}
    ShowLayout 0
    LabelPad 0, {A}
    LabelPad 1, {B}
    LabelPad 2, {C}
    LabelPad 3, {D}

    @End

    @OnMidiInput

    // the following is o light up each individual pad whenever the corresponding switch is pressed on the Blueboard. One press turns it on , the next one off . MidiByte2 numbers correspond to the CC numbers assigned on the Blueboard. These can be changed to whatever preset you setup on the Blueboard
    if MIDICommand = 0xB0 and MIDIByte2 = 4 and MIDIByte3 = 127
    LatchPad 0, YES
    elseif MIDICommand = 0xB0 and MIDIByte2 = 4 and MIDIByte3 = 0
    LatchPad 0, NO
    elseif MIDICommand = 0xB0 and MIDIByte2 = 5 and MIDIByte3 = 127
    LatchPad 1, YES
    elseif MIDICommand = 0xB0 and MIDIByte2 = 5 and MIDIByte3 = 0
    LatchPad 1, NO
    elseif MIDICommand = 0xB0 and MIDIByte2 = 6 and MIDIByte3 = 127
    LatchPad 2, YES
    elseif MIDICommand = 0xB0 and MIDIByte2 = 6 and MIDIByte3 = 0
    LatchPad 2, NO
    elseif MIDICommand = 0xB0 and MIDIByte2 = 7 and MIDIByte3 = 127
    LatchPad 3, YES
    elseif MIDICommand = 0xB0 and MIDIByte2 = 7 and MIDIByte3 = 0
    LatchPad 3, NO
    endif
    @End

    @OnMidiCC

    //Here, there is a test to check if the pad is illuminated, which was accomplished on the prior set of instructions. If it is illuminated , then by pressing the midi CC pedal connected to the Blueboard, a stream of midi CC midi events should be sent on Channel 1 but with different CC numbers

    if PadState 0 = YES
    SendMIDICC 0,1,MIDIByte3

    elseif PadState 1 = YES
    SendMIDICC 0,2,MIDIByte3

    elseif PadState 2 = YES
    SendMIDICC 0,3,MIDIByte3

    else PadState 3 = YES
    SendMIDICC 0,4,MIDIByte3

    endif
    @End ```

  • Hi @GeeBee - if you edit that post so that the ``` are on a line by themselves above and below the code, the formatting will work as intended.

  • wimwim
    edited March 2022

    @GeeBee - the problem is with your final else. That should be elseif.

    else can't have a condition.

    @OnMidiCC
    
    //Here, there is a test to check if the pad is illuminated, which was accomplished on the prior set of instructions. If it is illuminated , then by pressing the midi CC pedal connected to the Blueboard, a stream of midi CC midi events should be sent on Channel 1 but with different CC numbers
    
    if PadState 0 = YES
    SendMIDICC 0,1,MIDIByte3
    
    elseif PadState 1 = YES
    SendMIDICC 0,2,MIDIByte3
    
    elseif PadState 2 = YES
    SendMIDICC 0,3,MIDIByte3
    
    //else PadState 3 = YES
    elseif PadState 3 = YES
    SendMIDICC 0,4,MIDIByte3
    
    endif 
    @End 
    
  • @wim said:
    @GeeBee - the problem is with your final else. That should be elseif.

    else can't have a condition.

    @OnMidiCC
    
    //Here, there is a test to check if the pad is illuminated, which was accomplished on the prior set of instructions. If it is illuminated , then by pressing the midi CC pedal connected to the Blueboard, a stream of midi CC midi events should be sent on Channel 1 but with different CC numbers
    
    if PadState 0 = YES
    SendMIDICC 0,1,MIDIByte3
    
    elseif PadState 1 = YES
    SendMIDICC 0,2,MIDIByte3
    
    elseif PadState 2 = YES
    SendMIDICC 0,3,MIDIByte3
    
    //else PadState 3 = YES
    elseif PadState 3 = YES
    SendMIDICC 0,4,MIDIByte3
    
    endif 
    @End 
    

    Thank you very much for your prompt answer, I modified the code according to the suggestion , but now it does not even carry out the last two "elseif " instructions. It is like it gets stuck in the second "elseif" and I keep getting the same MIDI CC 2 wether I press button C or D...... If you have any other ideas I would appreciate , sorry for the inconvenience.

  • heshes
    edited March 2022

    @AlmostAnonymous said:
    Thank you very much for your prompt answer, I modified the code according to the suggestion , but now it does not even carry out the last two "elseif " instructions. It is like it gets stuck in the second "elseif" and I keep getting the same MIDI CC 2 wether I press button C or D...... If you have any other ideas I would appreciate , sorry for the inconvenience.

    I think your logic may be faulty. The pad states are all independent (at least as you've set it up in @OnMIDIInpute). That is, each can be on or off while any of the others are also on or off. So elseifs are not going to give you what you want. Any elseif in the 'if' structure will be executed only if all the previous comparisons in the structure (ifs and elseifs) have been false. As soon as one is true, it executes the code for that branch and exits the structure (goes to 'endif'), skipping everything below the first true branch.

    So I think you may want four separate if-structures:

    @OnMIDICC
    
    if PadState 0 = YES
      SendMIDICC 0,1,MIDIByte3
    endif
    
    if PadState 1 = YES
      SendMIDICC 0,2,MIDIByte3
    endif
    
    if PadState 2 = YES
      SendMIDICC 0,3,MIDIByte3
    endif
    
    if  PadState 3 = YES
      SendMIDICC 0,4,MIDIByte3
    endif
    
    @END 
    
  • @hes said:

    @AlmostAnonymous said:
    Thank you very much for your prompt answer, I modified the code according to the suggestion , but now it does not even carry out the last two "elseif " instructions. It is like it gets stuck in the second "elseif" and I keep getting the same MIDI CC 2 wether I press button C or D...... If you have any other ideas I would appreciate , sorry for the inconvenience.

    I think your logic may be faulty. The pad states are all independent (at least as you've set it up in @OnMIDIInpute). That is, each can be on or off while any of the others are also on or off. So elseifs are not going to give you what you want. Any elseif in the 'if' structure will be executed only if all the previous comparisons in the structure (ifs and elseifs) have been false. As soon as one is true, it executes the code for that branch and exits the structure (goes to 'endif'), skipping everything below the first true branch.

    So I think you may want four separate if-structures:

    @OnMIDICC
    
    if PadState 0 = YES
      SendMIDICC 0,1,MIDIByte3
    endif
    
    if PadState 1 = YES
      SendMIDICC 0,2,MIDIByte3
    endif
    
    if PadState 2 = YES
      SendMIDICC 0,3,MIDIByte3
    endif
    
    if  PadState 3 = YES
      SendMIDICC 0,4,MIDIByte3
    endif
    
    @END 
    

    Thank you very much for the help. Great response of the group , highly appreciated. However this alternative does not work either . I get the most unusual results but I will share it might shed some light on what is not working.

    With the new suggested code , I get the following results. When I press the A button I get three CC messages simultaneously, that is CC1 , CC3 and CC4 . Rather than getting only the CC1 message. Also notice that it skips CC2........?
    WHen I press the B button I get , rightly so, message CC2
    When I press the C and D buttons I get nothing at all, no CC and no MIDIByte3 streams.
    Just for the sake of exermientation, when I press both the A and the B buttons I get the 4 CC messages simultaneously, that is CC1,CC2,CC3 and CC4.

    More ideas are welcome !! ( Not to tell you that I have been experimenting with a lot of iterations and got none to work )
    Thank you in advance

    This might help: So far the best I was able to get to work correctly were 3 Buttons with this code :smile:

    @OnMIDICC
    
    if PadState 0 = YES
      SendMIDICC 0,1,MIDIByte3
    
    
    elseif PadState 1 = YES
      SendMIDICC 0,2,MIDIByte3
    
    
    else PadState 2 = YES
      SendMIDICC 0,3,MIDIByte3
    endif
    @End 
    

    I get CC1 data when pressing button A, CC2 data when pressing B and CC3 data when pressing C. But the minute I add another instance of "elseif" or "if" or anything to try to get Button D to send CC4 info......it messes up everything. It is driving me nuts why I can get 3 instances to work correctly but cannot find a way to make the 4 of them behave like intended.

  • heshes
    edited March 2022

    @GeeBee said:
    I get CC1 data when pressing button A, CC2 data when pressing B and CC3 data when pressing C. But the minute I add another instance of "elseif" or "if" or anything to try to get Button D to send CC4 info......it messes up everything. It is driving me nuts why I can get 3 instances to work correctly but cannot find a way to make the 4 of them behave like intended.

    I can see there was definitely a problem with code I suggested, but problem doesn't seem to quite fit with what you've described.

    I'm curious, try deleting the entire @OnMidiInput event (or just all the code in it, like below) , and using the code below in @OnMidiCC event. See if its behavior is close to what you want. If it is, I'll explain how it works.

    @OnMidiInput 
         // no code here
    @END    
    
    @OnMidiCC
    
      if MIDIByte3 = 127 then
        newstate = 1              // we’re  turning on a pad
      Else
         newstate = 0            // we’re turning off a pad
      Endif
    
      pad = MidiByte2 - 4               // convert blueboard midi # to mosaic pad #
    
      LatchPad pad, newstate      // turn the pad on or off, as appropriate
    
      If newstate = 1                      // if turning on a pad, send the appropriate cc message
        SendMidiCC 0, pad, MIDIByte3
      Endif
    
    @END
    
    
  • edited March 2022

    But onmidicc is checking the expression pedal value.
    But then the buttons are also sending cc.
    And what if you connect two expression pedals?

  • @Alfred said:
    But onmidicc is checking the expression pedal value.
    But then the buttons are also sending cc.
    And what if you connect two expression pedals?

    If you're referring to my last code in @OnMidiCC, yes, it's assuming there are just four buttons on Blueboard being used. But if there're pedals attached then you would just wrap the code up in this to only affect the buttons:

    @OnMidiCC
    
    if (midibyte2>=4) and (midibyte2<=7)
      [ put code here]
    else
      SendMidiThru
    endif
    
    @END
    
  • @hes said:

    @Alfred said:
    But onmidicc is checking the expression pedal value.
    But then the buttons are also sending cc.
    And what if you connect two expression pedals?

    If you're referring to my last code in @OnMidiCC, yes, it's assuming there are just four buttons on Blueboard being used. But if there're pedals attached then you would just wrap the code up in this to only affect the buttons:

    @OnMidiCC
    
    if (midibyte2>=4) and (midibyte2<=7)
      [ put code here]
    else
      SendMidiThru
    endif
    
    @END
    

    Ok !! Great guys . Thanks to both of you Hes and ALfred . You've nailed it ( and I would have never thought of that solution......) . The final code works wonderfully is certainly more elegant , and looks like this :

    @OnMidiInput 
                                                    // no code here
    @END    
    
    @OnMidiCC
      if (MIDIByte2 >=4) and (MIDIByte2<=7) 
          if MIDIByte3 = 127 then
               newstate = 1                 // we’re  turning on a pad
          Else
               newstate = 0                // we’re turning off a pad
          Endif
    
      pad = MidiByte2 - 4              // convert blueboard midi # to mosaic pad #
      LatchPad pad, newstate      // turn the pad on or off, as appropriate
    
    else SendMIDIThru
    
    endif
    
     If newstate = 1                      // if turning on a pad, send the appropriate cc message
        SendMidiCC 0, pad, MIDIByte3
     Endif
    

    Thanks again !! Cheers

  • There is a glitch in the above script:

    The line else SendMIDIThru does not work as you might think. Mozaic ignores all text after the else keyword up to the end-of-line. The SendMIDIThru needs to be on a separate line - just insert a newline.

  • @_ki said:
    There is a glitch in the above script:

    The line else SendMIDIThru does not work as you might think. Mozaic ignores all text after the else keyword up to the end-of-line. The SendMIDIThru needs to be on a separate line - just insert a newline.

    Nice.

  • @_ki said:
    There is a glitch in the above script:

    The line else SendMIDIThru does not work as you might think. Mozaic ignores all text after the else keyword up to the end-of-line. The SendMIDIThru needs to be on a separate line - just insert a newline.

    Thanks , yes ....that's the way I wrote the code in Mozaic, somehow when I copied the full text to write the comment in the Forum the spaces got mixed up. It does work as intended. Many thanks again , I would have never been able to figure it out on my own.

  • @GeeBee said:

    @OnMidiInput 
                                                    // no code here
    @END    
    
    @OnMidiCC
      if (MIDIByte2 >=4) and (MIDIByte2<=7) 
          if MIDIByte3 = 127 then
               newstate = 1                 // we’re  turning on a pad
          Else
               newstate = 0                // we’re turning off a pad
          Endif
    
      pad = MidiByte2 - 4              // convert blueboard midi # to mosaic pad #
      LatchPad pad, newstate      // turn the pad on or off, as appropriate
      
    else SendMIDIThru
    
    endif
     
     If newstate = 1                      // if turning on a pad, send the appropriate cc message
        SendMidiCC 0, pad, MIDIByte3
     Endif
    

    I'm not sure how your system works, or what those SendMidiCC commands are even used for, but it seems like you would want to modify things so that the 'SendMidiCC' line can't get executed if the message isn't a MidiByte2 of 4 thru 7. Seems like as it is you'd get undesired repeated execution of the 'SendMidiCC' line if you use the expression pedal after last press of a button moves it to 'On' state.

    Two different ways to fix that:

    1. Add 'newstate = 0' line immediately after @OnMidiCC,
      -- or --
    2. Move the 'if newstate=1' structure up to be immediately before the 'else' line, so it gets executed only if MidiByte2 is 4 thru 7.

    Or maybe I'm misunderstanding the system entirely and you need to have that last if structure separate to get desired behavior. I can't see why, though.

Sign In or Register to comment.