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.

Patterning MIDI learn issue -- possible to force it to listen on virtual port?

Hello Audiobus Forum! This is my first post. I've learned so much from this site over the last year and would appreciate any help anyone can offer me here.

I've just remapped my Novation Launch Control using MidiFlow to be an extraordinary music making machine! I devoted one of its templates (using two MIDI channels via MidiFlow's rerouting magic) entirely to Patterning.

However, when I use Patterning's MIDI learn feature, it will sometimes "listen" on its virtual port and other times it will listen directly to the Launch Control. This makes my remappings/reroutings a total mess.

Is there a way to block my controller from sending messages to Patterning so that Patterning will only listen on its virtual port? Or perhaps is there a workaround someone is familiar with that allows for Patterning to only receive on its virtual port?

This is especially troubling because, even if I did get the MIDI learn mappings correctly assigned, there is always the chance that in a live performance Patterning may just start listening to my controller's messages, so the only solution I think is to securely block my controller's MIDI messages from communicating directly with Patterning.

Again, appreciate this forum so much and look forward to any ideas anyone has!




  • Hey Charles, I'd like to help you with this, but I'm heading out of town this week and won't have a chance to do any coding. Can you perhaps send a video of what's going on? [email protected]

    Is it just that the launch control is sending all kinds of MIDI data that is interfering with the MIDI learn process?

  • Ben,
    There doesn’t seem to be a way to specify what MIDI inputs to listen to unless I missed it. So, I suspect, the problem is that Patterning gives preference to the MIDI from the hardware rather than MIDI Flow’s when it learns. I’d recommend adding a MIDI configuration panel where one can chooose what MIDI Sources Patterning will listen to.

    Is there one that I missed?

  • Hello Ben,

    Thank you for your quick reply! I will send you an email tomorrow with a video showing the issue. However, I found a complicated workaround for now. Below I describe it in case any users are curious.

    So I have the knobs and pads on my controller sending MIDI CC messages that are remapped from the CC messages the controller sends via hardware MIDI. Sometimes the knobs/pads send different CC messages depending on other buttons that are toggled. (Ex. CC019 = CC020 when CC015 is toggled 'on') Additionally, I have also remapped a lot of the CC messages to a second MIDI channel depending on similar conditions. The issue is in Patterning receiving messages via both its virtual port (the remapped CCs and their remapped channels) and from the hardware itself (original CCs).

    I decided to use a second iOS device with which I hooked up my controller and sent to my original iOS device the remapped MIDI over Bluetooth. I sent all this incoming MIDI messages into Patterning with MidiFlow through a single routing. Now MIDI Learn was only receiving the remapped CCs and their remapped channels.

    However, it is still problematic when I completed the MIDI Learn process and hooked up my controller to my original device and used the original reroutings to operate Patterning. It was close to working, but occasionally CC messages were lost as it seems Patterning is a) only able to receive one CC at a time for a single operation and b) listening now for the MIDI Learn assignments on a Bluetooth virtual port.

    To get around this, because I intend to have my controller hooked into my original iOS device for operating other software, I have to send that MIDI over to my second iOS device via Bluetooth, and then back to my original iOS device with Bluetooth again, and finally route the whole thing into Patterning as I had done to properly implement the MIDI Learn assignments.

    As it stands, in order to use a remapped controller with Patterning, I need two devices and the use of Bluetooth MIDI back and forth. Indeed, this can be avoided if there is an option in Patterning to simply specify which inputs it receives MIDI on. On a side note, I think the fact that Patterning is able to receive MIDI on multiple channels is a really great feature and essential to the use of my controller in the way I've described. Ben -- if you're reading here -- please don't change this feature!

    All that being said, this was a great learning experience and now I'm wondering if it is really worth it to have control over all the MIDI learn assignments available in Patterning. The touchscreen UI is just brilliant, and probably better to be honest than a bunch of knobs. To boot, I was hoping I could do some really neat stuff with my remappings such as control the parameters of multiple instruments' effects at once (was looking forward to being able to mute/solo multiple tracks with a single trigger!), but since it seems Patterning does not respond to many CC messages at once in this way, and of course since the touchscreen is really, really fine and just great, I may just give up on this complicated project and devote that template on my Launch Control to different software.

    Still a great learning experience! Patterning is so great! Love it!

    What a long post! :blush:


    I took another look at this tonight and discovered something that makes me think what I want to achieve (a single controller with 16 knobs and 12 buttons mapped using MidiFlow using almost all CCs across 2 different channels) is possible -- without the wacky Bluetooth routed back into itself trick I wrote out above.

    Here's the important bit... I tested out every CC value 0 to 127 with Patterning 2 (bought it!) and observed: Patterning 1&2 will listen on its virtual port to CC values that are not CC006, CC032-63, and CC098-101. (It's not random!) If I have any of my knobs mapped to one of these values, Patterning will force itself to listen to my hardware and not to my remappings via its virtual port.

    I wonder why these CC values are problematic? Anyway, I should have just enough CCs across two channels to complete the template on my controller in order to control every MIDI-learnable function of Patterning 2 with hardware.

    All that being said, I learned an important lesson in doing this: Patterning is actually great for its interface, but now I can have both that UI and my controller's knobs, so I will. :smiley:

  • @espiegel123 said:
    There doesn’t seem to be a way to specify what MIDI inputs to listen to unless I missed it. So, I suspect, the problem is that Patterning gives preference to the MIDI from the hardware rather than MIDI Flow’s when it learns. I’d recommend adding a MIDI configuration panel where one can chooose what MIDI Sources Patterning will listen to.

    Is there one that I missed?

    I just ran into this today. Patterning 2 needs to allow us to specify which port it should use for receiving incoming MIDI notes.

    @benkamen Is that on the roadmap?

    Many thanks!

Sign In or Register to comment.