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!

12021232526102

Comments

  • @espiegel123 said:

    @Bachus said:
    Just wondering if you tought about an easy way to share self created modules? This could be something that works well in a ciommunity

    Mozaic has a library on patchstorage.com

    There is a link to it mentioned a few pages back--and you can find it in the Audiobus wiki also.

    And I still need to add it to the official Mozaic page on Ruismaker.com! Thanks for the reminder B)

  • @burns_audio said:
    Hi,

    Apologies if you just saw my post on Lines about it but last night I wrote a little sequencer in Mozaic. It's a clone of the OP-1 infinity sequencer. Hit record, play any number of notes (including chords, it works polyphonically). Hit record again, set your time division, multiple, gate length, and it will loop forever.

    Demo here:

    Code here: https://patchstorage.com/infinity/

    Still some bugs to iron out, and some improvements to make the time divisions clearer.

    Cheers,
    Tom

    I just want to say how much I enjoy this one! So simple, straightforward, and fun. Great job!

  • Yeah that's a great little script, is there an "easy" way to add state saving to scripts like these?
    It seems the recorded notes aren't saved with the session. :)

  • The user and all related content has been deleted.
  • @Carnbot said:
    Yeah that's a great little script, is there an "easy" way to add state saving to scripts like these?
    It seems the recorded notes aren't saved with the session. :)

    Yes, state saving works semi-automatically. To enable it the script has to make sure that the variable/array containing the recorded notes isn't initialized at launch.

    Just having taken a quick look and without testing, I think it's a matter of changing this line in OnLoad:

    noteCount = 0

    into

    if (Unassigned noteCount)
      noteCount = 0
    endif
    

    Essentially what it does is:

    • check if a variable named noteCount exists (=has been assigned a value)
    • if it exists it was probably loaded from a saved state or preset and we don't want to initialize it to 0
    • if it doesn't exist we can safely initialize it to 0

      :)

    @burns_audio did I interpret your script correctly here?

  • @brambos said:

    @Carnbot said:
    Yeah that's a great little script, is there an "easy" way to add state saving to scripts like these?
    It seems the recorded notes aren't saved with the session. :)

    Yes, state saving works semi-automatically. To enable it the script has to make sure that the variable/array containing the recorded notes isn't initialized at launch.

    Just having taken a quick look and without testing, I think it's a matter of changing this line in OnLoad:

    noteCount = 0

    into

    if (Unassigned noteCount)
      noteCount = 0
    endif
    

    Essentially what it does is:

    • check if a variable named noteCount exists (=has been assigned a value)
    • if it exists it was probably loaded from a saved state or preset and we don't want to initialize it to 0
    • if it doesn't exist we can safely initialize it to 0

      :)

    @burns_audio did I interpret your script correctly here?

    great, that's working thanks :)

  • Keep up the good work guys
    These scripts are super cool

  • I'm just soaking this all up and learning so much!! This is my new rabbit hole. Thanks, everyone.

  • edited June 2019

    @EyeOhEss said:

    @Carnbot said:
    Yeah that's a great little script, is there an "easy" way to add state saving to scripts like these?
    It seems the recorded notes aren't saved with the session. :)

    I think this’ll be the first script I try to mess with. Great starting point from @burns_audio :)

    Hoping to figure out how to add -

    Keyboard note on/off = trigger sequencer (playback) run/stop. And possibly add a latch/hold function.

    Keyboard note = transpose sequence (playback).

    Oct +/- (buttons if poss?) = transpose sequencer (playback).

    If I can figure that little pile out I’ll be happy (and surprised ;)... That’ll be most of the Op1 Endless functionality pinned down. @burns_audio already did the bulk of it so hopefully it’s not outside the realms of possibility for a code noob...

    Then I’ll maybe start to look at adding some sequencer pattern memory slots and then at combining 2 x patterns (like the Op1 Finger sequencer)...but I have a feeling that stuff will be MUCH harder to learn how to code and might test my patience ;)

    All these features would make this such a great script. Also maybe preset playback sequences of the notes inputted? Up and down, random, interspersed, double up, double down, sort of towards an arpeggiator, to give the sequence of notes variety on user selection.

  • Aww I totally forgot about that Unassigned pattern from the manual, sorry about that.

    @brambos thank you! Also I saw your message on Lines, looking forward to v1.3. If I had a wish list (no demands, it's already great) I wish I could set 1 text string on the display so I could show a count of the number of recorded steps.

    @EyeOhEss thanks for reminding me about the other functionality, I had completely forgotten. I just added Latch on/off and transpose. The latest revision is up on PatchStorage (also fixes that reload bug) https://patchstorage.com/infinity/. You should try adding the functionality yourself too though, maybe use my changes as a hint!

  • Speaking of revisions can I ask the favor of those creating these wonderful scripts please add a version number. I can’t always tell if I have the newest version of the script or not. If version # doesn’t work then some other way to differentiate.

    Thanks

  • The user and all related content has been deleted.
  • I finally downloaded this thanks to seeing the @burns_audio infinity patch :D It works great by the way, on iPhone too!

    Now, last year I got halfway thru the Swift Playgrounds first module... so I should be good on coding now right?? :#

  • The user and all related content has been deleted.
  • Haha, my 10PM - everything-else-is-done-lets-play-on-the-iPad brain could not handle this coding stuff. So I’ll be riding on the work of others here for a while.

    That said, I was pleasantly surprised to open up the Infinity patch from BurnsAudio and see that the number of coding lines is relatively small.

  • edited June 2019

    I’m not able to get the infinity script to work. I’ve watched the video numerous times with no luck and there are no directions on how to use the script. Is the first pad the record button?
    I still think these Moziac modules are too terse and don’t give enough visual feedback.

    Edit: I’m playing notes into Mozaic/Infinty with AUMs keyboard not an external keyboard. Could that be why it’s not recording anything.

  • @yowza said:
    Edit: I’m playing notes into Mozaic/Infinty with AUMs keyboard not an external keyboard. Could that be why it’s not recording anything.

    AUM's keyboard works like any other MIDI keyboard. If the plugin receives MIDI you'll see the MIDI LED blink.

    Did you press play in AUM?

  • @yowza

    I got it working exactly as you are trying in AUM. Read thru the description and instructions on patchstorage.com/infinity/

    Also, Go into MIDI routing matrix and send keyboard to both Mozaic and the synth. then send Mozaic to the synth also.

    AUM clock might need to be playing (to set the MIDI clock for Mozaic)

    You also have to tweak the “divisor” and “count” dials down to 0 or 1 to make sure it is in playable ranges. By default they are at 64 I think, which would only send a note every 20 seconds or something.

    And yes, the top left pad when white is actively recording note input. Tap again to stop input. Tap pad 3 to start playback.

  • I’ve tried pressing play before and after recording (pressing the first pad) just trying everything. The midi indicator sees the incoming midi from AUMs keyboard and I hear the sound of me playing through the plug in when the first pad is selected (again I assume that’s the record button) but nothing records.

  • The next update of Mozaic will have pad labelling which can make scripts like this more intuitive. It's in Beta currently, and almost ready to go to review. :)

  • Thanks for the tip to go read at Patchstorage but still no luck. I was wondering why the third pad was always lit up after loading.

    I’m too frustrated for now, I need to walk away from it and try again later. I’ll be honest I love the idea of Mozaic but I find getting these modules set up and figuring out to use them often takes me out of a music making mood. I may not be enough of a geek to really appreciate it.

  • I like putting all the variables that should be initialized in a script inside a single block to reduce the number of if - then statements. “init” in this example is a dummy variable that gets state saved, so if you come back into the program after a state-save, it will skip all the initializations.

    @OnLoad
    
      if Unassigned init
        init = YES
        //Stuff that should happen only on new load
        x = 0
        y = 127
        SetKnobValue 0, 0
        //etc.
      endif
    
      //Rest of stuff that should not be state saved
    
    @End
    
  • @wim said:
    I like putting all the variables that should be initialized in a script inside a single block to reduce the number of if - then statements. “init” in this example is a dummy variable that gets state saved, so if you come back into the program after a state-save, it will skip all the initializations.

    @OnLoad
    
      if Unassigned init
        init = YES
        //Stuff that should happen only on new load
        x = 0
        y = 127
        SetKnobValue 0, 0
        //etc.
      endif
      
      //Rest of stuff that should not be state saved
    
    @End
    

    Yes, that’s the most elegant pattern for initialisation and state-saving :)

  • edited June 2019

    @yowza said:
    Thanks for the tip to go read at Patchstorage but still no luck. I was wondering why the third pad was always lit up after loading.

    I’m too frustrated for now, I need to walk away from it and try again later. I’ll be honest I love the idea of Mozaic but I find getting these modules set up and figuring out to use them often takes me out of a music making mood. I may not be enough of a geek to really appreciate it.

    Sorry that's your experience so far. I've only been hacking on scripts for 2 days now so the sequencer's definitely rough around the edges. Here's a rough list of things to do in order:

    • load a MIDI track with Mozaic
    • load a separate audio track, load an audio unit into it
    • load the infinity script
    • open the midi router in AUM and route the internal keyboard to mozaic, and route mozaic to your audio unit
    • go back to mozaic
    • hit the first pad, it should then stay lit. You are now recording. Press some keyboard keys. Hit the first pad again, you are now done recording.
    • adjust the divisor and count knobs down to 0. Sorry, I'll fix this in the next release so it's like that by default.
    • Hit play in AUM, if the third pad is lit you should now hear your notes being looped.
    • If you turn off the third pad, the sequencer is no longer latched. Hit a key on the keyboard and it should play the next note in the sequence, transposed higher or lower than C2 (note 48).

    I just tried following these instructions and it worked. In the next release I'll blink the user LED every time an event gets added to the record buffer.

  • The user and all related content has been deleted.
  • @EyeOhEss said:

    @burns_audio said:

    @yowza said:
    Thanks for the tip to go read at Patchstorage but still no luck. I was wondering why the third pad was always lit up after loading.

    I’m too frustrated for now, I need to walk away from it and try again later. I’ll be honest I love the idea of Mozaic but I find getting these modules set up and figuring out to use them often takes me out of a music making mood. I may not be enough of a geek to really appreciate it.

    Sorry that's your experience so far. I've only been hacking on scripts for 2 days now so the sequencer's definitely rough around the edges. Here's a rough list of things to do in order:

    • load a MIDI track with Mozaic
    • load a separate audio track, load an audio unit into it
    • load the infinity script
    • open the midi router in AUM and route the internal keyboard to mozaic, and route mozaic to your audio unit
    • go back to mozaic
    • hit the first pad, it should then stay lit. You are now recording. Press some keyboard keys. Hit the first pad again, you are now done recording.
    • adjust the divisor and count knobs down to 0. Sorry, I'll fix this in the next release so it's like that by default.
    • Hit play in AUM, if the third pad is lit you should now hear your notes being looped.
    • If you turn off the third pad, the sequencer is no longer latched. Hit a key on the keyboard and it should play the next note in the sequence, transposed higher or lower than C2 (note 48).

    I just tried following these instructions and it worked. In the next release I'll blink the user LED every time an event gets added to the record buffer.

    Is making the sequence playback non-reliant on ‘hit play in AUM’ something feasible for a noob to tackle?

    I’d love to just use AUM to set the bpm and then just use keys to activate the sequence, like the Op1 workflow, totally independent from host transport. So I can play sequences just via manual sync and record in to other gear/desktop/Euro etc. Any advice on how I should approach this would be much appreciated :)

    It’s a bit more involved, but possible. You can use a timer instead of the metronome to do it. The timer runs independent of the host’s tempo and transport state.

  • The user and all related content has been deleted.
  • Thanks! I am able to get something to work now but not consistently.

    I made the assumption that the knobs were already at their default starting point and thought I was supposed to adjust from that position to get results. I never turned the knobs all the way down, that’s why nothing happened. This is where more visual feedback would be very helpful otherwise you’re flying blind.

    What I notice now is that what I record is an octave higher than what I play and the notes I record disappear when I stop AUMs transport or press the record button again if the latch is on. I can still record new notes into it but not on top of the first pass. I’m sure there is something I’m not doing correctly.

    Thanks for your help!

  • edited June 2019

    Can infinity defaults be set so the divisor and other settings are already preset so that something will start playing automatically and change the settings after the fact to alter what was recorded?

  • @wim said:

    @Matt_Fletcher_2000 said:

    @wim said:

    @SpookyZoo said:
    @wim As I thought, your Midi CC Morph Pad script is awesome fun with the Novation CIRCUIT macros. Just needed to change CCs to 80-87 and was jamming those mods like crazy. Great stuff!

    To be honest, I haven’t used it yet myself, so it’s good to hear someone is. :D

    Gonna enhance it with some of the great ideas offered here soon I hope. Problem is I keep getting too many ideas for new scripts! The possibilities are endless.

    I’ve been using it lots with Gadget.

    I really, really would like 16 or so CCs though. Not just the current 8. That would take it to a whole another level for patch morphing!

    Yeh, gonna do that now that the update is out. I didn't want to re-work it while the new changes were still upcoming. Gimme a day or two. B)

    Thanks @wim. Would be great if you could spare the time.

    8 ccs is good for modulating a patch a fair bit, but 16 CC’s would allow pretty much complete transformation of one synth patch into another while playing which would be amazing... particularly in synths like Montpellier or Memphis inside Gadget (where you can record and subsequently edit that morphing too).

Sign In or Register to comment.