How a live show problem turned into a free plugin

BrooksAudio  •  March 2026

OSCalot running in Reaper

The vision

You’ve got a DAW running some playback content for your show. Over on the other side of the stage is a lighting desk, a QLab system firing video cues, and maybe a TouchDesigner patch doing something with those expensive video walls – all of these speak OSC — a modern, flexible network protocol that’s basically the language of modern show control.

And your DAW? It speaks MIDI. It does this really well (they’ve had 45 years to iron out the kinks)… but MIDI isn’t OSC!  Getting MIDI out of your DAW and into an OSC-native system in an easy way sounds simple, right up until you try to actually do it.

You can run extra routing apps and spend time configuring them, trying to remember the complex routing every time you need to make a change.  Or you can build the thing as a plug-in yourself…  The result is OSCalot — a free plugin that lives inside your DAW, reads MIDI and transport data, and fires it out as OSC messages over your local network.

The motivation

The motivation was a live show where we needed three things happening simultaneously from a single Reaper session; triggers firing cues in QLab, markers driving a lighting console’s snapshots, and bar/beat position keeping a TouchDesigner visual patch in sync. 

We looked at the options. External routing apps are functional, but one more thing to crash at the worst moment.  Custom hardware felt like overkill. So we started writing a VST3 / AU plugin instead.

A VST3 or AU plugin lives inside your DAW like a virtual instrument. It receives MIDI, reads the transport state, and has direct access to everything the DAW knows.

If you want to check out some examples of the complex OSC driven projects that Bill works on have a look at some of the other blog posts like these on COSMICAT and PEUGEOT.

OSCalot – OSC in your DAW

OSCalot has three tabs, each one a different way of getting OSC information out of your DAW and onto your network.

The MIDI Tab

This is the core use case. You define mappings: when I receive this MIDI event, send this OSC message to this IP address and path. You can map note on/off events, continuous controllers, pitch bend, and velocity. Each row has a source range filter, so if you only want to respond to a fader between positions 32 and 96, you can set that. Values outside the range are ignored.

The Markers Tab

Timeline markers let you fire OSC messages at specific positions in your session. Set a bar and beat, set a destination, set a value. When playback crosses that point, it fires. Perfect for show-critical cues that need to happen at an exact moment rather than being triggered manually.

The Transport Tab

The Transport tab maps DAW transport events (play, stop, record, tempo, time signature, bar and beat position) to OSC messages. They can be sent on change, and on play if you need.

Learn more about how OSCalot (v.0.1.0) works

Testing and real world challenges

Real-world testing is humbling. Here’s what the transport tab taught us.

Scrubbing Backwards

Here’s a fun one. When you press Stop in most DAWs, the playhead resets to wherever you parked your cursor – usually the beginning of the project. From inside the plugin, the timeline position just jumped backwards by a large amount. Which looks, from the plugin’s perspective, exactly like a Rewind event.

So in our early versions, every single time you pressed Stop, OSCalot would helpfully fire a Rewind OSC message as well.  The fix: only check for backward position jumps when the transport is actually running. If the DAW has already stopped, we don’t care where the playhead resets to. 

Pause, meet Stop. 

This one is actually a limitation of the DAW API rather than a bug in OSCalot. Most DAWs (including Reaper) don’t tell plugins whether you pressed Pause or Stop. They just say “not playing anymore”. Both transitions look completely identical from inside the plugin.

In version 0.1.0 we have both a Pause row and a Stop row in the Transport tab, but they both fire on the same transition. We document this and recommend: enable one or the other, not both!  This is likely to be revised in a future version!

The device that never checked its watch!

If your other OSC system is getting its BPM from OSCalot, but it only receives an update when the tempo changes, not when the session plays?  If the tempo is set in the DAW at the start of the rehearsal and then the receiving device is reset, it will reset to it’s default and not get told otherwise.  

The solution is the Send on Play toggle. For value-based events like tempo, time signature, and loop status, OSCalot can broadcast the current values the moment you hit play. Your downstream gear gets an instant sync-up before beat one lands, regardless of whether anything has actually changed.

Adding AU

VST3 is the plugin format that works everywhere. AU (Audio Units) is Apple’s format — used by Logic Pro, GarageBand, and a bunch of other Mac DAWs. For a while, OSCalot was VST3 only, which left Logic users out in the cold.

Adding AU support felt like it should be a significant chunk of work. It wasn’t. We added “AU” to a list in the build configuration file. That was the entire change. JUCE — the framework OSCalot is built on — handles all the AU wrapping automatically. Both formats share exactly the same underlying code. The Mac installer now includes both.

Unsigned

OSCalot is currently unsigned — we haven’t paid Apple’s notarization fees yet (that’s planned for v0.2.0). So macOS will flag the installer with a warning the first time you open it. The workaround is simple: Control-click the installer → Open → Open. On Windows: More Info → Run Anyway. One-time step, documented in the manual, then it’s done.

The journey

  • v0.0.6:  First transport tab. MIDI and Markers already solid. Everything works, mostly.
  • v0.0.7:  Various UI polish.
  • v0.1.0:  Send on Play for transport events. Loop Active added. AU format added alongside VST3. Mac / Windows installers built.

Coming soon

The core use cases are solid. Here’s what’s on the roadmap:

  • Preset files: currently your mappings save per-project. Shareable presets are the obvious next step.
  • Tidying up Transport: certain rows like pause may prove to be not necessary.  These will be removed and others could be added (based on user feedback).
  • MIDI channel filtering: per-row channel selection, currently responds to all channels.
  • MIDI CC / Note learn: click a row, move a controller, it fills in the number.
  • Code signing: making installation genuinely frictionless, no Control-click required.

Get It

OSCalot v0.1.0 is free to download for All Access and VIP patrons on the BROOKSAUDIO PATREONThe Mac installer includes both VST3 and AU. Windows gets VST3. Built with JUCE 7 under the Personal licence.

If you’re using OSCalot in a show, we’d genuinely love to hear about it. Drop a comment, send a message, or tag BrooksAudio!

1 love!  BB xx