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!

1626365676875

Comments

  • @wim said:
    I would not be interested in Mozaic coding for hire.

    Sure “Why sleep with the cow when you can sleep on the sheep?” - Farmer John

  • This thread is waaaay to long to try and find the answer to this question, so I'll just ask it here. Can I use Mozaic to create a simple knob/slider controller set for sending controls to hardware? Also, would I be able to have the hardware send controls back to Mozaic assuming the hardware is capable of sending its internal knob values? Goal is to have a simple MIDI mixer for my Octatrack/Digitone all in one place hosted in AUM along with some other stuff.

  • wimwim
    edited February 11

    @slicetwo said:
    This thread is waaaay to long to try and find the answer to this question, so I'll just ask it here. Can I use Mozaic to create a simple knob/slider controller set for sending controls to hardware? Also, would I be able to have the hardware send controls back to Mozaic assuming the hardware is capable of sending its internal knob values? Goal is to have a simple MIDI mixer for my Octatrack/Digitone all in one place hosted in AUM along with some other stuff.

    Yes, it should be able to do that. But it would pay to do your research first to see how involved that might be with the Octatrack/Digitone. If the OT accepts and sends MIDI cc's for the controls, that's pretty simple. If it doesn't respond to or doesn't send cc's it won't work. Or, if it uses sysex instead of cc's then it will be much more complicated.

  • @wim said:
    >
    Yes, it should be able to do that. But it would pay to do your research first to see how involved that might be with the Octatrack/Digitone. If the OT accepts and sends MIDI cc's for the controls, that's pretty simple. If it doesn't respond to or doesn't send cc's it won't work. Or, if it uses sysex instead of cc's then it will be much more complicated.

    The OT can both send and receive CCs so I know that's all good. Just need to make sure that Mozaic can replace Lemur on my Android phone for these basic tasks. Thanks!

  • wimwim
    edited February 11

    @slicetwo said:

    @wim said:
    >
    Yes, it should be able to do that. But it would pay to do your research first to see how involved that might be with the Octatrack/Digitone. If the OT accepts and sends MIDI cc's for the controls, that's pretty simple. If it doesn't respond to or doesn't send cc's it won't work. Or, if it uses sysex instead of cc's then it will be much more complicated.

    The OT can both send and receive CCs so I know that's all good. Just need to make sure that Mozaic can replace Lemur on my Android phone for these basic tasks. Thanks!

    yeh, it doesn't care what it's sending to or receiving from. it's all just midi.

  • @brambos

    Would it be possible or difficult to add something like this to mozaik

    Not as a realtime control, but @onload
    It could enable negative delays f.e

  • wimwim
    edited February 12

    Adding a MIDI (not Audio) delay such as that would be three lines of code. Well ... plus some code to implement a knob to adjust it. Mozaic doesn't process audio, so a pure audio offset isn't possible.

    Negative delay isn't possible. Mozaic can't process something that hasn't yet arrived ... at least until @brambos beats everyone to the punch with his implementation of Apple's little known and almost completely undocumented AU Flux Capacitor API ... but then we'll have to wait for hosts to support it too.

    (You could delay everything else but the channel you want to "negative" delay though.)

  • @Description
    All-MIDI Delay.
    Adjust the desired delay using the first knob. The default range can be changed in the code below if the knob is too sensitive.
    @End 
    
    @OnLoad
      default_delay = 0
    
      //reduce to make the adjusting knob less sensitive.
      default_range = 100
    
      if Unassigned init
        init = TRUE
        delay = default_delay
        range = default_range
        SetKnobValue 0, (TranslateScale delay, 0, range, 0, 127)
        LabelKnob 0, delay, { ms}
      endif
      Showlayout 4
    @End
    
    @OnMidiInput
      SendMIDIThru delay
    @end
    
    @OnSysex
      SendSysexThru 
    @End 
    
    @OnKnobChange
      if LastKnob = 0
        delay = Round (TranslateScale (GetKnobValue LastKnob), 0, 127, 0, range)
        LabelKnob 0, delay, { ms}
      endif
    @End 
    
  • wimwim
    edited February 12

    Ha! I forgot, I wrote this one some time back too: Multi Channel MIDI Delay. It lets you dial in a different delay for each channel or all at once.

  • @wim
    I thought there is a way for an AU to report its own latency to the host regardless of it being audio or midi processor.
    Does it mean all midi gen/fx always happen realtime and none of them can have latency?
    Something like "it has arrived and the host will compensate according to AUs reported latency"

  • wimwim
    edited February 12

    @0tolerance4silence said:
    @wim
    I thought there is a way for an AU to report its own latency to the host regardless of it being audio or midi processor.
    Does it mean all midi gen/fx always happen realtime and none of them can have latency?
    Something like "it has arrived and the host will compensate according to AUs reported latency"

    Mozaic isn't a host, so it doesn't receive that information.

    Hosts can do latency compensation if the plugins report it correctly (not all do). But if you think about it, that isn't really negative delay even in a host. The host is just delaying everything else to keep things in sync with the highest latency channel. But that's a side-point since Mozaic isn't hosting anything anyway.

  • wimwim
    edited February 12

    I suspect my wife may have an inside line on how to do this though. She is able to consistently finish my sentences before I even process the thought. Maybe we can put her in touch with @brambos.

  • @wim
    Yeah, you're right, I think :)
    I'll try to picture it in my head after some sleep.

  • Another question. I'm not looking to do my own coding, but I do want to be able to edit the channels of individual sliders or knobs within a patch so they all send to different devices. Is that easy to do without any coding experience? I used to use Lemur, which had lots of easy drag and drop modules that one could apply all the MIDI settings to individually. Unfortunately, I had it on my Android and don't want to drop another $25 for the iOS version, so hoping Mozaic can fill the need. If not, I may look at TouchOSC for $5.

  • @slicetwo said:
    Another question. I'm not looking to do my own coding, but I do want to be able to edit the channels of individual sliders or knobs within a patch so they all send to different devices. Is that easy to do without any coding experience? I used to use Lemur, which had lots of easy drag and drop modules that one could apply all the MIDI settings to individually. Unfortunately, I had it on my Android and don't want to drop another $25 for the iOS version, so hoping Mozaic can fill the need. If not, I may look at TouchOSC for $5.

    Yes it is easy to do.
    If you run through manual it should be straightforward to edit for most scripts.
    If you search for “midiout” in manual it should give you few pointers to follow.

  • @0tolerance4silence said:
    Yes it is easy to do.
    If you run through manual it should be straightforward to edit for most scripts.
    If you search for “midiout” in manual it should give you few pointers to follow.

    Most excellent. Thanks!

  • @slicetwo said:

    @0tolerance4silence said:
    Yes it is easy to do.
    If you run through manual it should be straightforward to edit for most scripts.
    If you search for “midiout” in manual it should give you few pointers to follow.

    Most excellent. Thanks!

    Sorry, instead of “midiout” search for “sendMIDI” :)

  • @slicetwo said:
    Another question. I'm not looking to do my own coding, but I do want to be able to edit the channels of individual sliders or knobs within a patch so they all send to different devices. Is that easy to do without any coding experience? I used to use Lemur, which had lots of easy drag and drop modules that one could apply all the MIDI settings to individually. Unfortunately, I had it on my Android and don't want to drop another $25 for the iOS version, so hoping Mozaic can fill the need. If not, I may look at TouchOSC for $5.

    Honestly, the coding for the interface elements is probably the bigger challenge for the beginning coder. It's nothing like drag and drop, and doing things like scaling knob sensitivity, rounding off to cc values that aren't decimals, labeling controls so you can see what numbers they're set to, etc. can be fairly involved. You may want to give MIDI Designer Pro 2 a look if you really don't want to have to dive into coding.

    On the other hand, I can't think of a more accessible place to ease into coding than Mozaic. And, by starting with scripts others have already written, then just modifying those, you can go far without too much brain wrackage.

  • @wim said:

    @slicetwo said:

    Honestly, the coding for the interface elements is probably the bigger challenge for the beginning coder. It's nothing like drag and drop, and doing things like scaling knob sensitivity, rounding off to cc values that aren't decimals, labeling controls so you can see what numbers they're set to, etc. can be fairly involved. You may want to give MIDI Designer Pro 2 a look if you really don't want to have to dive into coding.

    On the other hand, I can't think of a more accessible place to ease into coding than Mozaic. And, by starting with scripts others have already written, then just modifying those, you can go far without too much brain wrackage.

    Thanks for the insight. I have absolutely NO desire to code anything. Hell, making my templates in Lemur gives me a headache and is painfully boring most of the time. I like the idea of Mozaic since it can run inside of AUM so I don't need to leave that window, but I guess I may need to suck it up. If that's the case, I'll probably just buy Lemur since I already have templates built for that on my Android phone and tablet.

  • @brambos would you ever consider adding a second MIdI bus to Mozaic? It would make it much easier to interface with midi controllers without forcing the user to filter midi channels within AUM

  • @burns_audio said:
    @brambos would you ever consider adding a second MIdI bus to Mozaic? It would make it much easier to interface with midi controllers without forcing the user to filter midi channels within AUM

    Maybe MidiFire is what you need.
    On the recent update you can open Mozaic. Only missing are the exposed parameters.

  • edited February 18

    Bryan Appel, who made the metroplex script has put a new version out that includes a feature that I managed to hack into it

    https://patchstorage.com/metroplex/

    I made it so that you can 'sketch' the levels of the sliders on the XY pad - makes it dead quick to put a general idea down before drilling down into finer details, or as I quite like doing, tweaking on the fly as it runs...

    Bryan also restored the original gate and modulation functionality in the xy that I broke with my hackish methods - it's now operational on the controls screen.

    I'm dead happy that it even worked, even more so that he was happy to include it, I'm terrible with code stuff so great to have made something I wanted that other people can now have 😁

  • wimwim
    edited February 19

    Hi @brambos ... or anyone who knows.

    The documentation for SendMIDIBankSelect says the syntax is SendMIDIBankSelect <chan>,<value>,[<delay>]. The in-app syntax says it’s SendMIDIBankSelect <chan>,<MSB>,<LSB> which is correct?

    If it’s SendMIDIBankSelect <chan>,<MSB>,<LSB> (which appears to be the case) then I assume I should send 000 for the MSB and the bank number for the LSB?

  • edited February 19

    Question to all Mozaic users....

    How useful would you consider having a new Midi function for stopping all cued delay events on a given Midi Channel?

    I'm thinking something like this:

    StopDelay < chan >

    Description: immediately cancels any cued delay events for the indicated Midi Channel. Prevents any delay events scheduled for a Midi channel from being executed after the StopDelay function is called.

  • @horsetrainer Nice idea and would lead to simpler code for several use-cases :)

    If we currently want to control the delayed notes, we scrip devs need to implement the full chain of storing the event, triggering the event by using OnTimer, removing nites from our event list etc - i already coded this in several scripts and the topic is more for advanced programmers. But with such a command, many of these scripts could be done a lot easier and therefore be do-able for a wider range of script coders

    Your name-choice should probably be reconsidered, as it does not stop a delay but clears all queued events for a given channel. Maybe ClearDelayedEvents < channel >

  • Question to all Mozaic users....

    How useful would you consider having a new Midi function for stopping all cued delay events on a given Midi Channel?

    I'm thinking something like this:

    StopDelay < chan >

    Description: immediately cancels any cued delay events for the indicated Midi Channel. Prevents any delay events scheduled for a Midi channel from being executed after the StopDelay function is called.

    Yeh baby! That would save a literal shitload of code! I think I'd make it a bit more selective like: CancelEvent <channel>, [<type>], or maybe a few commands like CancelMIDINote <channel>, [<note>], CancelMIDICC <channel>, [<cc>], CancelSysex, etc. But great idea.

    BTW, @brambos, I am loving the SystemTime variable. I've been able to eliminate a lot of @OnTimer overhead with that one. I forget who's idea that one was, but thank you for adding it!

  • edited February 19

    @_ki said:
    @horsetrainer Nice idea and would lead to simpler code for several use-cases :)

    If we currently want to control the delayed notes, we scrip devs need to implement the full chain of storing the event, triggering the event by using OnTimer, removing nites from our event list etc - i already coded this in several scripts and the topic is more for advanced programmers. But with such a command, many of these scripts could be done a lot easier and therefore be do-able for a wider range of script coders

    Your name-choice should probably be reconsidered, as it does not stop a delay but clears all queued events for a given channel. Maybe ClearDelayedEvents < channel >

    Thanks ki,

    I like your name-choice better. :)

    As a coding beginner, I've been searching for a way to "ClearDelayedEvents".

    I think if Bram Bos is able to add this function to Mozaic, it might make the program more user-friendly for beginner programers (and allow less complex coding for more advanced programers too).

  • @wim said:

    Question to all Mozaic users....

    How useful would you consider having a new Midi function for stopping all cued delay events on a given Midi Channel?

    I'm thinking something like this:

    StopDelay < chan >

    Description: immediately cancels any cued delay events for the indicated Midi Channel. Prevents any delay events scheduled for a Midi channel from being executed after the StopDelay function is called.

    Yeh baby! That would save a literal shitload of code! I think I'd make it a bit more selective like: CancelEvent <channel>, [<type>], or maybe a few commands like CancelMIDINote <channel>, [<note>], CancelMIDICC <channel>, [<cc>], CancelSysex, etc. But great idea.

    BTW, @brambos, I am loving the SystemTime variable. I've been able to eliminate a lot of @OnTimer overhead with that one. I forget who's idea that one was, but thank you for adding it!

    Glad you like the idea. :)

    You guys can figure out the details.

    Hopefully Bram will like the idea too.

  • @wim I think a single CancelMidiNote <channel> [<note>] command (deleting scheduled NoteOn and NoteOffs) would suffice for most use cases. I didn‘t yet come across delayed CC sending and SendSysEx doesn‘t have the delay parameter.

    In comparison to my proposal, yours also covers covers the use-case that only a single note out of scheduled chord needs to be removed :)

  • wimwim
    edited February 20

    @_ki said:
    @wim I think a single CancelMidiNote <channel> [<note>] command (deleting scheduled NoteOn and NoteOffs) would suffice for most use cases. I didn‘t yet come across delayed CC sending and SendSysEx doesn‘t have the delay parameter.

    Those are good points. It might be good to have granularity for note on and note off as well now that I think about it though.

Sign In or Register to comment.