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!

1404143454686

Comments

  • I just posted a revamped version of the Frazer Mozaic application on patchstorage.com. After reading and discussing about using Mozaic GLOBALs, I made the decision to only use GLOBALs when necessary to communicate between instances of Mozaic. I spent today testing and revising documentation. If you downloaded Frazer (there were 5 downloads when I looked in patchstorage), please download the new version. Pointers to Dropbox are in the first comment.

    I had trouble both yesterday and today uploading more than one patch to the patchstorage patches area. Is that by design?

  • Thank you Bram Bos for such incredible work and apps and to all programmers posting on Patchstorage. All of your work is invaluable to the music I am creating and I am grateful.

  • Sending and receiving Sysex messages (also between plugin instances) works nicely. Now working on adding a chapter on Sysex to the manual to explain all the new language features.

  • @brambos said:
    Sending and receiving Sysex messages (also between plugin instances) works nicely. Now working on adding a chapter on Sysex to the manual to explain all the new language features.

    Awesome!
    Do you have any other neat surprises for us cooking? :smile:

  • edited August 2019

    Sorry, basic question, does Moziac support program change messages like those supported in AUM?

  • @auxmux said:
    Sorry, basic question, does Moziac support program change messages like those supported in AUM?

    Yes, sending and receiving.

  • Thanks @brambos, time to read the manual. 🙂

  • edited August 2019

    Hi guys, I'm sorry if this has already been addressed but I must know: which is better StreamByter or Mozaic?? Or are they totally different?

    Let's say someone just wants a MIDI AU for setting up conditions for remapping channels/CCs/sysex, etc. So like no cool generative MIDI fx and whatnot -- just MIDI mapping, but with "layers" of complicated conditions/subconditions. :)

    Can both apps do this? If so, which language is easier in your opinion?

    A couple more questions:

    What about MIDI tricks like making a momentary button on one's controller behave as a "toggle"? I know SB can do this, how about Mozaic?

    Can you do MIDI clock fx in Mozaic? So for example blocking out MIDI for every other beat in time with Ableton Link?

    Okay one more question! Has anyone managed to get their basic MIDI controller to behave in a way that mimics "scenes" using either of these apps? So bringing up one "scene" on the controller will not only remap the CCs to specified assignments but also remembers the lights associated with what was previously left on/off? (I know "scenes" are tricky in that they also have to be sending MIDI messages back to the controller for the lights to behave as expected, but it would be up to the software to "remember" what has been left on/off)

    Appreciate any help ! ! !

  • wimwim
    edited August 2019

    @cnsg_music said:
    Hi guys, I'm sorry if this has already been addressed but I must know: which is better StreamByter or Mozaic?? Or are they totally different?

    Neither is clearly better in a general sense. It depends on what you're trying to do. Not totally different, but focused differently.

    Let's say someone just wants a MIDI AU for setting up conditions for remapping channels/CCs/sysex, etc. So like no cool generative MIDI fx and whatnot -- just MIDI mapping, but with "layers" of complicated conditions/subconditions. :)

    StreamByter is a little "trimmer", for lack of a better term, for most really simple tasks. But I soon get lost trying to do complicated logic. Mozaic is far clearer for me when it gets into that territory. (Note, Mozaic doesn't do sysex just yet. Apparently soon.)

    Can both apps do this? If so, which language is easier in your opinion?

    Yes, both can do it. Mozaic is much easier for complicated logic (and also in general), in my opinion.

    What about MIDI tricks like making a momentary button on one's controller behave as a "toggle"? I know SB can do this, how about Mozaic?

    Mozaic definately can do that. Piece of cake.

    Can you do MIDI clock fx in Mozaic? So for example blocking out MIDI for every other beat in time with Ableton Link?

    It doesn't process MIDI clock directly. But it fully responds to the host's clock. So, if the host can be driven by MIDI clock or Link, Mozaic will have no problem doing what you want.

    Okay one more question! Has anyone managed to get their basic MIDI controller to behave in a way that mimics "scenes" using either of these apps? So bringing up one "scene" on the controller will not only remap the CCs to specified assignments but also remembers the lights associated with what was previously left on/off? (I know "scenes" are tricky in that they also have to be sending MIDI messages back to the controller for the lights to behave as expected, but it would be up to the software to "remember" what has been left on/off)

    That's a tough one. If your controller doesn't send a consistent and identifiable pattern of MIDI messages when it changes scenes, so that the script can identify to take actions, it will never know if you changed scenes. There also would need to be some trigger to save the state of controls. I can't imagine how Streambyter could ever do that. Mozaic, in the right conditions might be able to, but it sounds like a huge challenge. (BTW, Mozaic doesn't process Sysex just yet, which might be how your controller communicates.) Something like Lemur or MidiDesigner Pro might be a better choice for something like that.

    Or ... maybe I'm reading your question wrong. If you just want to be able to save the values of a bunch of CC's and variables as "scenes" in Mozaic, then possibly dump those values to your controller when you re recall a scene (in Mozaic) - that sounds doable. I've got a script or two that lets you save and recall scenes of controller values. It's the part about knowing when scenes change, and the state of lights, etc. on the controller that I was referring to as problematic.

  • edited August 2019

    @wim said:

    .........scenes...........

    That's a tough one. If your controller doesn't send a consistent and identifiable pattern of MIDI messages when it changes scenes, so that the script can identify to take actions, it will never know if you changed scenes. There also would need to be some trigger to save the state of controls. I can't imagine how Streambyter could ever do that. Mozaic, in the right conditions might be able to, but it sounds like a huge challenge. (BTW, Mozaic doesn't process Sysex just yet, which might be how your controller communicates.) Something like Lemur or MidiDesigner Pro might be a better choice for something like that.

    Or ... maybe I'm reading your question wrong. If you just want to be able to save the values of a bunch of CC's and variables as "scenes" in Mozaic, then possibly dump those values to your controller when you re recall a scene (in Mozaic) - that sounds doable. I've got a script or two that lets you save and recall scenes of controller values. It's the part about knowing when scenes change, and the state of lights, etc. on the controller that I was referring to as problematic.

    Thanks for the helpful and thoughtful response @wim! Does your Mozaic script for recalling scenes also remember the states (velocities) of previously used CCs in those scenes? If so, I would love to see your script if you don't mind sharing it.

    Here's an example of what I would like to do:

    Controller with 3 pads and 3 knobs, CC 10-12 and CC 13-15 respectively
    Additionally let us say there is one special button (CC 100) that will be used to switch between two scenes via Mozaic
    Note that the controller does not have a built in "scenes" feature

    The end goal is to make this one controller 2 controllers based on the on/off state of the special button.

    If it is off, (CC 100's vel = 0) there is no remapping:

    pads:

    • CC 10 -> CC 10
    • CC 11 -> CC 11
    • CC 12 -> CC 12

    knobs:

    • CC 13 -> CC 13
    • CC 14 -> CC 14
    • CC 15 -> CC 15

    If it is on, (CC 100's vel = 127) the CCs are remapped:

    pads:

    • CC 10 -> CC 110
    • CC 11 -> CC 111
    • CC 12 -> CC 112

    knobs:

    • CC 13 -> CC 113
    • CC 14 -> CC 114
    • CC 15 -> CC 115

    So far, I know Mozaic can do this simple remapping based on CC100's velocity as a condition, but will it remember the velocities of the CCs from the first scene if I return to it (CC100 = 0)?

    If it can do this, then it's just a matter of mapping CC100 to send MIDI messages back to the controller based on the remembered states of the pads/knobs' CCs in order to trigger the lights -- and effectively create a "scene" effect.

    Sorry if this is all overly confusing. I appreciate anyone's interest in pointing me in the right direction if someone has already created Mozaic (or StreamByter) code that can help with this. I imagine if perfected it would be pretty helpful for avid users of MIDI controllers.

    If anyone is curious, this is the controller I want to create "scenes" for: https://lividinstruments.com/products/minim/
    It's super cool and nifty! Want to leverage as much as I can out of it.

  • @cnsg_music : what do you mean by “CC100’s velocity”? Do you mean CC100’s value?

  • Yes, that confused me a bit too @cnsg_music . They're pads. So, are they sending a cc value based on how hard the pad is hit? Or are they more like on/off toggles where they either send 0 (off) or 127 (on).

    For the rest, I don't see anything difficult about doing what you want. The state of all variables and controls is saved with the host project, so restoring the values where you last left off wouldn't be a problem. They could also be manually stored and recalled, say, by pressing a pad.

    The routing would need to be paid attention though. If the script is receiving from the controller, and also sending back to it, there will need to be a way to avoid setting up a midi loop.

    The devil is in the details, but so far doesn't sound like anything insurmountable.

    MIDI Randomizer and Scenes is a script that allows storing and recalling scenes of cc values. It's not what you're looking for here, but you asked if I could share the script: https://patchstorage.com/midi-cc-randomizer-and-scenes/

    Another, not by me, is Scenic Sequencer: https://patchstorage.com/scenic-sequencer/

  • edited August 2019

    @espiegel123 said:
    @cnsg_music : what do you mean by “CC100’s velocity”? Do you mean CC100’s value?

    I just mean the velocity value that a CC sends as part of the MIDI message. So on/off would be 127 or 0. And if for example a pad is velocity sensitive it could be anything in between. A potentiometer too, etc. Sorry if my jargon is incorrect but that was always my understanding: Velocity is just the value.

    In my example, the special button would be configured to only send 127 or 0 in a latching manner so there is no problem (or 0 and 1 as I like to do it sometimes for velocity sensitive pads.) I know my example was probably overly complicated. Didn't intend it to be that way.

    @wim said:
    The routing would need to be paid attention though. If the script is receiving from the controller, and also sending back to it, there will need to be a way to avoid setting up a midi loop.

    Yeah I think careful routing and the use of virtual ports is the way to go with this.

    @wim, Thanks for sharing the scripts. I'll take a look. But I'm surprised a true "scene" switcher has not yet been figured out... if that is indeed the case...

    The idea is to create something like what you see in this video:

    @ apprx 3 min 27 seconds, he switches to Layer B (i.e. "scene"), and the knobs/buttons are remapped but also the lights change to reflect their current velocities i.e. values.

  • @cnsg_music : as an FYI, in MIDI velocity is a part of MIDI note messages but not CC messages. CC messages just have controller number and a value.

    Velocity is generally used just to refer to the velocity value sent as part of a note message.

  • I put another script on patch storage just now.

    Clusters is a polyphonic MIDI particle generator meant to provide rhythmic or atmospheric accompaniment. Clusters receives MIDI input from a MIDI keyboard controller, or other MIDI input device, and outputs a generated sequence of MIDI notes in response. The generated sequence are random notes that play using a Euclidean Rhythm.

    SETUP

    To set up Clusters, connect your MIDI input device (keyboard or anything that outputs MIDI) to Clusters on the MIDI Channel set by the MIDI IN knob (default is channel 1). Then create two instrument tracks in your host and MIDI sound source (synth or other) on each track. Set one track to receive MIDI only from the MIDI Channel set by the MIDI IN knob (default is channel 1) and the other track to receive MIDI only from the MIDI Channel set by the MIDI GEN knob (default is channel 2). The first track will be your "direct" sound, and the second track will play the MIDI generated by Clusters. The host transport must be playing for Clusters to generate MIDI. Each time a note is played by the user, Clusters creates a sequence and plays it back.

    CONTROLS

    SHIFT: Press the SHIFT KEY to access the "Expert Mode" page. Press again to go back to the main page. Press-and-hold the SHIFT KEY to see knob values.

    PADS: The pads labled "Voice" are indicators that show which voices are currently playing and how many notes remain in the current sequence.

    USER PADS: USER 1 and USER 2 are for storing user presets. To store a preset, press-and-hold SHIFT and while holding, press either of the USER pads. This will store the current settings in that pad. To recall a user preset, simply press the user pad.

    PRESET + and PRESET -: These pads cycle through the factory presets.

    AS PLAYED / QUANTIZED: This pad selects between Quantize mode and As Played mode. In Quantize mode, all notes generated by Clusters will be played back quantized to the host clock. In As Played mode, the generated notes are offset from the beat by the same amount the original note was.

    RANDOM / STATIC: This pad selects between RANDOM and STATIC modes. RANDOM mode selects a different length Euclidean sequence and different clock division for each input note played. STATIC mode uses the same length Euclidean sequence and clock division for every generated sequence.

    KEY: Sets the root note of the generated sequence.

    SCALE: Sets the scale for the generated sequence.

    RANGE: Sets the range of the random notes in the generated sequence, from 0 semitones to 24 semitones (2 octaes).

    OFFSET: Applies an pitch offset to the generated sequence from -12 semitones (-1 octave) to +12 semitones (+1 octave).

    EXPERT MODE

    Press SHIFT to access EXPERT MODE.

    KEY, SCALE, RANGE, and OFFSET have the same fuction as on the main page.

    HUMANIZE: Adds timing jitter and velocity variation to the notes of the generated sequence.

    VEL OFFSET: Adds or subtracts from the velocity of the generated sequence. The base velocity of the generated sequence is the same as the input note that triggers it.

    NOTE LEN: The length of the generated notes, in ms.

    POLYPHONY: Sets the number of active voices, from 1 to 10. Fewer voices should use less CPU.

    MIDI IN: The MIDI channel that Clusters listens to to receive MIDI input. This should be set to the same channel as your MIDI keyboard controller.

    QUANTIZE / AS PLAYED: Same as the pad on the main page.

    The knobs on the bottom row will vary depending on whether you are in RANDOM mode or STATIC mode.

    RANDOM MODE knobs.

    MIN STEPS: Sets the minimum length of the generated sequence in steps.

    MAX STEPS: Sets the maximum length of the generated sequence in steps.

    MIN BEATS: Sets the minimum number of notes per generated sequence.

    MIN SUBDIV: Sets the shortest note division for the generated sequence.

    MAX SUBDIV: Sets the longest note division for the generated sequence.

    STATIC MODE knobs.

    STEPS: Sets the length of the generated sequence in steps.

    BEATS: Sets the number of notes to be played in the generated sequence.

    ROTATE: Rotates the generated Euclidean sequence in steps.

    SUBDIVISION: Sets the note division of the generated sequence.

    DECAY: The generated sequence can either fade in (below 12:00), fade out (above 12:00), or play at a constant volume (12:00) depending on how this knob is set.

    MIDI THRU: This selects whether the MIDI input arriving on the channel set by MIDI IN will be passed along to the output or blocked.

    MIDI GEN: This sets the MIDI channel that the generated sequence will be output on.

    STATIC / RANDOM: same as on the main page.

    To learn more about Euclidean Rhythms, visit: http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf

  • edited August 2019

    @brambos hi . I think one page ( some information ) of mozaic manual version 1.1 is lost , between pages 76 and 77

  • @pejman said:
    @brambos hi . I think one page ( some information ) of mozaic manual version 1.1 is lost , between pages 76 and 77 .

    Thanks! I’ll check what happened there.

  • edited August 2019

    Those who were interested in the Olafur Arnalds piano tech discussions earlier should check out the Clusters script. Thanks for that one, @Bryan!

    One thing, I couldn’t get the Shift button to engage. A bug, perhaps? I was able to enter the “expert knobs” layout once, but never again (neither after a relaunch).

  • @bleep said:
    Those who were interested in the Olafur Arnalds piano tech discussions earlier should check out the Clusters script. Thanks for that one, @Bryan!

    One thing, I couldn’t get the Shift button to engage. A bug, perhaps? I was able to enter the “expert knobs” layout once, but never again (neither after a relaunch).

    I have solved this problem for myself with going to code section and then press upload button . It works for me .

  • @Bryan said:
    I put another script on patch storage just now.

    Clusters is a polyphonic MIDI particle generator meant to provide rhythmic or atmospheric accompaniment. Clusters receives MIDI input from a MIDI keyboard controller, or other MIDI input device, and outputs a generated sequence of MIDI notes in response. The generated sequence are random notes that play using a Euclidean Rhythm.

    Wow! Just...wow!

  • @lasselu said:

    @Bryan said:
    I put another script on patch storage just now.

    Clusters is a polyphonic MIDI particle generator meant to provide rhythmic or atmospheric accompaniment. Clusters receives MIDI input from a MIDI keyboard controller, or other MIDI input device, and outputs a generated sequence of MIDI notes in response. The generated sequence are random notes that play using a Euclidean Rhythm.

    Wow! Just...wow!

    It's super-cool. Thanks @Bryan ! Might be worth submitting a new patch though with fix for the SHIFT button, I had the same problem.

    @brambos With the amount of awesome scripts we have now it's a bit hard to distinguish which Mozaic is which when you have setups like Flow->Clusters at the same time as a Turing is running into some scaler :smile:
    Would be very nice if it was possible to set different background colors - could be a user setting or just an OnLoad statement that's easy to change for anyone.

  • Hey @Bryan
    Thanks for that script „Clusters“.
    Sometimes it loads with the following errors and the SHIFT problem mentioned before.
    Guess it is a timing thing:

  • Almost ready to start beta-testing Sysex functionality.

    If you would like to test this and you aren't yet part of the beta team, please let me know. I don't have any actual Sysex hardware to test nearby, so I'm just testing with software at the moment.

    Here's a beta-version of the manual, in case you like to have gander at how Sysex has been implemented...

  • Oh boy, with Sysex we go from boffin territory to SUPER BOFFIN land! Wheeeeeeeeee.

  • wimwim
    edited August 2019

    @brambos said:
    Almost ready to start beta-testing Sysex functionality.

    If you would like to test this and you aren't yet part of the beta team, please let me know. I don't have any actual Sysex hardware to test nearby, so I'm just testing with software at the moment.

    Here's a beta-version of the manual, in case you like to have gander at how Sysex has been implemented...

    Please tell me this means I'm required to finally purchase that lovely Electribe ER-1 from EBay in order to remain a beta tester in good standing.

  • @wim said:

    @brambos said:
    Almost ready to start beta-testing Sysex functionality.

    If you would like to test this and you aren't yet part of the beta team, please let me know. I don't have any actual Sysex hardware to test nearby, so I'm just testing with software at the moment.

    Here's a beta-version of the manual, in case you like to have gander at how Sysex has been implemented...

    Please tell me this means I'm required to finally purchase that lovely Electribe ER-1 from EBay in order to remain a beta tester in good standing.

    You need an excuse for getting an ER-1? That thing is in my Top-3 of most fun Korg boxes ever! If you can find one in good condition.. run.. don't walk! B)

  • @brambos said:

    @wim said:

    @brambos said:
    Almost ready to start beta-testing Sysex functionality.

    If you would like to test this and you aren't yet part of the beta team, please let me know. I don't have any actual Sysex hardware to test nearby, so I'm just testing with software at the moment.

    Here's a beta-version of the manual, in case you like to have gander at how Sysex has been implemented...

    Please tell me this means I'm required to finally purchase that lovely Electribe ER-1 from EBay in order to remain a beta tester in good standing.

    You need an excuse for getting an ER-1? That thing is in my Top-3 of most fun Korg boxes ever! If you can find one in good condition.. run.. don't walk! B)

    Yeh. Since the iPad I have a horrible guilt problem about spending money on hardware. :|

    I think the ER-1 might use sysex? I know the ES-1 does. Unfortunately, I sold my ES-1 since it was actually sitting there collecting dust. Still want the ER-1 though.

    If your ER-1 does use sysex, there's your test box!

  • @wim said:
    If your ER-1 does use sysex, there's your test box!

    But it doesn't use checksums, which is what's untested at the moment :)

  • @brambos : I am interested in the sysex but probably can't get to testing till the middle of next week

  • @espiegel123 said:
    @brambos : I am interested in the sysex but probably can't get to testing till the middle of next week

    That's perfect, thanks! I'll DM you the link to the beta, once it has gone through Apple's review process. :)

Sign In or Register to comment.