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.

MOZAIC - Create your own AU MIDI plugins - OUT NOW!

17880828384

Comments

  • edited December 2020

    @wim said:

    @_ki said:
    @wim Cool idea 👍🏼 and sorry i forgot about the Hypno Sequence. It also was missing on the Mozaic script list on the wiki, so i just added it.

    Thanks for adding it.

    Do you prefer we update the list ourselves when we post a script, or to maintain the page yourself? Either way is fine with me. B)

    Just want to say.. Big thanks for the Simple Scaler script..

    Nice..

  • I spent a lot of yesterday evening playing around with Seq8 and a Launchpad Mini & absolutely loved it! Oddly, though, when I use other MIDI generators (including other instances of Mozaic) it resulted in strange timing anomolies where it would play a bar through once and then would play cell 1 and 2 of the bar the second time around before starting the bar again. It produces a crazy syncopated rhythm that's a time signature I can't begin to fathom. Anyone have any ideas why that might be the case? The only changes I made to the script was changing the note values to correspond to Ruismaker.

  • I'd like to make a script, but it's my first attempt and after 20 minutes with the manual and some frustration, I can't find out how to do this thing. I could spend more time, but my motivation to do music - at all - is low at the moment so I'd rather not spend a lot of time learning this right now, if at all possible.

    Maybe there's already something on patchstorage, but I'm finding it hard to find.

    So... I'd like to have one button on a hardware controller mapped to CC20 that will send a value of 0 when pressed the first time, 1 the second time, 2 the third time etc. So increasing by 1 each time.

    The reason for this is that Digistix has thankfully added the ability to select patterns by midi control. But it's specifically a CC20 value per pattern, and what I'd like is an 'advance to next pattern' control, so that there's only one button to hit in a live performance.

    Probably it would be good to add a decrease button too, but if I could see the script for the increase version, hopefully I could work that out myself.

    Anyone know of such a script, or at least something similar that I could attempt to wrestle into shape?

    thank you!

  • wimwim
    edited December 2020

    @SimonSomeone said:
    I'd like to make a script, but it's my first attempt and after 20 minutes with the manual and some frustration, I can't find out how to do this thing. I could spend more time, but my motivation to do music - at all - is low at the moment so I'd rather not spend a lot of time learning this right now, if at all possible.

    Maybe there's already something on patchstorage, but I'm finding it hard to find.

    So... I'd like to have one button on a hardware controller mapped to CC20 that will send a value of 0 when pressed the first time, 1 the second time, 2 the third time etc. So increasing by 1 each time.

    The reason for this is that Digistix has thankfully added the ability to select patterns by midi control. But it's specifically a CC20 value per pattern, and what I'd like is an 'advance to next pattern' control, so that there's only one button to hit in a live performance.

    Probably it would be good to add a decrease button too, but if I could see the script for the increase version, hopefully I could work that out myself.

    Anyone know of such a script, or at least something similar that I could attempt to wrestle into shape?

    thank you!

    What is the highest number you’d want it to increase to? And would you want it to start over at zero when it goes past that number? Also, what would be coming from the button on the controller? Some buttons send a note or CC at 127 when pressed down and zero when released. Can you be more specific about what will be coming from this button.

    I have a sample script ready to go except for those details. Actually, I really only need details about what would be coming from the hardware controller. The rest is easily customizable in the script already.

  • @ wim, that sounds fantastic! I'm sure I'll be able to learn from it too.

    The questions:

    This is mainly for Digistix which has 24 available patterns, so I guess 24 makes sense.

    Starting over at 0 seems a logical thing to do if it goes past.

    The 3rd question, is that related to toggle or momentary? I can devote a specific controller button (probably a nanopad modified for foot use) to either, I think by default I have most buttons set to toggle, so it's only 1 value on press, and nothing on release. Does that make sense?

    Thanks so much!

  • wimwim
    edited December 2020

    @SimonSomeone said:
    @ wim, that sounds fantastic! I'm sure I'll be able to learn from it too.

    The questions:

    This is mainly for Digistix which has 24 available patterns, so I guess 24 makes sense.

    Starting over at 0 seems a logical thing to do if it goes past.

    The 3rd question, is that related to toggle or momentary? I can devote a specific controller button (probably a nanopad modified for foot use) to either, I think by default I have most buttons set to toggle, so it's only 1 value on press, and nothing on release. Does that make sense?

    Thanks so much!

    No problem. Here's a basic sketch. I had to make some assumptions about how you need it to work, so it may not be what you want. It's somewhat unusual to have buttons that only send one value only on press, and nothing on release. So, if you find things working oddly, you might want to check the output from your controller using midiSpy to be sure it's sending what you describe.

    I'm happy to help with modifications if needed:

    @Description
    Increments or decrements a midi cc by one no matter which cc value was received. Set upCC to the cc# that you want to increase and downCC to the one you want to decrease. If "wrap" is YES, the value will reset to zero when it hits "ccmax". Set wrap to NO if you just want it to stop at the maximum value. Decrease will always stop at zero. You can get rid of the decrease code if youi don't need it.
    @End
    
    @OnLoad
      controlCh = 0
      upCC = 20
      downCC = 21
      outCh = 0
      outCC = 20
      ccmax = 24
      oldvalue = 0
      wrap = YES
      ShowLayout 0  
      if Unassigned init
        init = YES
        ccvalue = 0
      endif  
    @End
    
    @OnMidiCC
      if (MIDIChannel = controlCh) and (MIDIByte2 = upCC or MIDIByte2 = downCC)
        if MIDIByte2 = upCC
          Inc ccValue
        elseif MIDIByte2 = downCC
          Dec ccValue
        endif
    
        if wrap = YES
          ccValue = ccValue % ccmax
        else
          ccValue = Clip ccValue,0,ccmax
        endif
    
        SendMIDICC outCh,outCC,ccvalue
    
      else
        // comment or remove the line below if you don't want to pass other MIDI CC's
        SendMIDIThru
      endif
    @End
    
    @OnMidiInput
      // remove the lines below or the whole @OnMidiInput event if you don't want pass-thru.
      if MIDICommand <> 0xB0
        // MIDICommand 0xB0 (cc) is already handled above.
        SendMIDIThru 
      endif
    @End
    
    @OnSysex
      // remove this even t if you don't want to pass sysex messages thru
      SendMIDIThru
    @End
    
  • Thanks so much, that looks super complicated!

    I'll have a crack at it!

  • @SimonSomeone said:
    Thanks so much, that looks super complicated!

    I'll have a crack at it!

    More than half of it isn’t strictly necessary, but just put in there to make it easier to configure. If you take it in small bits starting with the @OnMidiCC event, I think you’ll be able to grasp it.

    That is, if you want to. If scripting ain’t fun for you, just load it and run it, and then let me know if it should work differently.

  • edited December 2020

    This is great, thanks! It works very well, despite me leading you astray slightly with that foot pedal message question.

    I made a setting for a nanopad button to send CC20. in toggle mode it sends 127 on press and 0 on release. In momentary mode it alternates between 127 and 0 on each press. (I may have momentary and toggle reversed, it could be the other way around). Anyay, currently it's sending alternating 127 and 0 values on each press, nothing on release, and it seems to be working really well.

    I also tried sending the messages from LK which worked too.

    I'll probably put the decrement button on a desktop pad somewhere to save the foot pedal controls.

    I really appreciate this @wim !

    Here's what it does - while I'm playing guitar I can hit the footswitch and the patterns change

  • Hey @SimonSomeone, cool, glad it works. If you get into a situation where anything is sent on release, some logic will need to be added to filter out those release values. That’s an easy fix though.

  • Updated..

  • Is it possible to use mozaic to send midi from ipad to windows?

  • @Bele said:
    Is it possible to use mozaic to send midi from ipad to windows?

    Mozaic doesn’t choose the destination. The host you are running it in does. If your host sees your Windows machine, route Mozaic’s output to that destination.

  • @espiegel123 said:

    @Bele said:
    Is it possible to use mozaic to send midi from ipad to windows?

    Mozaic doesn’t choose the destination. The host you are running it in does. If your host sees your Windows machine, route Mozaic’s output to that destination.

    I found a video on youtube which explains that, my bad.

  • @espiegel123 said:
    Mozaic doesn’t choose the destination. The host you are running it in does. If your host sees your Windows machine, route Mozaic’s output to that destination.

    This sounds like a job for... (wait for it)... Drambo.

    Drambo can load and control AUv3 MIDI FX apps like Moziac. Maybe someone will provide
    a tutorial video for the less technically sophisticated. Routing Drambo MIDI to windows and other external devices. @SoundForMore maybe?

  • wimwim
    edited January 8

    The core issue is getting iOS MIDI to a Windows machine, not anything to do with Mozaic or Drambo.

    Drambo is no different than any other host and doesn't make the task of routing any easier or more powerful. If you can get the Windows PC to show up as a midi destination in a host, you can choose it as a midi destination in that host, including Drambo.

    Getting midi going between a Windows PC and iOS is a subject in and of itself. There are tutorials on this and more than one thread to be found on this forum. They're much easier to find if you don't get host-specific in your searches.

  • The user and all related content has been deleted.
  • @SoundForMore said:
    I agree, happy to do a tutorial if required.

    @Brambos made the decision to allow Moziac to run as a standalone for "file editing" purposes but it doesn't send any MIDI out or even run the scripts created. It must be loaded into a Host for MIDI configuration to external apps and hardware.

    I think loading Moziac into Drambo might offer some interesting possibilities worth creating a tutorial for... probably a small audience but still a motivated one.

    LK in Drambo also seems like an interesting combination to consider since it might create some interoperability with Ableton and Drambo for Live performances.

    Now that Apple's MacBook's are going to support some level of Mac and IOS interoperability
    we might see some interesting workflows coming out of those possibilities too. The "out of the box experience" videos are showing up on YouTube and the performance is amazing
    or a laptop without a fan. 2021 will make me buy some new hardware, for sure and it probably won't be an iPad. I just need someone to go first and test some of my favorite apps
    for me. I know the developer gets to decide if an app should indicate support for the MacBook user. But for a brief moment in time... there are ways to import IOS apps from
    backups. By the time I'm in, I expect that will be stopped.

  • Sorry if this is way off but could I use Mozaic as a thing between the UNO synth app that exposes the engine miles more than is available on the hardware and a midi controller? Basically adding midi learn functionality to the app? I mean, clearly, it's a niche requirement, midi learn, which is why IK never put it in the app.

  • @ashh said:
    Sorry if this is way off but could I use Mozaic as a thing between the UNO synth app that exposes the engine miles more than is available on the hardware and a midi controller? Basically adding midi learn functionality to the app? I mean, clearly, it's a niche requirement, midi learn, which is why IK never put it in the app.

    Yes, that's certainly possible. The easiest way would be to use the view with all the knobs.
    Make each knob control a (MIDI?) parameter on the UNO. You can make those assignments fixed to keep it easy.
    If you need more knobs you can use the Shift-key to effectively double the number of available knobs.

    Next, you use the MIDI learn feature of AUM to assign your external MIDI controller to the AU Parameters of those knobs however you like.

    I suppose that should be a fairly simple setup and it will let you control the UNO both from your iPad touch-screen and from your MIDI controller.

  • Great stuff, thanks @brambos

  • Dear all,
    I've just written my first, small, Mozaic script. Basically it assembles and sends a Sysex message that programs a small Arduino controller (1 pot + 1 button) in order to change its parameters.
    With the first five knobs I set MIDI channel, CC and button behavior. The actual value is shown in the label of the other 5 knobs. A touch of the pad sends the Sysex. It works flawlessly.
    Wha I'd like to achieve now, is the possibility to limit the values of the knobs that control the MIDI channels (1/16) and the one that control the behavior (0/1). Is there a possibility like this?

    My code is this:

        @OnLoad
          LabelKnob 0, {Pot Ch}
          LabelKnob 1, {Pot CC}
          LabelKnob 2, {Butt Ch}
          LabelKnob 3, {Butt CC}
          LabelKnob 4, {Push/Latch}
          SetKnobValue 0, 1
          SetKnobValue 1, 39
          SetKnobValue 2, 1
          SetKnobValue 3, 40
          SetKnobValue 4, 0
          LabelKnob 5, GetKnobValue 0
          LabelKnob 6, GetKnobValue 1
          LabelKnob 7, GetKnobValue 2
          LabelKnob 8, GetKnobValue 3
          LabelKnob 9, GetKnobValue 4
        @End
    
        @OnKnobChange
          LabelKnob 5, Round GetKnobValue 0
          LabelKnob 6, round GetKnobValue 1
          LabelKnob 7, round GetKnobValue 2
          LabelKnob 8, round GetKnobValue 3
          LabelKnob 9, round GetKnobValue 4
        @End
    
        @OnPadDown
          PotCh = GetKnobValue 0
          PotCC = GetKnobValue 1
          ButCh = GetKnobValue 2
          ButCC = GetKnobValue 3
          ButSt = GetKnobValue 4
          Syx = [0x14, PotCh, ButCh, PotCC, ButCC, ButSt]
          SendSysex Syx, 6
        @End
    

    Thank you in advance,
    Alessandro

  • @Keyb said:
    Dear all,
    I've just written my first, small, Mozaic script. Basically it assembles and sends a Sysex message that programs a small Arduino controller (1 pot + 1 button) in order to change its parameters.
    With the first five knobs I set MIDI channel, CC and button behavior. The actual value is shown in the label of the other 5 knobs. A touch of the pad sends the Sysex. It works flawlessly.
    Wha I'd like to achieve now, is the possibility to limit the values of the knobs that control the MIDI channels (1/16) and the one that control the behavior (0/1). Is there a possibility like this?

    Check out TranslateScale. For instance, to limit knob 5 to whole numbers between 1 and 10:

    @OnKnobChange
      LabelKnob 5, Round (TranslateScale, (GetKnobValue 0), 0, 127, 1, 10)
      // ...
    @End
    

    When you get around to refining your code, you can make it somewhat more readable and reduce errors by assigning knob movements to variables rather than relying on GetKnobValue all over the place. This gets more important as you add complexity such as in the TranslateScale formula above. If you assign that transformation to a variable, then you can just use that variable in your other events rather than replicating the formula everywhere.

    @OnKnobChange
      PotCh = Round (TranslateScale, (GetKnobValue 0), 0, 127, 1, 10)
      LabelKnob 5, PotCh
      //...
    @End
    
    @OnPadDown
      // No need to set PotCh anymore...
    @End
    

    On another subject - I've had troubles with the Arduino processing all my sysex messages if I send them too fast. If you start to get unexpected problems at some point, that could be the cause. I eventually switched to CC messages instead so that I could add some delay between them.

  • @wim Thank you for taking the time to reply and to point me in the right direction. I modified the code as follow:

    @OnLoad
      LabelKnob 0, {Pot Ch}
      LabelKnob 1, {Pot CC}
      LabelKnob 2, {Butt Ch}
      LabelKnob 3, {Butt CC}
      LabelKnob 4, {Latch/Push}
      PotCh = 1
      PotCC = 15
      ButCh = 1
      ButCC = 16
      ButSt = 1
    
      SetKnobValue 5, PotCh
      SetKnobValue 6, PotCC
      SetKnobValue 7, ButCh
      SetKnobValue 8, ButCC
      SetKnobValue 9, ButSt
      LabelKnob 5, PotCh
      LabelKnob 6, PotCC
      LabelKnob 7, ButCh
      LabelKnob 8, ButCC
      LabelKnob 9, ButSt
    @End
    
    @OnKnobChange
      PotCh = round (TranslateScale (round GetKnobValue 5), 0, 127, 1, 16)
      PotCC = round GetKnobValue 6
      ButCh = round (TranslateScale (round GetKnobValue 7), 0, 127, 1, 16)
      ButCC = round GetKnobValue 8
      ButSt = round (TranslateScale (round GetKnobValue 9), 0, 127, 0, 1)
      LabelKnob 5, PotCh
      LabelKnob 6, PotCC
      LabelKnob 7, ButCh
      LabelKnob 8, ButCC
      LabelKnob 9, ButSt
    @End
    
    @OnPadDown
      Syx = [0x14, PotCh, ButCh, PotCC, ButCC, ButSt]
      SendSysex Syx, 6
    @End
    

    and it's now working as I was hoping!

    Thank you!!!

  • Cool, looks good @Keyb. It's interesting - I've been working with Mozaic to send commands to an Arduino type controller myself. It's great to have a way to do things on the Arduino from iOS through Mozaic.

  • Indeed it opens a wide scenario of possibilities. Now that I've gone iPAD only even for my live performances, it's nice and handy to have to possibility to change the controller settings on the fly.

  • @brambos (or anyone else I suppose)
    Are there going to be more layouts for this?

    Just picked this up, without looking too much into it, and was under the mistaken idea that you could create your own layouts. Turns out there are only 5 total??? :/ Seems rather paltry, though I realize the ability to code what the layouts do is where the function and versatility lie.

    Still.... Surely there could be some more layouts added....

    IAP maybe?? I would gladly purchase some layout packs. :)

  • @Dunamis said:
    @brambos (or anyone else I suppose)
    Are there going to be more layouts for this?

    Just picked this up, without looking too much into it, and was under the mistaken idea that you could create your own layouts. Turns out there are only 5 total??? :/ Seems rather paltry, though I realize the ability to code what the layouts do is where the function and versatility lie.

    Still.... Surely there could be some more layouts added....

    IAP maybe?? I would gladly purchase some layout packs. :)

    You could always use MIDI Designer Pro to make your own layouts and fire the CC control values at a Mozaic Script running in the background. That’s if you still need Mozaic once you’ve done the MIDI Designer Pro stuff.

  • @Dunamis said:
    @brambos (or anyone else I suppose)
    Are there going to be more layouts for this?

    Just picked this up, without looking too much into it, and was under the mistaken idea that you could create your own layouts. Turns out there are only 5 total??? :/ Seems rather paltry, though I realize the ability to code what the layouts do is where the function and versatility lie.

    Indeed, Mozaic wasn't meant to be a "create your own MIDI controller app". In that case I would agree with your observation that more layouts or a way to roll your own would be expected. However, the prefab-GUIs are merely a secondary feature of the app. Its main purpose is to create highly specific or personalised MIDI handling utilities, and the prefab UIs are just there to allow quick and easy parameter settings for these scripts. :)

Sign In or Register to comment.