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*

1121315171862

Comments

  • No problem. Thanks for the quick fix!

  • @wim The scaling now works fine but I’m running into other issues. I hope you don’t mind if I pick your brain.
    First a bit about what I’m trying to do. I’m running my Touché 4 axis midi controller into Drambo ( in AUM) to control four separate parameters. This is working but Drambo doesn’t have controller settings for range and scale (yet) therefore my need for your Mozaic scaler script. My issue now is I can have one instance of Mozaic filtering the first cc fine. As soon as I try to setup the second one, the first one stops working. After lots of trying I got two working but trying to set up a third the first one stopped working again.
    My theory is since the Touché is sending out so much info it’s overwhelming Mozaic or Drambo or both. I’ve looked for AUv3 cc filters to no avail (plenty of iaas though). I’m thinking if it was possible to make a cc filter (only let cc x thru) script to put before each scaler or possibly add it to it so each scaler is getting only one cc at a time?
    This might not be the problem though. Any thoughts?

  • @hypnopad said:
    @wim The scaling now works fine but I’m running into other issues. I hope you don’t mind if I pick your brain.
    First a bit about what I’m trying to do. I’m running my Touché 4 axis midi controller into Drambo ( in AUM) to control four separate parameters. This is working but Drambo doesn’t have controller settings for range and scale (yet) therefore my need for your Mozaic scaler script. My issue now is I can have one instance of Mozaic filtering the first cc fine. As soon as I try to setup the second one, the first one stops working. After lots of trying I got two working but trying to set up a third the first one stopped working again.
    My theory is since the Touché is sending out so much info it’s overwhelming Mozaic or Drambo or both. I’ve looked for AUv3 cc filters to no avail (plenty of iaas though). I’m thinking if it was possible to make a cc filter (only let cc x thru) script to put before each scaler or possibly add it to it so each scaler is getting only one cc at a time?
    This might not be the problem though. Any thoughts?

    It's kind of hard to visualize your setup based on the description.

    It sounds like you're setting the Mozaic instances up in parallel. I think you want them to be in serial. Touché > Mozaic 1 > Mozaic 2 > Mozaic 3 > Drambo.

    The cc scaler script passes through all midi unaffected, except for the one cc you pick, which it scales. So, if you set them up in parallel the second and third instances are just going to repeat everything, resulting in tripling the cc messages sent, and overriding the scaling.

    The other approach would be to disable midi-through for all but the scaled value. That can be done by commenting out a single line of code:

      // All other midi  
      else
        SendMIDIThru
      endif
    

    Putting two slashes before SendMIDIThru, making it //SendMIDIThru will disable that behavior and make it so that only the scaled cc will be passed through. You should then be able to set up the scripts in parallel if you want.

    Setting them up serially retains the most flexibility though.

    Of course, this is all based on guessing how you have it set up. If I guessed wrong, then please sort me out. B)

  • I'm kind of procrastinating on some other things, so maybe I'll take a look at setting up a multi-cc version of this. Having one instance for each CC sounds like a pain. But first I want to be sure that the problem is understood.

  • Your guess is right. I was running them parallel in AUM. I’ll try serial and see what happens. A multi cc version sounds nice. Thanks.

  • Hmm, i have some experience with huge midi streams running through Mozaic. For performance testing of a plugin, i run 8 midi sequencers through my test script feeding 6 Au instruments. To max out the midi stream, i could feed 44 instances of MidiLFO, each sending 4 CC LFO (i used 16CCs per channel) before notes of the main sequences got lost. Additionally, the plugin script was doing some calculations...
    The total midi transmission rate was 42k bytes/sec, which means about 13000 CC/sec (plus the sequenced notes). This is on an iPad Pro 10.5 with IOS 13.x.

    So i don‘t think that Mozaic is overwhelmed - i also checked that MIDI Scaler v1.02 script and it doesn‘t do complex stuff when a CC arrives.

    I also remember that i once did a script to measure the current midi throughput. Perhaps the Touche is sending a hell lot more often than MidiLFO ?

  • _ki_ki
    edited June 2020

    Just notices that meanwhile there were other replies and wim might have detected the problem :)

    Parallel usage would not only quadruple the amount of CCs arriving at the instrument, they would also cancel each other out depending on the order of execution (if the scaled version of a CC arrives later than the unscaled coming through one of the other Scaler instances) - explaining your setup problems.

    In series it should work as expected

  • @wim @_ki It’s so funny that as I was setting this up that parallel looked like it would be the better way to go. Boy was I wrong. Learn something new everyday!🙂 Thanks guys.

  • wimwim
    edited June 2020

    @hypnopad said:
    @wim @_ki It’s so funny that as I was setting this up that parallel looked like it would be the better way to go. Boy was I wrong. Learn something new everyday!🙂 Thanks guys.

    Could be my fault ... Originally the script only passed through the CC selected. I thought better of that and changed it in the 1.02 version so that it passed everything through. I should have noted that change. I'm sorry if that ended up tripping you up.

  • I'm putting together a version 2 with multiple cc's. It will have an option to block or pass-through, and will also add channel handling so that each cc can optionally be related to a channel.

  • edited June 2020

    Just tried it in serial and it’s not working either. At least now it’s more consistent. I put 4 in on a track and set up the midi routing. With only the first one engaged it filters perfectly. When I unmute the second one the first one stops working. Works like there is no midi thru. The second one is blocking the output of the first one.

  • wimwim
    edited June 2020

    @hypnopad said:
    Just tried it in serial and it’s not working either. At least now it’s more consistent. I put 4 in on track and set up the midi routing. With only the first one engaged it filters perfectly. When I unmute the second one the first one stops working. Works like there is no midi thru. The second one is blocking the output of the first one.

    That doesn't seem right at all. I did do a super quick job on that last modification. Maybe I screwed something up. I'll do some testing.

    Are you sure you're using version 1.02?

  • Yes. It’s version 1.02.

  • @wim said:

    @hypnopad said:
    Just tried it in serial and it’s not working either. At least now it’s more consistent. I put 4 in on track and set up the midi routing. With only the first one engaged it filters perfectly. When I unmute the second one the first one stops working. Works like there is no midi thru. The second one is blocking the output of the first one.

    That doesn't seem right at all. I did do a super quick job on that last modification. Maybe I screwed something up. I'll do some testing.

    Are you sure you're using version 1.02?

    And ... how are you "unmuting"?

  • In AUM I’m muting/ bypassing by sliding the icon left and I’m unmuting by sliding the icon back to the right.

  • wimwim
    edited June 2020

    I just set up a test with four serially routed instances, and it is working as expected.

    Controller > Instance 1 (cc20)
    Instance 1 > Instance 2 (cc21)
    Instance 2 > Instance 3 (cc23)
    Instance 3 > Instance 4 (cc24)
    Instance 4 > MidiSpy

    All cc's are passing through as they should.

  • wimwim
    edited June 2020

    @hypnopad said:
    In AUM I’m muting/ bypassing by sliding the icon left and I’m unmuting by sliding the icon back to the right.

    That won't work. If they are in serial then the first one to be bypassed will break the flow and nothing will pass through.

    It's like a pipeline if you remove a section, the flow can't get through. If it does work, then they aren't in serial.

  • Is being able to mute / unmute individual cc's important?

  • @wim said:
    Is being able to mute / unmute individual cc's important?

    No.
    So sorry. I’m an idiot! I’ve figured out what I’ve been doing wrong. I had them set up parallel in the matrix thinking that was the only way to set them up. I was purely focused on how they were setup in the tracks. I assumed they were parallel when they were in separate tracks and serial when they were in the same track- flow from top to bottom. Sorry for all this rigamaroll. So after I set up the matrix what IS the preferred way of setting them up- separate tracks or all in one track?

  • @hypnopad said:

    @wim said:
    Is being able to mute / unmute individual cc's important?

    No.
    So sorry. I’m an idiot! I’ve figured out what I’ve been doing wrong. I had them set up parallel in the matrix thinking that was the only way to set them up. I was purely focused on how they were setup in the tracks. I assumed they were parallel when they were in separate tracks and serial when they were in the same track- flow from top to bottom. Sorry for all this rigamaroll. So after I set up the matrix what IS the preferred way of setting them up- separate tracks or all in one track?

    No problem. It caused me to backtrack and do some of the testing I should have done when I released after the last change. And also made me think about doing a multi-cc version, which I think is a much better approach.

    It doesn't matter if they're in separate or the same AUM track as long as the routing is right. I would put them in a single rack though since that reduces scrolling and groups them together by function.

    I'll probably complete the multiple cc version today though, so you might not need to bother.

  • Hi @hypnopad , the multiple CC version is available on PatchStorage. I didn't see any obvious bugs in my testing ... but will admit I wasn't as thorough as perhaps I should be. If you see any problems, please let me know.

    https://patchstorage.com/multi-midi-scaler/


    Multi MIDI Scaler v1.0 - Scale CC values and/or Note velocity.
    ▫️Press SHIFT to toggle between LEVELS and CONFIGURATION Mode
    ▫️The knobs are set in vertical pairs, one for each CC/Channel to scale. The last pair is used for note velocity scaling.
    ▫️Use CONFIGURATION mode to set the CC/Channel combination for each vertical pair of knobs
    ▫️Use LEVELS mode to set the beginning and ending limits for each CC/Channel combination
    ▫️If the top level is higher than the bottom level, then scaling will be reversed (higher input values will reselt in lower output values)
    ▫️In CONFIGURATION mode, All Thru means non-configured CC's are passed through. Block Other means only CC's configured are passed through.
    ▫️Notes are always passed through but will be scaled if levels are set in the last pair of knobs.
    ▫️All other MIDI, plus Sysex, is passed through.

  • Thanks so much! I’ll keep you informed.

  • awesome Wim!

  • @wim Works great! I’m having a blast with it.

  • Great. I'm really glad to hear it. 👍🏼

  • rcfrcf
    edited June 2020

    I'm really starting to enjoy using some of the generative midi apps like Autony. I'd love to be able to switch between four instances of Autony, with different scale settings etc on each, all feeding one midi instrument. This would make for more musically useful generative improvisation.

    Is it possible to set up a Mozaic script which would take the midi outputs from four instances of Autony (all on different midi channels) and output them selectively using Mozaic pads, to one selectable midi channel and destination? Usage example:

    Mozaic Pad 1 selects Autony 1 which is generating notes in D harm min scale.
    Receives on midi ch1 - outputs on midi ch1

    Mozaic Pad 2 selects Autony 2 which is generating notes in A insen pent scale.
    Receives on midi ch2 - outputs on midi ch1

    Mozaic Pad 3 selects Autony 3 which is generating notes in Bb Lydian mode.
    Receives on midi ch3 - outputs on midi ch1

    Mozaic Pad 4 selects Autony 4 which is generating notes in D min pentatonic.
    Receives on midi ch4 - outputs on midi ch1

    Note. Pressing a Mozaic pad latches it and unlatches the previous pressed pad.

  • _ki_ki
    edited June 2020

    You can use the Midi Matrix Switch script for this.

    • For the first pad configure the first pad to output channel 1, channel 2-4 to Mute and the others to UNUSED.
    • For the second pad, configure channel 1 to Mute, channel 2 to output to 1, 3+4 to Mute and the others to UNUSED.
    • Etc

    There shouldn‘t even be hanging notes when switching channels while notes are still held.

    BTW:

    The setup-procedure is a lot faster, if you just edit pad 1 and then for pad 2 use the ‚Edit Pad‘ knob to change to pad 2 and now do a ‚copy from pad 1‘. You then only need to change channel 1 and 2 and can copy this over to pad 3 etc

    Here the ‚final’ layout with pad 3 selected. Midi Matrix switch mutes channels 1,2,4 and outputs midi incoming on channel 3 to channel 1:

    Selecting another pad will show/activate its configuration

  • rcfrcf
    edited June 2020

    @_ki said:
    You can use the Midi Matrix Switch script for this.

    • For the first pad configure the first pad to output channel 1, channel 2-4 to Mute and the others to UNUSED.
    • For the second pad, configure channel 1 to Mute, channel 2 to output to 1, 3+4 to Mute and the others to UNUSED.
    • Etc

    There shouldn‘t even be hanging notes when switching channels while notes are still held.

    Thanks for that; silly of me not to spot that one. ;)

    Very useful examples; thanks again!

  • I’m trying to put together a script that has a velocity randomizer, (Min and max value) and a timing randomizer, (Min and max value) together. So that’s 4 knobs, but I want to be able to send multiple instruments through it on different midi channels. So with the 22 knob layout, I could have up to 5 midi tracks being randomized (vel and time) at different amounts, at one time, on midi channels 1-5. I’m a total beginner at coding. But i use these 2 Randomizes a lot on my work, and having to load 2 Mozaic instances to do this for 1 instrument is tedious and takes up a lot of space and DSP. So when I’m trying to do this to 3 instruments in one song you can see it easily gets out of control with all the instances of Mozaic.

    The only script I ever wrote was a simple midi echo. So I’m super entry level. I tried to some how combine the ‘velocity randomizer’ script, and the Bram ‘humanizer’ script Just to make one script that could do both for one instrument, but I don’t really know what I’m doing and it didn’t work. I’m wondering if someone out there could whip this up quite easily. Even if it only does it for one instrument I’ll be happy. It would cut my Mozaic instances in half. But if it could do up to 5 instruments on 5 midi channels, at once that would be freakin amazing. I’m sure others would find this valuable as well. Thanks.

  • @Poppadocrock said:
    I’m trying to put together a script that has a velocity randomizer, (Min and max value) and a timing randomizer, (Min and max value) together. So that’s 4 knobs, but I want to be able to send multiple instruments through it on different midi channels. So with the 22 knob layout, I could have up to 5 midi tracks being randomized (vel and time) at different amounts, at one time, on midi channels 1-5. I’m a total beginner at coding. But i use these 2 Randomizes a lot on my work, and having to load 2 Mozaic instances to do this for 1 instrument is tedious and takes up a lot of space and DSP. So when I’m trying to do this to 3 instruments in one song you can see it easily gets out of control with all the instances of Mozaic.

    The only script I ever wrote was a simple midi echo. So I’m super entry level. I tried to some how combine the ‘velocity randomizer’ script, and the Bram ‘humanizer’ script Just to make one script that could do both for one instrument, but I don’t really know what I’m doing and it didn’t work. I’m wondering if someone out there could whip this up quite easily. Even if it only does it for one instrument I’ll be happy. It would cut my Mozaic instances in half. But if it could do up to 5 instruments on 5 midi channels, at once that would be freakin amazing. I’m sure others would find this valuable as well. Thanks.

    Here's one you can try. It doesn't all live on a single screen, but has a few more features, and can randomize all 16 channels individually. Note: % chance of randomizing velocity and timing defaults to 0%. So, nothing will be randomized unless you increase those percentages. You can do this with the knobs or the XY pad.

    https://patchstorage.com/ranbo-multi-channel-note-humanizer/

Sign In or Register to comment.