Mozaic - Scriptable iOS midi plugin

script your own midi processing environments and then run them on portable devices.

teletype vibes for sure!

though i do wish this was built for platforms beyond iOS / AUv3


If you’re plugged in via Lightning to a Mac and routed through something like AUM you could use this to trigger desktop applications, also if you were using an iOS Audio Interface with MIDI you could send the signals elsewhere.


iOs seems one of the more interesting “general computing” based platforms (as opposed to things like Norns, Mod Duo, Organelle etc etc) and with MIDI plugins and platforms like Ape Matrix and AUM which are a lot more interesting than the usual DAWs it’s definitely got a lot of potential.

Would love to see the desktop world shake up a bit more (also from a market point of view - you don’t make much money writing iOs stuff sadly)

yes! i totally agree that iOS is exciting. i use some very inspiring apps in my process and didn’t mean to imply that it was a negative - more that i want everyone who doesn’t have an iThing to be able to use cool stuff like this, too :slight_smile:

I didn’t take your comment as negative :slight_smile: I was simply echoing thoughts I’ve had - my desktop DAWs feel like the most staid tools I use - even Bitwig - which is kind of trying new stuff seems very conventional. & while I don’t lack for interesting tools - it’s like a whole area being largely ignored…

1 Like

Have you had a play around with this? I’m looking for a way to scratch my SP 303 itch without losing the method of production I prefer (i.e. using iOS devices, particularly Koala on iPhone at present). Do you think Mozaic would allow me to create something along those lines?

So cool, thx @shellfritsch
Lots of great coders here on lines, any new Mozaic code?
It may be on the web somewheres… and it seems like it could go here
Code Exchange…
Here’s one, mostly tweaked from the manual
but it is in 6…drives troublemaker

SetMetroPPQN 6
SetupLFO 0, 26, 86, no, 0.17
lfovalue = GetLFOValue 0
SendMIDINoteOn 0, lfovalue, 100
SendMIDINoteOff 0, lfovalue, 0, 500.0

Hey all,

Bram Bos here, creator of Mozaic (and a bunch of other mobile music plugins). Great to see a positive interest in mobile as an augmentation of modular music making.

I’ve seen a real ‘modular mindset’ emerge in the iOS music scene since I made Rozeta - in the sense that iOS plugins coupled with free-form hosts like AUM and ApeMatrix are encouraging people to think about making music in a much more DAW-less, nonlinear, improvisational/generative way.

At least I’m a firm believer in that approach, hence I made Mozaic to make it easier to create very specialized and experimental modular ‘widgets and plumbing’ to build such modular MIDI setups.

There’s also a bit of a Mozaic script exchange going on over at

Let me know if you have questions!


Bram Bos!

You’re a hero, man! Thrilled to see you here… Welcome to Lines!

Ripplemaker changed my relationship with my iOS devices, and the Rozeta suite turned AUM into a monster!

Thanks so much for your brilliant work!


Really digging Mozaic once I took the time to learn the scripting language.

I took a break from working on my AUv3 synths last night to make a clone of the OP-1 “infinity” sequencer in Mozaic. Tap record, hit any number of notes (including chords, it works polyphonically), hit record again and it will start looping.

demo here:

code here:

@brambos I found a few wee bugs:

  • I tried naming the pads a really really long string so that the text lined up with the top 8 pads as a cheap way to label them. Crashed the AU.
  • When starting playback in AUM, OnMetroPulse gets called before OnHostStart. This was counterintuitive as I was resetting some counters in OnHostStart that I would increment in OnMetroPulse. Not sure if intentional.
  • I can’t seem to assign an array of strings in one go, like displayValues = [{1/32}, {1/16}, {1/8}]

Really enjoying it though! Now I’m not sure if I want to spend the time to make my sequencer ideas into their own AUv3’s any time soon!

Still lots to do, I think I’ll make it store up to 8 or 16 separate sequences and then be switchable via program change.


Hey! Interesting script, I’ll give this a good whirl later today!

  • Proper pad labelling is coming in 1.0.3 later this week (I’ll look into the crash though)
  • Hmmm… HostStart should come before MetroPulse indeed. I’ll see if I can make sure this always happens
  • Arrays can only contain booleans and numerical values. I decided against having string variables in Mozaic as the use cases for them are extremely limited (just for labelling) and having them would require adding a ton of string-handling-functions. I figured that wasn’t worth it. But more labelling options (adding note names and scale names) are being added in 1.0.3



Bram - excuse my ignorance: can Mozaic create audio processing plugins?

Somewhat related, something that is missing from my AUM ‘modular’ mixer and effects setup is a simple clock pulse -> MIDI clock AUv3 plugin.

Being able to plug an analog clock pulse from a sequencer into a spare audio input, and sync my effects in AUM would be great!
It would be a good extention for Mozaic too, being able to sync lfos and events etc to a incoming clock, or at a scripting level just to be able to use an analog pulse in as an event trigger

1 Like

I don’t have much to add to this topic but since you’re here: Ripplemaker is one of my favorite apps on the ipad, really great stuff. :slight_smile:


No, it’s purely MIDI mangling and generation right now.

1 Like

So… can we hook this into the norns? Because that would be fun.

idk, does Norns have some access to midi through supercollider?
funny, imho, that midi still works for stuff

it’d be cool to rock supercollider on iOS
perhaps someday through an AUv3 plug in :slight_smile:

1 Like

got the rozeta collider to be a midi control for mozaic probably gate sequencer

so cool, thx @brambos

I have been away from my ipad for music purpose for a while, this is really good!

1 Like

Really enjoying these. I use them together, routing MIDI Marble into clusters before sending the result to a synth.
Really enjoy some of the pluckier tones from iceGear synths, sent into Spectrum Granular.
So many knobs to play with! Performative and generative all at once.