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 StoreAudiobus is the app that makes the rest of your setup better.
Moziac MIDI-Monitor-Filter-Logger Script (AUM Project and Mozaic Script up on Patchstorage)
The AUM Project to load the Mozaic “MIDI-Monitor-Filter-Logger” script is ready for downloads and user input:
https://patchstorage.com/midi-monitor-filter-logger/
The Mozaic script “MIDI-Monitor-Filter-Logger” is also ready for downloads and use:
https://patchstorage.com/midi-monitor-filter-logger-2/
This Script Monitors incoming MIDI and has PAD switches to enable/disable MIDI Types and Selectable CC’s.
Touching a PAD and turning it RED enables Logging of that MIDI Type or CC.
It can also pass the selected MIDI types which is useful for targeting specific MIDI types when Using MIDI Learn and the controller is outputting a simplex stream that needs filtering to choose the right MIDI event for mapping.
It’s set up by default for 4 specific MIDI CC’s (Shake, Radiate, Spin, Move) . 4 Knobs are exposed to allow for custom CC Monitoring and Forwarding.
I created a Mozaic script to Monitor and Filter Orba MIDI Output so I can use it with MIDI Learn features in AUM and synths. It’s a work in progress and I’ll put it up on Patchstorage soon in an AUM Project which loads Mozaic with it ready to go and as a Mozaic script for anyone to download and add to their Mozaic files. Using the AUM Project and hitting save in Mozaic will also get you the file and cheat me of a Download count in PatchStorage. That counter is buggy as hell so at times I down load dozens of my scripts to assuage my ego.
The script has helped me understand the MPE features of the Orba and why PitchBend and Mod wheel really need to be a spring loaded wheel or joy stick that goes home to a center position to get you back in tune or stop that unwanted tremolo. Orba doesn’t really have a gesture that fits that model. The Orba folks set up pitch bend as a semitone deviation form mid-centerline pad touches but fingers are fat can cover 25% of a pad’s width so it’s only useful for a mild vibrato and NOT the Note Glide/Silde we can get from a Roli MPE controller so it’s NOT that type of experience.
I’m still wondering what to do with “Shake, Radiate, Spin, Move” but Monitoring them in isolation is the key to seeing what they send and what kind of range they have. Ideally a CC controller is smooth and predictable when in use. Otherwise, it’s best to just use them as triggers for specific events like loop launching or Muting.
This is the current version of the script which for a Mozaic hacker is good enough to install and test the script. It does not need to be driven my an Orba: it’s a MIDI Monitoring (using Mozaic Logging) and Filtering app. Better for my needs than MIDI Spy or other since they present too much data.
This script can isolate specific CC numbers and only log those event. There are 16 PADS to toggle event types. I will use the 4 Knobs in the next version to change specific CC’s from the Orba 2, 74, 112 and 113 so it’s not an Orba Exclusive script.
@Description
This is a MIDI Logging Script with logical switches for Orba 1/2 events
but also useful as a generic MIDI logger. I will add PAD switches for the
Event Types and SendMIDIThru so the script can function as a filter to use
for setting up MIDI Learn Associations.
@End
@OnLoad
// ShowLayOut 1 // 22 Knobs
ShowLayout 2 // 16 Pads + 4 Knobs
// ShowLayOut 3 // 10 Rotary Dials + X-Y Pad
// ShowLayOut 4 // Description Box + 4 Knobs
CC = 0
Tilt1 = 0
Shake2 = 0
Radiate74 = 0
Spin112 = 0
Move113 = 0
PC = 0
PolyPressure = 0
ChannelPressure = 0
AfterTouch = 0
PitchBend = 0
Note = 0
Bump39 = 0
Shake69 = 0
PassThrough = 0
LabelPad 0, {All CC's}
LabelPad 1, {Tilt CC1}
LabelPad 2, {Shake CC2}
LabelPad 3, {Radiate 74}
LabelPad 4, {Spin CC112}
LabelPad 5, {Move CC113}
LabelPad 6, {Prog Change}
LabelPad 7, {Poly Pressure}
LabelPad 8, {Ch Pressure}
LabelPad 9, {AfterTouch}
LabelPad 10, {Pitch Bend}
LabelPad 11, {Notes}
LabelPad 12, {Bump Note 39}
LabelPad 13, {Shake Note 69}
LabelPad 14, { }
LabelPad 15, {Passthrough Off}
@End
@OnPadDown
If LastPad = 0
If CC = 0
CC = 1
ColorPad 0, 1
else
CC = 0
ColorPad 0, 0
endif
elseif LastPad = 1
If Tilt1 = 0
Tilt1 = 1
ColorPad 1, 1
else
Tilt1 = 0
ColorPad 1, 0
endif
elseif LastPad = 2
If Shake2 = 0
Shake2 = 1
ColorPad 2, 1
else
Shake2 = 0
ColorPad 2, 0
endif
elseif LastPad = 3
If Radiate74 = 0
Radiate74 = 1
ColorPad 3, 1
else
Radiate74 = 0
ColorPad 3, 0
endif
elseif LastPad = 4
If Spin112 = 0
Spin112 = 1
ColorPad 4, 1
else
Spin112 = 0
ColorPad 4, 0
endif
elseif LastPad = 5
if Move113 = 0
Move113 = 1
ColorPad 5, 1
else
Move113 = 0
ColorPad 5, 0
endif
elseif LastPad = 6
if PC = 0
PC = 1
ColorPad 6, 1
else
PC = 0
ColorPad 6, 0
endif
elseif LastPad = 7
if PolyPressure = 0
PolyPressure = 1
ColorPad 7, 1
else
PolyPressure = 0
ColorPad 7, 0
endif
elseif LastPad = 8
if ChannelPressure = 0
ChannelPressure = 1
ColorPad 8, 1
else
ChannelPressure = 0
ColorPad 8, 0
endif
elseif LastPad = 9
if AfterTouch = 0
AfterTouch = 1
ColorPad 9, 1
else
AfterTouch = 0
ColorPad 9, 0
endif
elseif LastPad = 10
if PitchBend = 0
PitchBend = 1
ColorPad 10, 1
else
PitchBend = 0
ColorPad 10, 0
endif
elseif LastPad = 11
if Note = 0
Note = 1
ColorPad 11, 1
else
Note = 0
ColorPad 11, 0
endif
elseif LastPad = 12
if Bump39 = 0
Bump39 = 1
ColorPad 12, 1
else
Bump39 = 0
ColorPad 12, 0
endif
elseif LastPad = 13
if Shake69 = 0
Shake69 = 1
ColorPad 13, 1
else
Shake69 = 0
ColorPad 13, 0
endif
// elseif LastPad = 14
elseif LastPad = 15
if PassThrough = 0
PassThrough = 1
LabelPad 15, {Passthrough On}
ColorPad 15, 1
else
PassThrough = 0
LabelPad 15, {Passthrough Off}
ColorPad 15, 0
endif
endif
@End
@OnMidiInput
if MidiCommand = 0x80
if Bump39
if MidiByte2 = 39
Log {Bump Note 39}
if PassThrough
SendMidiThru
endif
endif
elseif Shake69
if MidiByte2 = 69
Log {Shake Note 69}
if PassThrough
SendMidiThru
endif
endif
elseif Note
Log {Note Off = }, MidiChannel, { }, MidiByte2, { }, MidiByte3
if PassThrough
SendMidiThru
endif
endif
endif
if MidiCommand = 0x90
if Note
if Bump39
if MidiByte2 = 39
Log {Bump Note 39}
if PassThrough
SendMidiThru
endif
endif
elseif Shake69
if MidiByte2 = 69
Log {Shake Note 69}
if PassThrough
SendMidiThru
endif
endif
else
Log {Note On = }, MidiChannel, { }, MidiByte2, { }, MidiByte3
if PassThrough
SendMidiThru
endif
endif
endif
endif
if MidiCommand = 0xA0
if PolyPressure
Log {Channel = }, MidiChannel
Log {PolyPressure = }, MidiChannel, { }, MidiByte2, { }, MidiByte3
endif
endif
if MidiCommand = 0xB0
if Tilt1
if MidiByte2 = 1
Log {Tilt_CC1 = }, MidiChannel, { }, MidiByte2, { }, MidiByte3
endif
endif
if Shake2
if MidiByte2 = 2
Log {Shake_CC2 = }, MidiChannel, { }, MidiByte2, { }, MidiByte3
endif
endif
if Radiate74
if MidiByte2 = 74
Log {Radiate_CC74 = }, MidiChannel, { }, MidiByte2, { }, MidiByte3
endif
endif
if Spin112
if MidiByte2 = 112
Log {Spin_CC112 = }, MidiChannel, { }, MidiByte2, { }, MidiByte3
endif
endif
if Move113
if MidiByte2 = 113
Log {Move_CC113 = }, MidiChannel, { }, MidiByte2, { }, MidiByte3
endif
endif
if CC = 1
Log {CC = }, MidiChannel, { }, MidiByte2, { }, MidiByte3
endif
endif
if MidiCommand = 0xC0
if PC
Log {Program Change = }, MidiChannel, { }, MidiByte2, { }, MidiByte3
endif
endif
if MidiCommand = 0xD0
if ChannelPressure
Log {ChannelPressure = }, MidiChannel, { }, MidiByte2, { }, MidiByte3
endif
endif
if MidiCommand = 0xE0
if PitchBend
Log {Pitch Bend = }, MidiChannel, { }, MidiByte2, { }, MidiByte3, { }, MidiByte2+(128*MidiByte3)
endif
endif
// Log MidiByte1, {, }, MidiByte2, {, }, MidiByte3
@End
Comments
@McD i’m a keen lurker on all your Orba posts - I’m not saying much as I don’t have much useful to add (yet), but keep them flowing.
I’m still trying to find a way to count “keen lurkers”.
The AUM Project to load the Mozaic “MIDI-Monitor-Filter-Logger” script is ready for downloads and user input:
https://patchstorage.com/midi-monitor-filter-logger/
The Mozaic script “MIDI-Monitor-Filter-Logger” is also ready for downloads and use:
https://patchstorage.com/midi-monitor-filter-logger-2/
This Script Monitors incoming MIDI and has PAD switches to enable/disable MIDI Types and Selectable CC’s.
Touching a PAD and turning it RED enables Logging of that MIDI Type or CC.
It can also pass the selected MIDI types which is useful for targeting specific MIDI types when Using MIDI Learn and the controller is outputting a simplex stream that needs filtering to choose the right MIDI event for mapping.
It’s set up by default for 4 specific MIDI CC’s (Shake, Radiate, Spin, Move) . 4 Knobs are exposed to allow for custom CC Monitoring and Forwarding.
Since I created this script to tame Obra CC output I added another feature:
Hitting the SHIFT button makes the script shift MIDI Octaves so the Orba pads can cover 4 octaves just by changing the tilt.
I’ll upload the script version 3 to patchstorage tomorrow after some more testing.
NOTE: version 2 was uploaded yesterday to fix the some passthrough bugs.
I find the extra octaves really make the controller a lot more fun to play around with. I think I’ll use 2 of the knobs to
Change scales and keys. You can do this from the Orba app but just turning a button would be a good idea.
Perhaps I should fork these Orba specific changes for it’s own Script and leave the Monitor-Filter-Logger AS IS but with this extra feature left as an Easter Egg that’s activated by the SHIFT button.
Looks like a very useful utility, thanks for posting @McD!
I'll keep it for when I need message filtering that's more specific than in Protokol.
Edit: Forking and having a more generic version with CCs as variables in the file header instead of hard coded values sounds like a good idea 😊
I did follow through and put 4 knobs that let you dial in a CC of your choice and it re-labels
PADs 3-7 to the number you select. That's in the version 2 that's up on patchstorage.
And the events you specify to monitor can be forwarded using PAD 16. Any MIDI user can find uses for this Selective Monitor (Filtering out that which one does not care about) and Log the results and optional forward thru what you see.
Now I need to find this Protokol for more ideas to "borrow"/implement.
Great work! 😊
Protokol is a rock solid MIDI monitor from Hexler, the TouchOSC guy.
My favorite so far, also because it supports slide-over mode to let it hover over any other app.
Using my MacBook, while an older iPad re-charges so I'm still looking for the essential clue:
Do I already own it? (Most likely not.)
Is it less than $10? (Probably not if it's worth it.. since MIDI tools only have a really small market.)
Should I get it for slide over if I live in AUM? Is it AUv3?
No. I live in AUM. Protokol is free but not AUv3. Not going back.
I updated the AUM project and Mozaic script version on patchstorage (links above) that use the Mod Wheel (Orba Tilt CC1) to jump octaves on the Note output. Any keyboard with a Mod Wheel can use this feature so it’s now a MIDI-Log-Filter-Modify Mozaic script (with Monitor in the Logging window).