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!

11112141617102

Comments

  • edited May 2019

    @StartOfDreams

    would be really great, if some devs would put heads together and create universal API - easy to adopt - for saving and sharing AU patches between users. With tagging, charts, searching by name, genre, author, etc... stuff like that.

    Like universal patch browser,with centralised database server for easy sharing between users, which will bring some standards into AU plugins patch management wild west...

    "PatchBus" .. maybe side-project for @Michael :-))

    @EndOfDreams

  • Since the spirit of the app is to make things accessible to a beginner, simplicity would seem to be the better choice.

    I'm really enjoying learning and playing around with MOZAIC. I have some scripting experience from way back, so it's making good sense to me, but with the very nicely written Programming Manual, anyone wanting to learn should be able to get into it. Once learned, I'd expect scripters like me would want to see user functions where we can pass variables and get back a result. Buttons that light up for switching things on and off might be nice, as would drop down lists, labeled pads, and... so much for simplicity. :)

  • edited May 2019

    @lovadamusic said:
    Since the spirit of the app is to make things accessible to a beginner, simplicity would seem to be the better choice.

    I'm really enjoying learning and playing around with MOZAIC. I have some scripting experience from way back, so it's making good sense to me, but with the very nicely written Programming Manual, anyone wanting to learn should be able to get into it. Once learned, I'd expect scripters like me would want to see user functions where we can pass variables and get back a result. Buttons that light up for switching things on and off might be nice, as would drop down lists, labeled pads, and... so much for simplicity. :)

    Yeah.. I'm vigilant for scope-creep. But adding things that are just really useful will make it into the language. Such as user-defined functions and some more array manipulation functions.

    Array initializers and array copying are now working...

    source = [1,2,3,4,5,6]
    CopyArray source, destination, 6 // copy the first 6 cells of array source into array destination
    
  • @brambos
    Take the easiest route
    You need to be making scripts and more au entertainment
    Haven't spent much time yet with mosaic, but I look at it...that as time passes there could be hundreds of scripts, which equal hundreds of free au's...im in.
    Keep up the fantastic work

  • Another thing that I would be wary of because it's easy to screw up, but which would probably aid an ecosystem, would be some kind of package manager for useful functions.

    I also feel that people are going to want more GUI options. I've only written to scripts so far, and both times I really felt the limitations of only having 5 layouts...

    If nothing else, I would really like better output options. LEDs, a text area, something. Oh, and labels for knobs would be useful. When you have 10 knobs it's kind of nice to know that knob 4 is for Beat divisions, while knob 5 is probability...

  • @cian said:
    Another thing that I would be wary of because it's easy to screw up, but which would probably aid an ecosystem, would be some kind of package manager for useful functions.

    I also feel that people are going to want more GUI options. I've only written to scripts so far, and both times I really felt the limitations of only having 5 layouts...

    If nothing else, I would really like better output options. LEDs, a text area, something. Oh, and labels for knobs would be useful. When you have 10 knobs it's kind of nice to know that knob 4 is for Beat divisions, while knob 5 is probability...

    You can already label each knob/slider separately. But I really want to stay away from adding a wysiwyg GUI editor or such.

  • I just went to the Wiki page for the Mozaic app:

    https://wiki.audiob.us/mozaic_plugin_engine

    And I opened the User Manual for the App:

    http://ruismaker.com/wp-content/uploads/Mozaic.pdf

    Then I open a couple scripts using a text editor and they start with some non-character data but the script was easily readable after a few lines of binary details.

    It's pushed me into "must have" fan category. Check it out if you're on the fence.
    If it convinces you it's not for you just remember you never need to write a line of script to
    learn to load and run one.

    I think we'll see some pretty amazing code creations using it over the next
    few years.

    This might also make a fun app to teach people programming skills... time to get it and
    try the dreaded screen keyboards and my Bluetooth Keyboards.

  • Well... that was a pretty good start doing something I try to avoid: screen editing text.
    Everything is done to assist.

    I added some more text to the Mozaic editor on the iPad:

    @OnLoad
      note = 60
      chan = 0
      velocity = 80
      optionaldelay = 1000
      SendMIDINoteOn chan, note, velocity
      SendMIDINoteOff chan, note, velocity, optionaldelay
    @End
    

    I had Mozaic running in AUM to feed Midi to a synth and when I upload the script I hear a Middle C which is a decimal 60. I like starting with anything that works and adding more lines as I get ideas. The longest words are Functions and the editor pops them up as choices after typing a few letters.

  • this thing is going to be BIG. Damn, can i buy some stockmarket shares of Ruismaker company :-)) ?? Like really, i feel like this is beginning of something big. Really big.

    @brambos
    You can already label each knob/slider separately.

    Labels for pads would be ne handy too, you can put text " top center" or even "center center"...

  • @brambos said:
    You can already label each knob/slider separately. But I really want to stay away from adding a wysiwyg GUI editor or such.

    I don’t mean a label for the current value of the knob but a label for the knob itself.

    For example I can show the current volume for a label but there’s no way for me to designate that it’s a volume knob

  • edited May 2019

    @brambos Hey, I've wanted to have just a few switch buttons that can send midi cc to use kinda like an on/off switch assigned to different tasks. Nothing complicated or fancy. I can do what I want to do using KB1's dials. They're obviously designed to be turned like a dial, but if you tap the top quickly, they can send like a switch.

    I'd rather have some actual button switches. Kinda like the 8 buttons you get with the nanoKeystudio bluetooth unit.

    If all I wanted was 3 or 4 buttons that were labeled that I'd just hit for on/off and loaded as an AU window that I could have open to quickly turn stuff on/off... can I do that easily enough with Mozaic? All I see in the sample images are dials, sliders and pads. But, I'm assuming the pads could be used as button switches too?

  • @skiphunt Yes, pads can be used as switches and can also simulate velocity trigger. Some great examples of pads being used such as @wim excellent MIDI echo script.

    From the manual...

    Trigger Pads The 16 pads can obviously be used as triggers, but also be 'misused' to display basic status information. Each of them can be made to light up via script: there are functions for making them flash, but also for switching the background LED on and off (i.e. a latch mode).

    When the user triggers a pad by tapping on it, a velocity is derived from it (by looking at how close to the center of the pad the tap was placed). The following example shows how to use these mechanisms. We switch Latch mode on the pad on and off when the user taps it with a high velocity (so: near the center of the pad).

  • BTW, the example code in that section of the manual can be simplified by the addition of the PadState padnum function that came later.

    @OnLoad
      ShowLayout 2 // all pads
      // initialize all latch states to off
      for pad = 0 to 15
        state[pad] = NO
        LatchPad pad, NO
      endfor
    @End
    @OnPadDown
      if LastPadVelocity > 100
        // change the state of the pad that was tapped
        if state[LastPad] = NO
          state[LastPad] = YES
        else
          state[LastPad] = NO
        endif
        LatchPad LastPad, state[LastPad]
      endif
    @End
    

    Can be shortened to:

    @OnLoad
      ShowLayout 2 // all pads
      // initialize all latch states to off
      for pad = 0 to 15
        LatchPad pad, NO
      endfor
    @End
    @OnPadDown
      if LastPadVelocity > 100
        // change the state of the pad that was tapped
        LatchPad LastPad, NOT (PadState LastPad)    
      endif
    @End
    
  • @wim said:
    BTW, the example code in that section of the manual can be simplified by the addition of the PadState padnum function that came later.

    Ha, that’s awesome. I can’t believe I just made my own visual metronome with the blinky blinky example 🙂

  • Sorry if this has been answered already, but can Mozaic handle SysEx?

    I don’t mean device dumps, just short messages.

    I’m currently using StreamByter for this purpose, but interested in trying Mozaic as well.

  • edited May 2019

    @wim said:
    Here’s a kind of work in progress. Only lightly tested, so could be buggy...

    There are knobs to control eight cc values. Pressing one of the four pads stores a snapshot of the knob values. The pad lights up when a snapshot is stored in it. Touching a lit pad removes the snapshot.

    The XY pad can be used to morph between the snapshots. The outside corner of each quadrant sets the knobs to 100% of the snapshot value.

    The cc’s assigned to each knob can be changed by holding down the shift button while turning the knob. The bottom-right button changes the midi out channel.

    Except for storing the snapshots, this can be run via hardware controller or apps such as Rozeta LFO using AU parameters and MIDI learn.

    Like I said, it’s a work in progress. It could probably use some refinement.

    https://www.dropbox.com/s/y0njcxn6nvi4lcw/Midi CC Morph Pad.mozaic?dl=0

    Wow!!!! Just... wow...

    This is exactly what I’d been wanting for the last few weeks and didn’t think anything existed like this on iOS.

    This patch is fantastic for doing a kind of ‘Alchemy’ style snapshot saving and morphing thing... but with absolutely any synth.

    Have been playing with it pointed at Gadget synths over the last two hours and it just works SO well!!! And is super simple to set up.

    Also I love the fact I can very simply save the session in AUM and it recalls the exact snapshots I’ve set.

    It brings some of those somewhat basic Gadget synths back to life...

    Thanks so much @wim and of course @brambos

    Not sure I’ll ever get round to programming anything in this app but it’s worth it (and I just bought it tonight) just for this one script.

    Only 1 tiny request @wim - can that 9th knob that currently does nothing be utilised to give us 9 different CC’s (not just 8) to affect? Or is 8 a much simpler number for your code to work with?

    Edit: And one final idea... how about holding shift and tapping a pad instantly randomises all 8 cc values and assigns the snapshot of the random values to the pad? Might be a pretty cool extra?

  • edited May 2019

    I've been thinking about Samu's post recently about scripting audio slicing and the kinds of scripts I've dreamt about. The one experience that I'd love to replicate at the AU host level is the iWavestation random button. I'm imagining a random button that loads random patches in a sampler like Audiolayer or Reslice or chameleon; randomizes 3-4 different scaled note sequences and timing to create polyrhythms; and perhaps randomizes effects patches (this may be a stretch). Ideally I could half or double each sequence to create different patterns. Is this sort of thing out of reach with Mozaic?

  • Hi @Matt_Fletcher_2000 It’s just a matter of changing a few numbers in the script to change the number of cc’s, but I was kinda holding that knob back to make a knob that would scale all the knobs up or down proportionately. My brain power fizzled before I got that working (damn algebra weakness again).

    Another idea: if I assign a Cc to the X and Y values you could midi learn one to another (or multiples) and have effectively as many cc’s as you want. Another way to go would be to make it so you can flip back and forth to the all-knobs view to give access to more cc’s

    I did think about adding a randomizer. I could easily do that with a long press on the shift button.

    I’ll think about your ideas. I kind of want to keep it from getting too complicated though.

  • edited May 2019

    @cian said:

    @brambos said:
    You can already label each knob/slider separately. But I really want to stay away from adding a wysiwyg GUI editor or such.

    I don’t mean a label for the current value of the knob but a label for the knob itself.

    For example I can show the current volume for a label but there’s no way for me to designate that it’s a volume knob

    Right, something like that would help making things less cryptic. What you can do already now is to set the label to the concatenation of the two, e.g ”Vol 97”.. However, you quickly run out of characters forcing you to heavily abbreviate things, making it cryptic for the user.

  • Maybe a Micheal can set up something like KVR’s Download..

    https://www.kvraudio.com/banks.php

  • @RajahP said:
    Maybe a Micheal can set up something like KVR’s Download..

    https://www.kvraudio.com/banks.php

    I think I’m going to use Patchstorage.com for this :)

  • @wim said:
    BTW, the example code in that section of the manual can be simplified by the addition of the PadState padnum function that came later.
    Can be shortened to:

    Good catch! I’ll update that bit!

  • Hmm, I’ll grab Mozaic as soon as I get me some more gift-cards...

    How does one grab the ‘note lenght’(ie. how long the note was held to avoid stuck notes?).
    This could be useful for creating a realistic midi-echo with feedback options.

  • @brambos Thanks for the comma fix!

  • @Samu said:
    Hmm, I’ll grab Mozaic as soon as I get me some more gift-cards...

    How does one grab the ‘note lenght’(ie. how long the note was held to avoid stuck notes?).
    This could be useful for creating a realistic midi-echo with feedback options.

    2 ideas come to mind.

    (1) Generating MidiOn's and MidiOff's at even intervals from the source note will create echos of the note with the same lengths between On and Off. If you echo the On's and echo the Off's every note will have the same length in each echo. There are some echo scripts available to see how they did it.

    (2) I suppose you could calculate the time interval between On and Off from the Event details and us subtraction to arrive at the length of the note in a wall clock sense and then apply that time to the Host's BPM to arrive at a musical "note value".

    There are some echo scripts available to see how they did it.

    I looked at one of @wim's scripts and he adds a delay for every echo and has some logic to
    stop a note if the delay is shorter than the first echo and extra logic to stop the last echo.
    But it's a careful implementation of option #1.

    His delay value is tied to some math around a PPQN knob and a Multiplier Knob so his echoes are based upon fractions of the Host's BPM settings. Thanks for asking the question.
    It made me learn something new and I found code that works.

  • edited May 2019

    @Samu said:
    Hmm, I’ll grab Mozaic as soon as I get me some more gift-cards...

    How does one grab the ‘note lenght’(ie. how long the note was held to avoid stuck notes?).
    This could be useful for creating a realistic midi-echo with feedback options.

    As expected there are many different ways to go about. I would use a counter to count the number of metronome pulses between note on/off. Something like this:

    @OnLoad
      counter = 0
      FillArray notestarts, 0
      SetMetroPPQN 48 // if it's good enough for Cubasis...! :-)
    @End
    
    @OnMetroPulse
      Inc counter
    @End
    
    @OnMidiNoteOn
      notestarts[MIDINote] = counter
    @End
    
    @OnMidiNoteOff
      length = counter - notestarts[MIDINote]
      Log {Length of Note }, MIDINote, { = }, length
    @End
    

    You could also use this as a starting point for a MIDI looper script.

  • @wim said:

    I’ll think about your ideas. I kind of want to keep it from getting too complicated though.

    Absolutely!!!

    It’s pretty much perfect as it is.

    [If you do a randomiser then please, please consider being able to randomise (or not) each of the four positions/pads independently. That would be a lot more useful than a global randomise of everything. That’s why I was thinking something like ‘long press of shift and then tap one of the 4 pads you want to randomise the settings of’. ]

  • The user and all related content has been deleted.
  • Can someone give me some guidance on importing scripts from Dropbox? I’m using ‘open in’, which opens up Mozaic but doesn’t copy the code, sorry if this is super obvious!

  • @Artefact2001 said:
    Can someone give me some guidance on importing scripts from Dropbox? I’m using ‘open in’, which opens up Mozaic but doesn’t copy the code, sorry if this is super obvious!

    I’ve had to restart Mozaic to pick up the preset occasionally.

    This was in standalone mode.

Sign In or Register to comment.