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.

Request new Mozaic Scripts *HERE*

2456723

Comments

  • edited November 2019

    @wim said:
    Mozaic doesn’t have any facilities for reading files, so I don’t think that one is possible.

    If there was some other app that could translate a scale file to sysex, then send it to Mozaic, maybe. But by the time you built such an app it’d be easier just to build the app directly.

    good point. then perhaps a simple 12 note / 12 knob microtuner using pitch bend for monophonic instruments. would be limited to 12 note scales, but it would still be very cool. Especially if there was a way to recall different scales.

    One knob would be needed to set the bend range (because unfortunately not all synths have adjustable range)

    ideally, intervals could be set in ratios as well as cents, but that might be asking too much :)

  • @palms said:

    @wim said:
    Mozaic doesn’t have any facilities for reading files, so I don’t think that one is possible.

    If there was some other app that could translate a scale file to sysex, then send it to Mozaic, maybe. But by the time you built such an app it’d be easier just to build the app directly.

    good point. then perhaps a simple 12 note / 12 knob microtuner using pitch bend for monophonic instruments. would be limited to 12 note scales, but it would still be very cool. Especially if there was a way to recall different scales.

    One knob would be needed to set the bend range (because unfortunately not all synths have adjustable range)

    ideally, intervals could be set in ratios as well as cents, but that might be asking too much :)

    That sounds doable. You’d have to set the scales up one at a time, using knobs for the adjustment amount, but it’d be easy to set up a mechanism for saving a pre-determined number of scales.

    I’m not into micro tuning myself, so I probably wouldn’t be interested in diving into this, but it does sound like it could be done.

  • @Skyblazer said:
    @palms I once started the beginning of a microtonal script. It would best be used with multiple instances of an AU, rotating channels like Polythemus. (Or multiple hardware synths.) Or MPE, like you said.

    cool!

    Here's how I started to make it. I ran SynthOne into 4Pockets Analyzer and Tuner. Played the keys on my MIDI controller. Recorded the frequency and closest note. Played with the pitch bend value in Mozaic until it would send the right frequency when pitch bend is set to +/- 1. And then I would repeat the process, for every note of the scale. I think I only did two octaves of Pythagorean tuning. Maybe someone has a better idea of how to do it quicker, but...

    well, being that the pythagorean tuning is a set of ratios, there is certainly a quicker way to do it. all you need is the frequency of your starting pitch (1/1) and then you base the rest of the scale off that.

    pythagorean ratios are:

    1/1, 9/8, 81/64, 4/3, 3/2, 27/16, 243/128, 2/1

    so if your starting pitch is say 100hz, then 1/1 = 100, 9/8 = 112.5, 81/64 = 126.5625, etc...

    I don't think there's a table to tell you which note+pitch bend value will give you a certain frequency. If there were, the script would take ten minutes to write. It might even be a good idea to use a regular language to program something to translate a list of frequencies into note + pitch bend. Because until that exists, adding any scale to any program that works this way would be time consuming. And once it exists, adding any scale would take minutes. Otherwise, I'd have to prioritize certain ones over others.

    exactly. The first thing to solve is how to translate a ratio to a bend amount.
    The biggest hurdle is that you'd need to be able to set the bend range, since not all synths have the same initial bend range. In an ideal world, you would just base it on an octave bend range, but sadly not all synths have an adjustable bend amount. This is where I get lost as to how to realize such a program.

    Do you have a favorite microtonal scale, @palm? If so, maybe I could finish the Pythagorean octaves and add one other scale, and then if anyone wants to use a different scale, they could follow my method, because it's extremely straightforward. It just requires a lot of patience.

    I'm fond of this 12 note seven limit JI scale:

    1/1, 25/24, 9/8, 7/6, 5/4, 4/3, 11/8, 3/2, 25/16, 5/3, 7/4, 15/8, 2/1

    also, this lovely (extremely consonant) five limit tuning (malcolm, from the year 1721)

    1/1, 16/15, 9/8, 6/5, 5/4, 4/3, 45/32, 3/2, 8/5, 5/3, 16/9, 15/9, 2/1

  • @wim said:

    @palms said:

    @wim said:
    Mozaic doesn’t have any facilities for reading files, so I don’t think that one is possible.

    If there was some other app that could translate a scale file to sysex, then send it to Mozaic, maybe. But by the time you built such an app it’d be easier just to build the app directly.

    good point. then perhaps a simple 12 note / 12 knob microtuner using pitch bend for monophonic instruments. would be limited to 12 note scales, but it would still be very cool. Especially if there was a way to recall different scales.

    One knob would be needed to set the bend range (because unfortunately not all synths have adjustable range)

    ideally, intervals could be set in ratios as well as cents, but that might be asking too much :)

    That sounds doable. You’d have to set the scales up one at a time, using knobs for the adjustment amount, but it’d be easy to set up a mechanism for saving a pre-determined number of scales.

    I’m not into micro tuning myself, so I probably wouldn’t be interested in diving into this, but it does sound like it could be done.

    thanks, good to know!

  • edited November 2019

    @palms Translating from frequency to pitch bend is the part that would still take a long time, but knowing the frequencies in advance will save some time. And I do want to save some time, so thank you! I'll aim to upload a patch this week.

    Thanks for the scale recommendations. And the idea to allow users to set up any 12 tone scale using the knobs is a great one. Hmm, maybe I should start with that functionality.

    We'll have to see, if the +/- 12 Semitone setting would be equally usable with this...but I'll probably start with the option for 1 or 2 semitones. Specifically 2, because many Korg Gadgets are locked to 2. And the smaller the range the better, because not every synth sends a different pitch bend position for all 16,383 pitch bend values. So 2 semitones makes each increment pretty small, allowing you to get closer to your desired frequency, and 12 semitones makes the increments six times that size. Which might still be small enough, or it may make a difference with certain synths and scales. I'm sure there are a few synths locked to a 12 semitone pitch bend, but I think most of the synths that default to 12 do allow you to change it, whereas the same isn't true for many synths that default to 2. So I should probably still add support for 12 for the sake of completeness. But you'll want the bend range to be as small as possible.

    I should also find out which synths output more pitch bend positions than others, so I can choose the one that will get me the most accurate value. I'll try the most recent offering from each company that makes iOS synths.

    Another feature I'm considering, would be the option to map the microtonal scales to only the white keys, or to use the sharps and flats. SynthOne uses the sharps and flats, and it would be nice if somebody could compose with the free synth, then discover Mozaic, and easily swap out SynthOne for any other synth. But for better playability, it might be nicer to use only the white keys. On a good day, I might be able to write a function using arrays to switch between the two mapping options.

    Speaking of arrays, when I first started to make this script, I found that asking it to load a giant array of four and five digit values OnLoad would make it crash, deleting any unsaved work. But that may have changed with 1.0.6 "Support for very long script lines (up to 768 characters)" and if not, I could maybe push values to the array one at a time, from a series of smaller arrays.

  • @Skyblazer said:
    @palms Translating from frequency to pitch bend is the part that would still take a long time, but knowing the frequencies in advance will save some time. And I do want to save some time, so thank you! I'll aim to upload a patch this week.

    Thanks for the scale recommendations. And the idea to allow users to set up any 12 tone scale using the knobs is a great one. Hmm, maybe I should start with that functionality.

    We'll have to see, if the +/- 12 Semitone setting would be equally usable with this...but I'll probably start with the option for 1 or 2 semitones. Specifically 2, because many Korg Gadgets are locked to 2. And the smaller the range the better, because not every synth sends a different pitch bend position for all 16,383 pitch bend values. So 2 semitones makes each increment pretty small, allowing you to get closer to your desired frequency, and 12 semitones makes the increments six times that size. Which might still be small enough, or it may make a difference with certain synths and scales. I'm sure there are a few synths locked to a 12 semitone pitch bend, but I think most of the synths that default to 12 do allow you to change it, whereas the same isn't true for many synths that default to 2. So I should probably still add support for 12 for the sake of completeness. But you'll want the bend range to be as small as possible.

    I should also find out which synths output more pitch bend positions than others, so I can choose the one that will get me the most accurate value. I'll try the most recent offering from each company that makes iOS synths.

    Another feature I'm considering, would be the option to map the microtonal scales to only the white keys, or to use the sharps and flats. SynthOne uses the sharps and flats, and it would be nice if somebody could compose with the free synth, then discover Mozaic, and easily swap out SynthOne for any other synth. But for better playability, it might be nicer to use only the white keys. On a good day, I might be able to write a function using arrays to switch between the two mapping options.

    Speaking of arrays, when I first started to make this script, I found that asking it to load a giant array of four and five digit values OnLoad would make it crash, deleting any unsaved work. But that may have changed with 1.0.6 "Support for very long script lines (up to 768 characters)" and if not, I could maybe push values to the array one at a time, from a series of smaller arrays.

    wow, thank you so much for offering to take this on! it's been on the back, back burner for me (I've no experience with coding at all) so I truly appreciate this. Should be fun, even if it isn't usable for all instruments.

  • You're welcome! Yeah, it's been on my back burner as well, but you reminded me. When I started it, I was learning to code, I didn't understand the crashing, and I wanted to write things that would challenge me to learn. But now, I'd like to build a portfolio of audio and programming projects, so that I can get more freelancing work, and it will be nice to have a project with a "nerdy" purpose and simple code. Once the main features have been added, I'll probably add a small handful of popular scales, and then people can send me the pitch bend info for any additional ones they'd like to see, and I'll credit them in the description.

    I think I'll have a dedicated screen for quickly finding the perfect pitch bend value. There will be knobs for the thousands (0 to 16,000), hundreds, tens, and ones, a label to display the current combined value, and then a button to Log that value and the associated note.

  • edited November 2019

    Wanted: a Script to "unmount" a midi or audio app (fx or synth/drum) or channel. Or am I being lazy and dumb and you can do this already in a non-mozaic manner?

  • @audiblevideo said:
    Wanted: a Script to "unmount" a midi or audio app (fx or synth/drum) or channel. Or am I being lazy and dumb and you can do this already in a non-mozaic manner?

    Huh? Do not understand what you mean.

  • @palms said:

    also, this lovely (extremely consonant) five limit tuning (malcolm, from the year 1721)

    1/1, 16/15, 9/8, 6/5, 5/4, 4/3, 45/32, 3/2, 8/5, 5/3, 16/9, 15/9, 2/1

    Interesting. Do you know of any audio / video you could link to that uses this?

  • @wim said:

    @audiblevideo said:
    Wanted: a Script to "unmount" a midi or audio app (fx or synth/drum) or channel. Or am I being lazy and dumb and you can do this already in a non-mozaic manner?

    Huh? Do not understand what you mean.

    My bad.

    Mounted

    Unmounted - disconnected

  • edited November 2019

    @palms @Skyblazer you should look into scala files for your project. The following apps can create or use scala files:

    1. Wilsonic create and export scala files.
    2. ScaleGen import, create, export scala files. MIDI output.
    3. Gestrument Pro import scala files and output MIDI. Has some of its own instruments.
    4. Audio Kit Synth One import scala files which can be selected as the tuning in the synth and played.

    You can use ScaleGen to output the MIDI from an imported scala file to a MIDI monitoring app so you’ll know what the MIDI notes and pitch bends are for each tone in your scale.

  • wimwim
    edited November 2019

    @audiblevideo said:

    @wim said:

    @audiblevideo said:
    Wanted: a Script to "unmount" a midi or audio app (fx or synth/drum) or channel. Or am I being lazy and dumb and you can do this already in a non-mozaic manner?

    Huh? Do not understand what you mean.

    My bad.

    Mounted

    Unmounted - disconnected

    Ahh. In that case, not possible, unfortunately. AUM doesn’t expose that function so that it can be toggled by midi.

    Audiobus can do this for almost all AU FX and AU MIDI FX (only) just by midi learning something to the ON/OFF button in the app bar, or to the Bypass button in the mixer page.

  • edited November 2019

    @wim said:

    @audiblevideo said:

    @wim said:

    @audiblevideo said:
    Wanted: a Script to "unmount" a midi or audio app (fx or synth/drum) or channel. Or am I being lazy and dumb and you can do this already in a non-mozaic manner?

    Huh? Do not understand what you mean.

    My bad.

    Mounted

    Unmounted - disconnected

    Ahh. In that case, not possible, unfortunately. AUM doesn’t expose that function so that it can be toggled by midi.

    Audiobus can do this for almost all AU FX and AU MIDI FX (only) just by midi learning something to the ON/OFF button in the app bar, or to the Bypass button in the mixer page.

    Right. So on to a modified version of the same functionality. Can midi be sent or not sent per AU instance?
    Or another way, can the midi change its routing from one channel (being used) to another channel (not being used) to function as an effective mute?

    I think the problem I'm trying to solve is the sending and not sending of midi notes by different generators.

  • No, you can’t change the routing. But, you can change the channel, so the routing is irrelevant. If you have two channels set to receive from the same Mozaic instance, you could have the first AUM channel set to listen to only MIDI channel one, and the second AUM channel set to listen to only MIDI channel two. Then by muting one or the other MIDI channel, you accomplish the same thing.

    There are already scripts on patchstorage.com that let you block and unblock midi channels in any combination and/or to alter the midi channel as it passes through.

    There are other non-script based programs such as mfxStrip that allow you to do this easily too.

  • @wim said:
    No, you can’t change the routing. But, you can change the channel, so the routing is irrelevant. If you have two channels set to receive from the same Mozaic instance, you could have the first AUM channel set to listen to only MIDI channel one, and the second AUM channel set to listen to only MIDI channel two. Then by muting one or the other MIDI channel, you accomplish the same thing.

    There are already scripts on patchstorage.com that let you block and unblock midi channels in any combination and/or to alter the midi channel as it passes through.

    There are other non-script based programs such as mfxStrip that allow you to do this easily too.

    Thank you.

  • @InfoCheck said:
    @palms @Skyblazer you should look into scala files for your project. The following apps can create or use scala files:

    1. Wilsonic create and export scala files.
    2. ScaleGen import, create, export scala files. MIDI output.
    3. Gestrument Pro import scala files and output MIDI. Has some of its own instruments.
    4. Audio Kit Synth One import scala files which can be selected as the tuning in the synth and played.

    You can use ScaleGen to output the MIDI from an imported scala file to a MIDI monitoring app so you’ll know what the MIDI notes and pitch bends are for each tone in your scale.

    Thanks for the tip! This will make the process of adding scales much quicker. Progress has been coming along. Tonight I've been working on the area where you can make your own scale. Next will be the first scale options.

  • @audiblevideo - I checked out this Mozaic script by @_ki just today: https://patchstorage.com/midi-matrix-switch/
    You can create up to 16 different sets of mappings between any input and output channel (including muting) and switch between them by tapping on a pad (or via cc / key / pc if you want to do that externally). You can watch the video to get the gist. Found this tool very straightforward to use. Excellent work!

  • @Tim6502 said:
    @audiblevideo - I checked out this Mozaic script by @_ki just today: https://patchstorage.com/midi-matrix-switch/
    You can create up to 16 different sets of mappings between any input and output channel (including muting) and switch between them by tapping on a pad (or via cc / key / pc if you want to do that externally). You can watch the video to get the gist. Found this tool very straightforward to use. Excellent work!

    Thank YOU for the info.

  • @wim said:
    Good idea, but what does this have to do with whether BM3 crashes too much or not?

    I gave the updated BM3 a run out the other day and it never crashed once. Hail the lord 😛.

  • McDMcD
    edited November 2019

    No one asked for another chordal app but my approach to programmer is pretty crude. I make a script that does one simple thing and then start adding extra features.

    I'm thinking of making a tutorial that teaches "newbies" how to make stuff with Mozaic using this "add something new" feature to teach some of the
    basics and probably put it on the wiki... no promises but this best thing about
    programming is the time it takes and you won't binge on the new apps.

    I'm about 30 feature changes into a script that does this.

    It converts a single MIDI note to:

    1:a large multi-note voicing - suitable for orchestral ensemble playing
    2: applies a configurable delay and arpeggiates the chord voices - suitable for pianos, harps

    (Last night I added the ability to drive the Arp's from the DAW's metronome).

    I started up 2 copies of the script and fed one to some strings and a synth and the 2nd to a piano and harp.

    I think I'll break it into 3 or more versions since the arpeggio version lends itself to playing piano runs and patterns based on the DAW's BPM. I was going to make a huge script with a lot of knobs and offer various MIDI outs
    but I think smaller is better and I expect the real programmers to "fix and extend" my novice programming style and make it rock solid.

    Here's a test drive "as is":

  • I have a request for some help.

    Can someone provide the right statements to invoke a "MIDI Panic". I think it's
    sending velocity 0 to notes 0-127 in a loop but just want to request the best option.

    I'm changing "chord maps" with a knob and some notes don't get stopped unless I
    play a chromatic octave to insure coverage of all the notes... even then sometimes I have to go back to the previous knob settings to get that to work. So, I want to add function call to
    the @OnKnob sections.

    Call @MyMIDISanity

    It was covered here on another scripting thread recently so someone knows. (Off to play the Google it game).

  • @McD said:
    I have a request for some help.

    Can someone provide the right statements to invoke a "MIDI Panic". I think it's
    sending velocity 0 to notes 0-127 in a loop but just want to request the best option.

    I'm changing "chord maps" with a knob and some notes don't get stopped unless I
    play a chromatic octave to insure coverage of all the notes... even then sometimes I have to go back to the previous knob settings to get that to work. So, I want to add function call to
    the @OnKnob sections.

    Call @MyMIDISanity

    It was covered here on another scripting thread recently so someone knows. (Off to play the Google it game).

    Found it. @brambos slipped me a clue in the Mozaic User Manual:

    @OnShiftDown
    // do a MIDI panic on channel 0 for nn = 0 to 127
    SendMIDINoteOff 0, nn, 0
    endfor
    @End

  • wimwim
    edited November 2019

    Sending CC 123, value 0 is supposed to be recognized as the “All Notes Off” or “Panic” message. It doesn’t always work though. Blasting a bunch of unmatched midi offs isn’t always great either. Some apps react unexpectedly when that happens. Better than having stuck notes though. :#

    The intended (though often ignored) function of Cc 123 and other related messages can be found in the table here: https://www.midi.org/specifications-old/item/table-1-summary-of-midi-message

    Preventing stuck notes can be a great challenge, especially when changing controls that affect notes while notes are playing. I had the devil of a time with that in the Cordulator script. I managed to get it relatively good, but I’m not convinced it’s perfect.

  • McDMcD
    edited November 2019

    @wim said:
    Preventing stuck notes can be a great challenge, especially when changing controls that affect notes while notes are playing. I had the devil of a time with that in the Cordulator script. I managed to get it relatively good, but I’m not convinced it’s perfect.

    Did you end up making a list of outstanding Note On's that have not been Note Off'ed yet?

    I expect it will be weird when I change the Knob and everything just stops. Since I sent Note On's I can probably write a routine to send specific Note Off's with the same "delays" that the Note On's used and then it won't be like pulling the power plug on the synth.

    Or maybe just dole the Note Off's out with some delay between Notes sent
    so they aren't "Blasted" at the target app(s): make a timer and send them out over a second or so starting from Middle C and expanding out from there.

  • Hi McD,

    Sounds fantastic that piece on soundcloud!

    Yes you have to keep track of the keys that are still down while sending noteoffs.
    Have a look at my sostenuto script. It tackles exactly that problem.

  • edited November 2019

    There was a note killing script in sostenuto. But I removed it because it would crash in nanostudio. Allready when sending cc 123 on 16 channels, but also when sending 128 note offs on the current channel.
    The note killing was not needed anymore anyway, when I got the logic right.

  • McDMcD
    edited November 2019

    @Alfred said:
    Hi McD,

    Sounds fantastic that piece on soundcloud!

    Yes you have to keep track of the keys that are still down while sending noteoffs.
    Have a look at my sostenuto script. It tackles exactly that problem.

    Thanks, I'll check out your solution (after taking a swing at the ball, myself). I think I'm convinced that I should keep a list of recent notes processed and resend the tail notes from that list. I suspect 2 Note On's followed by a Note Off will work to avoid these problems.

    Now I need to read up on how to slip a MIDI event into the incoming stream from inside the app... that's the way StreamByter worked using an "injection" capability. First, check the User manual while I wait for more forum wisdom.

    Darn... I didn't see anything similar to the concept of injecting a MIDI Event into the processing queue from user code so I'll probably have to duplicate the code in @OnMIDINote in a user function to duplicate processing.

  • Most synths stop a note after recieving one note off per key. Some synths like all u-he synths expect the right number of note offs. So they would still have one note hanging.
    When you know you are retriggering a note, send a noteoff first. Then the noteOn with a little delay of at least 1 millisecond.

  • If you're not using them for anything else, you could use SetNoteState and GetNoteState for keeping track of active notes and base your panic function on those.

Sign In or Register to comment.