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*

1515254565762

Comments

  • McDMcD
    edited November 2022

    @dobbs said:

    I have a little problem that I described here.

    I don’t see in the Mononoke manual that the input notes are C-0, C#-0, etc.
    The User Interface let’s you set a note per pad and the AUTOFILL button pops up a menu to select from a table of
    Scales. (Chromatic, Major, Miinor, etc). For Orbas the Bass mode sends a C Major scale starting on C3. Lead sends
    C Pentatonic Major starting on C3. Drums matches some Drum Machine standard… probably 808, not sure.
    The Chords mode sends C, F and G chords with inversions. Could be interesting aimed at Mononoke.

    This works:

    @OnMidiCC
      SendMidiThru
    @end
    
    // That’s correct for CC’s.
    
    > @OnMidiNote
    > if MIDINote = #1
    >     SendMidiOut x,y,z
    > endif
    > if MIDINote = #2
    >     SendMidiOut x,y,z
    > endif
    > if MIDINote = #3
    >     SendMidiOut x,y,z
    > endif
    > if MIDINote = #4
    >     SendMidiOut x,y,z
    > endif
    > .
    
    Use @OnLoad
    
    @End
    
    @OnMidiCC
        SendMidiThru
    @end 
    
    @OnMidiNote
    // There are Mozaic variables @Brambos created to use here here:
    // MIDIByte1 = the MIDI Channel and the MIDI Command type (Note On or Note Off)
    // MIDIByte2 = the Note Number (C4 = 60)
    // MIDIByte3 = velocity 
    // FUN FACT: many sequencers and synths accept a Note ON with Velocity = 0 as a NOTE OFF
    // If you code seeking “Note Offs” you wouldn’t even see one.
    
    // So, you want to change the MIDIByte2 from one MIDI Note to another.
    
    // Let’s assume the input is an Orba 1 or 2 MPE MIDI controller that has 4 modes (Drums, Bass, Chords, Lead)
    // I’ll use the Bass Mode which sends C Major Scale (48,50,52,53,55,57,59,60)
    
    Log MIDICommand,{, }, MIDINote,{, }, MIDIByte3
    
    if MIDINote = 48 //Convert to C0 which is 0
      SendMIDIOut MIDIByte1, 60, MIDIByte3
      Log {Note event: }, MIDICommand,{, }, 60, {, }, MIDIByte3
    Endif
    
    If MIDIByte2 = 50 //Convert to C0 which is 0
      SendMIDIOut MIDIByte1, 61, MIDIByte3
    Endif
    
    If MIDIByte2 = 52 //Convert to C0 which is 0
      SendMIDIOut MIDIByte1, 62, MIDIByte3
    Endif
    
    If MIDIByte2 = 53 //Convert to C0 which is 0
      SendMIDIOut MIDIByte1, 63, MIDIByte3
    Endif
    
    If MIDIByte2 = 55 //Convert to C0 which is 0
      SendMIDIOut MIDIByte1, 64, MIDIByte3
    Endif
    
    If MIDIByte2 = 57 //Convert to C0 which is 0
      SendMIDIOut MIDIByte1, 65, MIDIByte3
    Endif
    
    If MIDIByte2 = 59 //Convert to C0 which is 0
      SendMIDIOut MIDIByte1, 66, MIDIByte3
    Endif
    
    If MIDIByte2 = 60 //Convert to C0 which is 0
      SendMIDIOut MIDIByte1, 67, MIDIByte3
    Endif
    
    @End   
    

    Obra’s are pressure sensitive and will send Velocity in relation to pad hit.
    It will send pitch bend for side to side motion.
    It will send CC=1 (Mod Wheel) with a sidewards tilt of the device.
    CC=2 with slide from center towards edge on a pad.
    And some custom stuff for shake or tap.

    Basically I have an MPE controller with 8 keys that is hard-set to C-major, and I want to bind every key to a note one half-step apart, so that the 8 keys on the controller play the notes C-C#-D-D#-E-F-F#-G. The notes shall keep the same channel though so that the aftertouch/MPE info for each key still matches.

  • Thanks for your input. I got it working now. Had to use midibyte1 instead of midicommand because else the notes were all in channel 1, which MPE doesn't use for notes

    @OnMidiCC
    SendMidiThru
    @end
    
    @OnMIDInote
    
    // I’ll use the Bass Mode which sends C Major Scale (48,50,52,53,55,57,59,60)
    
    if MIDIByte1
    
    If MIDIByte2 = 48
    SendMIDIOut MIDIByte1, 60, MIDIByte3
    Endif
    
    If MIDIByte2 = 50
    SendMIDIOut MIDIByte1, 61, MIDIByte3
    Endif
    
    If MIDIByte2 = 52
    SendMIDIOut MIDIByte1, 62, MIDIByte3
    Endif
    
    If MIDIByte2 = 53
    SendMIDIOut MIDIByte1, 63, MIDIByte3
    Endif
    
    If MIDIByte2 = 55
    SendMIDIOut MIDIByte1, 64, MIDIByte3
    Endif
    
    If MIDIByte2 = 57
    SendMIDIOut MIDIByte1, 65, MIDIByte3
    Endif
    
    If MIDIByte2 = 59
    SendMIDIOut MIDIByte1, 66, MIDIByte3
    Endif
    
    If MIDIByte2 = 60
    SendMIDIOut MIDIByte1, 67, MIDIByte3
    Endif
    
    @end
    

    I don’t see in the Mononoke manual that the input notes are C-0, C#-0, etc.

    hehe I know, sounds weird at first, but try it out and you'll see ;)

  • @dobbs said:
    Thanks for your input. I got it working now. Had to use midibyte1 instead of midicommand because else the notes were all in channel 1, which MPE doesn't use for notes

    Yes. I had that wrong… MIDICommand just carries 128 for NOTE ON and 144 for NOTE OFF so the channel was getting defaulted to a ZERO which for programmers is MIDI Channel 1. With MPE, MIDIChannel 1 is ignored completely.

  • edited November 2022

    if you don't mind we could upload it to patchstorage too?

    hehe i really learned something tonight, awesome stuff :)

  • @dobbs said:
    if you don't mind we could upload it to patchstorage too?

    hehe i really learned something tonight, awesome stuff :)

    Love to see it up on Patchstorage

  • I will put it up on patchstorage to join the 2 other Orba scripts I hacked up last week.

    I wish Mononoke did more with CC’s but it’s still pretty cool to create beautiful morphing pad sound while holding an Orba or better yet. Passing it to a non-musician to have the feeling of connecting touch to glorious sounds.

    If anyone has clues about CC’s Mononoke might respond to… the miracle of MPE is the use of pitch bend to make notes glide under your keyboard control like the ROLI hardware or touch 2D keyboard apps. Does Mononoke react to those gestures? Orba doesn’t have that feature but a script might convert tilt to pitchbends and produce some truly worth downloading. Must experiment with GeoShred or KB-1 or Velocity Keyboard and see what happens.

    Clues appreciated.

  • edited November 2022

    One more CC that mononoke directly reacts to is channel pressure/"area of contact of your finger with the orba pad", that will influence the shape LFO

    the miracle of MPE is the use of pitch bend to make notes glide under your keyboard control like the ROLI hardware or touch 2D keyboard apps. Does Mononoke react to those gestures?

    hm, the pitch bend range that the orba sends is not very broad but even with the orba you can hear the pitch bend a little bit, or what do you mean?

    Orba doesn’t have that feature but a script might convert tilt to pitchbends and produce some truly worth downloading.

    Orba sends tilt as CC1 on channel 1, so we could just forward that to channels 2-9 and filter out the individual pitch bends that Orba sends for each pressed key, that way we get the pitch bend only from one source -> tilt is now global pitch bend?

    could it kind of look like this?

    edit: cleaned it up a bit

        @onMidiCC
        if LastMidiChannel = 1 and MidiByte2 = 1
    
        counterx = 1
    
        for counterx = 1 to 8
        SendMidiCC (MidiByte1 + counterx), MidiByte2, MidiByte3
        endfor        
    
        elseif LastMidiChannel >=2 AND LastMidiChannel <=9 AND Midibyte2 = 1
        \\block the pressure CC messages from the keys
    
        else
        SendMidiThru
    
        @endif
    
        @end
    
  • You can add the channel to the command to get the firstByte.
    FirstByte = midiCommand + midiChannel

  • edited November 2022

    @McD said:
    I will put it up on patchstorage to join the 2 other Orba scripts I hacked up last week.

    I added the keys of C minor as well. Some bass patches are in minor, but they should map correctly too now. And added a button to switch between normal pey pitch shift and pitch shift via tilt:

    (sadly doesn't run properly yet)

    @OnLoad
    LabelPad 0, {TiltPitch OFF}
    TiltPitch_enable = FALSE
    @End


    @OnPadDown
    if LastPad = 0

    if tiltpitch_enable = FALSE
    Tiltpitch_enable = TRUE
    LabelPad 0, {TiltPitch ON}

    else
    TiltPitch_enable = FALSE
    LabelPad 0, {TiltPitch OFF}
    endif
    endif
    @End


    @OnMidiCC

    if TiltPitch_enable = TRUE

    if LastMidiChannel = 1 and MidiByte2 = 1

    counterx = 1

    for counterx = 1 to 8
    SendMidiCC (MidiByte1 + counterx), MidiByte2, MidiByte3
    endfor

    elseif LastMidiChannel >=2 AND LastMidiChannel <=9 AND Midibyte2 = 1
    \block the pressure CC messages from the keys
    else
    SendMidiThru

    endif

    else
    SendMidiThru
    endif
    @end

    @OnMIDInote

    // I’ll use the Bass Mode which sends C Major Scale (48,50,52,53,55,57,59,60)

    if MIDIByte1

    If MIDIByte2 = 48
    SendMIDIOut MIDIByte1, 60, MIDIByte3
    Endif

    If MIDIByte2 = 50
    SendMIDIOut MIDIByte1, 61, MIDIByte3
    Endif

    If MIDIByte2 = 51
    SendMIDIOut MIDIByte1, 62, MIDIByte3
    Endif

    If MIDIByte2 = 52
    SendMIDIOut MIDIByte1, 62, MIDIByte3
    Endif

    If MIDIByte2 = 53
    SendMIDIOut MIDIByte1, 63, MIDIByte3
    Endif

    If MIDIByte2 = 55
    SendMIDIOut MIDIByte1, 64, MIDIByte3
    Endif

    If MIDIByte2 = 56
    SendMIDIOut MIDIByte1, 65, MIDIByte3
    Endif

    If MIDIByte2 = 57
    SendMIDIOut MIDIByte1, 65, MIDIByte3
    Endif

    If MIDIByte2 = 58
    SendMIDIOut MIDIByte1, 66, MIDIByte3
    Endif

    If MIDIByte2 = 59
    SendMIDIOut MIDIByte1, 66, MIDIByte3
    Endif

    If MIDIByte2 = 60
    SendMIDIOut MIDIByte1, 67, MIDIByte3
    Endif

    @end

  • @dobbs said:
    One more CC that mononoke directly reacts to is channel pressure/"area of contact of your finger with the orba pad", that will influence the shape LFO

    ….

    Fwiw, channel
    Pressure and aftertouch are not CC’s. They are each their own type of message and distinct from CCs.

  • edited November 2022

    oh no, thats good to know... :D

    Do you know what the right @ would be then?

    so to catch the channel pressure messages, would I have to use

    @OnMidiInput
    if MIDICommand = 0xD0
    .....
    (and 0xE0 for pitch bend)

    (channel pressure and (poly) aftertouch are the same thing, arn't they?!)

  • It’s hard to use MIDI learn with Orba because it blasts out a lot of data all at once so a script feature to block all midi and then send relevant MIDI to register MIDI learn targets would be helpful for targets that expect you to map button to CC’s. Some work on CC2 and pressure which I suspect could be after touch in some contexts. I wish @Brambos documented a bit more about his midi implementation. I don’t see any learn features.

    I am in California and just starting my day.

  • edited November 2022

    Good Morning :) It's already pitch black again here

    I managed to bind the device tilt to the mononoke pitch shift. One problem with that is that the tilt angle is unidirectional and pitch shift is bidirectional... :D Right now it covers the whole range. Next I'll add modes where neutral tilt means neutral pitch, and tilt is either pitch up or down, plus a sensitivity knob.

    @OnLoad
     LabelPad 0, {TiltPitch OFF}
     TiltPitch_enable = FALSE
    @End
    
    
    @OnPadDown
     if LastPad = 0
    
      if tiltpitch_enable = FALSE
        Tiltpitch_enable = TRUE
        LabelPad 0, {TiltPitch ON}
    
      else
        TiltPitch_enable = FALSE
        LabelPad 0, {TiltPitch OFF}
      endif
     endif
    @End 
    
    @OnMIDIInput
    
    if MIDICommand = 0xB0       //CC messages
    
      if TiltPitch_enable = TRUE
    
         if MIDIByte1 = 0xB0 and MidiByte2 = 1
    
           counterx = 1
    
           for counterx = 1 to 8
           SendMidiOut (0xE0 + counterx), MidiByte2, MidiByte3   //Send pitchshift message on channels 2-9
           endfor        
         
       
          else
          SendMidiThru
    
          endif
    
       else
          SendMidiThru
       endif
    
    
    
    ////////////////////////////////////
    
    elseif MIDICommand = 0x80 OR 0x90        //Note ON/OFF
    
    // I’ll use the Bass Mode which sends C Major Scale (48,50,52,53,55,57,59,60)
    
    
    If MIDIByte2 = 48
    SendMIDIOut MIDIByte1, 60, MIDIByte3
    Endif
    
    If MIDIByte2 = 50
    SendMIDIOut MIDIByte1, 61, MIDIByte3
    Endif
    
    If MIDIByte2 = 51
    SendMIDIOut MIDIByte1, 62, MIDIByte3
    Endif
    
    If MIDIByte2 = 52
    SendMIDIOut MIDIByte1, 62, MIDIByte3
    Endif
    
    If MIDIByte2 = 53
    SendMIDIOut MIDIByte1, 63, MIDIByte3
    Endif
    
    If MIDIByte2 = 55
    SendMIDIOut MIDIByte1, 64, MIDIByte3
    Endif
    
    If MIDIByte2 = 56
    SendMIDIOut MIDIByte1, 65, MIDIByte3
    Endif
    
    If MIDIByte2 = 57
    SendMIDIOut MIDIByte1, 65, MIDIByte3
    Endif
    
    If MIDIByte2 = 58
    SendMIDIOut MIDIByte1, 66, MIDIByte3
    Endif
    
    If MIDIByte2 = 59
    SendMIDIOut MIDIByte1, 66, MIDIByte3
    Endif
    
    If MIDIByte2 = 60
    SendMIDIOut MIDIByte1, 67, MIDIByte3
    Endif
    
    
    
    
    ///////////////////////////
    
    elseif MIDICommand = 0xE0    //PitchShift
    
     if TiltPitch_enable = TRUE
      //Filter out PitchShift messages if TiltPitch is enabled
     else
      SendMIDIThru
     endif 
    
    
    //////////////////////////
    
    else
    
    SendMIDIThru
    
    //////////////////////////
    
    endif
    
    @end
    
  • The Orba manual (same one for both 1 and 2) shows what MIDI comes out of the Orba’s:

    https://cdn.shopify.com/s/files/1/0229/7157/files/Orba_2_Manual_v2.0.2.pdf

    Need to see how the largest setting for Pitch Shift functions for “gliding” and if Mononoke responds:

    Tap and move your finger from side-to-side on a pad. Vibrato produces a change in pitch. the range of pitch can be adjusted with the Pitch Bend Scaling setting in the Orba App.

    I wonder how “Spin” and “Move” gestures are coded? I think I’ll need to hack the Orba “MIDI Filter” to see those outputs in the torrent of MIDI coming out of the device. Just expanding the OnMidiCC code block and logging based on CC number should do it for CC’s:

    74 = Radiate (distance of touch from center) *this seems of get mapped to volume by @Brambos
    112 = Spin
    113 = Move the Orba

  • edited November 2022

    Tilt gives CC1/mod wheel values from 0 to 127, with 0 being flat on the ground, and 127 when turned vertical. If you turn it further, or even upside down, the value stays at 127

    Spin gives values from 63 (rest) to 127 (turn fast) on CC112 (showing you the angular acceleration), but it cant discern if you rotate clockwise or not

    Move gives values from 0 -to 127 corresponding to linear acceleration on CC113 but it's like slow movement is filtered out...

    on CC2 you also get the move values but it's a little more sensitive. on CC113 you only see strong movement, here you also see slower movement. But slow movement is recognized by neither.

    Pitch bend gives values of approx. +/-45. But I hardly get a reaction in Mononoke. But with the script I wrote to bind tilt to the pitch shift, you can pitch shift over the whole range.

    The "MIDI check" app worked well to check this, it lets you filter out messages and channels.

  • Thanks for the leg work… I went chasing a free piano where the 2 zip files won’t uncompress.

  • edited November 2022

    ok I've finished something:

    https://patchstorage.com/orbmonohelper/

    You can use tilt to pitch bend either up, down or both ways, and you can set the pitch bend range with a knob

  • What an elegant solution to mapping the pitch bend using the X-Y gui for visual feedback.

    I created an AUM Rig to help people set up and use the script. I have been told that downloading the AUM Project also gets you the script. Please let us know if that’s false. I would recommend saving the script after running it so you do have your local copy in the Mozaic file storage.

    https://patchstorage.com/orba-mononoke-helper-script-demo/

    Here’s a video of the rig in action. I also mapped the Mononoke track volumes to the Orba Tilt for extra weirdness.
    The only MIDI input comes from an Orba 1 (2 will work the same in MPE mode).

  • edited November 2022

    what I'm still wondering is why pitch bend barely works when using the Orba's native pitch bend. and pressure is supposed to change the shape LFO rate but that's also barely noticeable, I got it working nicely with one mononoke preset but couldn't really reproduce it. So maybe when I have time over the next days I'll add another knob to increase the influence of orba's pressure and pitch shift to noticeable amounts.

    wow I wouldn't have thought tinkering around with mozaic is actually fun, and I learned a lot about MIDI this week :D

  • I had a little crack at @Gavinski ‘s request last night, a simple thing that just maps the 16 pads to a range of pitch bend commands set by two knobs and then linked directly to the objeq pitch parameter in aum - it’s not 12tet by a long chalk but I might make it into two sets, one lower and one higher corresponding to the two rows of pads and stick it up on patchstorage as an aum preset…

  • edited November 2022

    Hmm, you mentioned 2 mozaic instances? When I open the project there's only the instance, the one with the pads split into two rows. But other than that, it works :)

    @McD said:
    I have been told that downloading the AUM Project also gets you the script. Please let us know if that’s false. I would recommend saving the script after running it so you do have your local copy in the Mozaic file storage.

    Yes, I just tried with Kupra's project, the script is in the AUM project. But if you want to keep it you have to save it manually in Mozaic.

  • @dobbs said:
    Hmm, you mentioned 2 mozaic instances? When I open the project there's only the instance, the one with the pads split into two rows. But other than that, it works :)

    @McD said:
    I have been told that downloading the AUM Project also gets you the script. Please let us know if that’s false. I would recommend saving the script after running it so you do have your local copy in the Mozaic file storage.

    Yes, I just tried with Kupra's project, the script is in the AUM project. But if you want to keep it you have to save it manually in Mozaic.

    Oh that’s weird, maybe I’ll put the scripts up separately, though I think the 2x8 is slightly more useful anyway… the 1x16 might be better if I add a parameter to translate the scale as a curve instead of linearly as it is now; would it likely be more musical if it scaled more like notes do maybe ? Or am I getting my physics a bit wrong, actually I think I might be 😅

  • @dobbs said:
    what I'm still wondering is why pitch bend barely works when using the Orba's native pitch bend

    I couldn’t get a lot out of it. The Orba control app has a setup screen to set Pitch Bend to 100%. Have you done that?

    and pressure is supposed to change the shape LFO rate but that's also barely noticeable, I got it working nicely with one mononoke preset but couldn't really reproduce it. So maybe when I have time over the next days I'll add another knob to increase the influence of orba's pressure and pitch shift to noticeable amounts.

    wow I wouldn't have thought tinkering around with mozaic is actually fun, and I learned a lot about MIDI this week :D

  • edited November 2022

    Oh wait, it's the 16 pad version, not the other one. By the way, what was gavinskys challenge? :P

    @Krupa said:
    if I add a parameter to translate the scale as a curve instead of linearly as it is now; would it likely be more musical if it scaled more like notes do maybe ?

    should be exponential, no? every octave the frequency doubles. But when I plot the frequencies over an octave from C4-C5, the increase looks almost... linear-ish, since we're not starting at zero, so you're not that far off at the moment :P

    But we don't know what the start and end values of the objeq pitch slider is, so I guess it's not really possible to do it perfect anyway

  • edited November 2022

    @McD said:

    @dobbs said:
    what I'm still wondering is why pitch bend barely works when using the Orba's native pitch bend

    I couldn’t get a lot out of it. The Orba control app has a setup screen to set Pitch Bend to 100%. Have you done that?

    yes and I see that it sends the pitch bend values in the "MIDI check" app. But they range from -45 to +45, is that normal? that might be the problem.

    With my tilt-shift script I send pitchbend values from 0-127 and that works fine, and 64 seems to be equal to "no pitch shift" but it covers the entire multiple octaves, that would make it way too sensitive for when we want to use the orba's native pitchbend...

    Also I wonder how the Orba can send pitchbend=0, and it results in the same pitch as when I send a pitchbend of 64 via the script

    edit: found a bug in the script, the orba's pitch shift messages never even made it through :D

  • @dobbs In my experiments I mapped tilt to AUM volume and it was the best use of the most dramatic control coming from the Orba and my AUM synth rigs. It’s not the best MPE controller IMHO. By it’s a fine MIDI controller.

    I didn’t do any experiments with the 2 optional MIDI settings: Single Channel and Channel per Part.
    Channel per part might be good if someone likes to create Beats using the Drum+Bass+Chord+Lead combo that the device was designed to provide for mobile creativity.

    Roli has a new keyboard that might be fun to play around with.

  • @Gavinski said:
    I imagine there is already a script for this but I wonder if one of the gurus knows which.

    Is there a script that has a bunch of pads, where each pad can be given an assignable channel, CC number and value and turned on or off with a press and / or overridden when a pad with the same channel and CC but a different value is pressed? This would be very useful for 'playing' things like the pitch slider in Objeq or the 'band' setting in Lo-fi-af in musical ways. Or does anyone else have elegant solutions for using other apps or methods to do this?

    @dobbs this was it; yeah exponential sounds right, and yeah too, I can’t find any reference in the objeq manual to actual pitches. I’ll do a version of the 16 later with a curve control, and I’ll see if I can get the 2x8 up there as well, odd that they’re not both in the aum file though…

  • edited November 2022

    In my experiments I mapped tilt to AUM volume and it was the best use of the most dramatic control coming from the Orba and my AUM synth rigs

    yeah that or for example filter frequency probably works really well in general

    I think the limitation with single channel and channel per part is that with these settings you don't have any poly-aftertouch etc.
    but yeah using it as a little 4 track midi sequencer is something I'm also looking forward to :D

    Roli has a new keyboard that might be fun to play around with.

    slightly different price point though :P did you buy one?

  • edited November 2022

    @Krupa said:

    @Gavinski said:
    I imagine there is already a script for this but I wonder if one of the gurus knows which.

    Is there a script that has a bunch of pads, where each pad can be given an assignable channel, CC number and value and turned on or off with a press and / or overridden when a pad with the same channel and CC but a different value is pressed? This would be very useful for 'playing' things like the pitch slider in Objeq or the 'band' setting in Lo-fi-af in musical ways. Or does anyone else have elegant solutions for using other apps or methods to do this?

    @dobbs this was it; yeah exponential sounds right, and yeah too, I can’t find any reference in the objeq manual to actual pitches. I’ll do a version of the 16 later with a curve control, and I’ll see if I can get the 2x8 up there as well, odd that they’re not both in the aum file though…

    maybe it would also be nice to remove the reverb plugin etc. and eject the file from the file player because I guess no other user will have the same .wav available, and so when I open the AUM session, half the icons show a "missing" warning ;)

Sign In or Register to comment.