Bram Bos Mozaic MIDI Module Builder
A Solution for a modular MIDI world
The recent surge in AU plugin availability (for audio and MIDI) on iOS opens up new modular ways of stringing musical tools and instruments together. This modularity comes with a million new needs for creative MIDI routing: the plumbing between plugins and controllers.
Suddenly there is a lot of demand for MIDI handling and manipulation plugins. Most of which is very specific to one particular workflow or even one single project. While it’s fun to make such MIDI plugins, it’s not realistic to expect developers to address every esoteric use case with a dedicated MIDI plugin. There simply aren’t enough of us to create and maintain products for every specific need :)
I’m creating a new product, codenamed Mozaic, to make it as easy as possible to roll your own AU MIDI plugins, ranging in complexity from simple/basic filters to moderately sophisticated apps and generative plugins. Mozaic will be able to cover a lot of plumbing ground.
If Super Mario has taught us anything about plumbing, it is this:
It can be a lot of fun
There’s always a learning curve, but a well-designed learning curve is gentle and contributes to the fun challenge
These two insights have been guiding principles for my design of Mozaic as a tool that seeks to balance power, accessibility and depth.
So what’s Mozaic?
Mozaic consists of two main ingredients: (A) a very readable and flexible scripting language and (B) a programmable AU MIDI plugin container
Very unfinished work in progress
The MIDI plugin part is like a MIDI controller with lots of features (such as ready-to-use LFOs, AU Parameters, host communication, tempo syncing, timer events, scales, programmable metronome, etc.) which you can tap into using the scripting language.
This means all the heavy lifting is done for you by the plugin. As with all AUv3, each plugin instance can run a different script.
The scripts are powerful and designed for MIDI and music applications; you can set up an LFO using a single line of script and get usable MIDI values from the LFO with just one additional line.
Writing a funky MIDI filter (e.g. round-robin distribution of incoming notes over several MIDI output channels) would just take a handful of lines of script.
About the scripting language
I’ve put a lot of effort into designing a language that’s powerful for MIDI applications and at the same very readable for humans. This means that you can look at the preset scripts — or someone else’s code — and get a good idea of what’s going on. And make it easy to quickly modify a script for a project you’re working on.
The scripting language is pretty powerful, because I designed it specifically around MIDI plugin use cases.
- It’s fully event-based (e.g. you can make things happen when MIDI comes in, when the host starts playing, when the user tweaks a knob, and two dozen other useful events)
- It’s easy to respond to MIDI, or to generate MIDI of your own (e.g. for generative apps, CC generators, or oddball sequencing concepts)
- You get easy access to AUv3 functionality, such as the AU host’s status and transport information, AU Parameters, host synchronization, etc.
- You can freely use (and dynamically label) all knobs and buttons on the provided plugin GUI to let your users interact with your plugin as if it were a MIDI controller device
- built-in LFO support, pedal support, musical scales support, etc. makes it easy to do interesting stuff with just a few lines of code
- No need to know anything about the dreadfully undocumented internals of Apple’s AU standard or how to write realtime-safe code
I’m also writing a programming guide, which should be easy enough for anyone to dive into and get started quickly. It will teach you the syntax of Mozaic Script, but also explain how to effectively use conditionals, nested loops, variable arrays, and lots of other useful programming basics.
In summary, Mozaic will not be for everyone and does not offer the instant-gratification factor of the next synth plugin. But I’m putting a lot of depth and value in it, just under the surface, waiting to be unlocked by the creative community.Images
Bram BosOperating Systems
iPhone, iPadProduct Info
TBA - convert