New beta of OSC/PAR2 Available

A full rewrite of OSC/PAR is now available for testing as OSC/PAR2. Your existing keys for OSC/PAR will work as-is, no need for a new purchase. Quite a few new output modes (LFO, Envolope etc) and features available.

Try it out and let us know if you have any issues and feedback. Download links here:

Links updated on June 4, 2026

Windows

macOS

OSC/PAR2

OSC/PAR2 is a VST3 instrument for building modular, host-synced OSC control streams. Add modules, route them to OSC sender destinations, and map them to host automation.

Version 0.1.0 — VST3 Instrument — OSC sender A-E — Host transport aware


Quick Start

  1. Open OSC/PAR2 as a VST3 instrument in a host.
  2. Open the gear button and set OSC sender destinations A-E. By default they point to 127.0.0.1 on ports 8080 through 8084.
  3. Set the footer ADDRESS PREFIX. The default prefix is /OSCpar.
  4. Add a module from the top row: PAR, LFO, ENV, SEQ, or MSG.
  5. Set the module OSC address in its header. Example: prefix /OSCpar plus module address /LFO1 sends to /OSCpar/LFO1.
  6. Enable at least one sender button, A-E, in the module header. If no sender is enabled, that module sends no OSC.
  7. Register the app from the License tab. OSC output is disabled when the app is unregistered.

Important: OSC/PAR2 is designed to keep sending OSC while the plugin is loaded, even if the editor window is closed. Runtime OSC is driven from the processor side, not only from the visible editor.


Main Interface

The main interface is divided into module creation buttons, a scrollable module stack, and a footer for global state and transport options. Cards can be collapsed, expanded, muted, soloed, removed, and reordered by dragging their headers.

Card Header Controls

Control What it does
Triangle Expands or collapses the card. PAR does not expand, so its triangle is disabled.
Colored output slider PAR uses this as its main value. LFO, ENV, and SEQ use it as an amplitude scale for the generated output.
LOW / HIGH Maps the generated 0-1 value into the final output range. Negative values are allowed.
FLOAT / INT Selects whether the output is sent as a float or an integer. In INT mode, values are sent only when the integer changes.
ADDRESS Module OSC address. It is sanitized as an OSC address and committed when you press Enter or click away.
A B C D E Destination routing. These correspond to OSC sender A-E in Settings. At least one must be enabled to send OSC.
Output display Shows the final output value, or the current message string for MSG modules.
M / S Mutes or solos a module. Only one module can be soloed at a time. Soloing one module mutes the others.
X Removes the card.

Reordering Cards

Drag a card by its header to reorder it vertically. Other cards move out of the way when the dragged card crosses into their space. If the stack exceeds the visible area, use the mouse wheel or trackpad to scroll; the scrollbar is intentionally hidden.


OSC Setup

OSC/PAR2 has five OSC sender slots: A, B, C, D, and E. Each slot has a destination IP and port. Modules decide which sender slots they use through their A-E buttons in the card header.

Address Format

The final OSC address is built from the footer prefix plus the module address.

Field Example Result
Address prefix /OSCpar /OSCpar/LFO1
Module address /LFO1

Commit behavior: Address fields update only after commit. Press Enter or click away from the field. This prevents OSC messages from being sent to partial addresses while typing.


Modules

PAR — Parameter

PAR is a direct manual parameter output. It does not expand. Move the header slider to send the value through the selected A-E senders. The LOW/HIGH range maps the slider value to the final OSC value.

  • Good for manual OSC controls and host-automatable values.
  • Default output slider value is 100 percent.
  • PAR sends only when its value changes.

LFO — Low Frequency Oscillator

LFO generates a continuous host-synced or Hz-based modulation stream. It displays a waveform and playhead in the expanded area.

Control Description
Shape Saw, Sine, Triangle, Square, Pulse, or SnH. SnH is sample and hold and changes to a random value each cycle.
SYNC / Hz SYNC follows host transport. Hz mode uses free rate from 0.01 Hz to 10 Hz.
D / T Dotted and triplet modifiers are available in SYNC mode.
Rate In SYNC mode, rate ranges from 4 bars to 1/64 notes. The default is 1 bar.
Phase Offset Bipolar phase offset. The center position is no offset.
Skew / Pulsewidth Skew is available for sine and triangle. Pulsewidth is available for pulse.
INV Inverts the LFO waveform.

ENV — Envelope Trigger

ENV is an ADSR envelope triggered by MIDI note input or by the module’s manual TRIGGER button.

  • NOTE NUMBER selects the incoming MIDI note from 0-127. The default is 60.
  • Attack, Decay, Sustain, and Release sliders shape the envelope.
  • ENV sends OSC only while the envelope is active, not constantly while idle.
  • Holding the MIDI note holds the sustain phase; releasing the note starts release.

SEQ — Step Sequencer

SEQ is a 16-step transport-driven sequencer. It sends the active step value, not all step values at once.

  • Direction modes: FORWARD, REVERSE, PINGPONG, RANDOM.
  • SYNC/D/T/rate controls follow the same timing concept as the LFO.
  • Length is clamped from 1-16. Steps outside the length are disabled and greyed out.
  • Drag vertically on a step to set its value.
  • Hold Shift while editing a step to snap values to 0, 0.25, 0.5, 0.75, and 1.
  • Drag across multiple step faders to draw a sequence quickly.

MSG — Timeline Messages

MSG sends string messages at bar/beat/percent positions on the host timeline. It is intended for transport-aware cue messages.

  • New MSG cards begin with a default message at bar 1, beat 1.
  • Add a message to stamp the current transport position.
  • Edit the current message text and timeline position from the card’s edit row.
  • Use PREVIOUS and NEXT indicators to see the surrounding timeline messages.
  • Click a timeline tick to select and edit that message.
  • When triggered, MSG sends the current message, its time, previous message, and next message as arguments.
  • MSG does not use the amplitude slider, range controls, or float/int output mode.

Transport And MIDI Output

The footer contains global options for sending host transport and note data.

Option OSC address What is sent
SEND TRANSPORT <prefix>/Transport Bar, beat, and sixteenth-note position.
SEND NOTE DATA <prefix>/Note_0 through <prefix>/Note_127 MIDI note velocity as an integer value.

Settings

Open settings with the gear button in the top-right corner. The settings overlay darkens the plugin behind it and has four tabs: OSC, Appearance, License, and About.

Appearance Themes

The current theme colors the top module buttons, card titles, header sliders, waveform lines, sequencer steps, timeline ticks, and settings server labels.


Host Automation And VST Parameters

When modules are added, OSC/PAR2 exposes module-related VST parameters to the host. In hosts such as Ableton Live, use Configure to expose the parameters you want to automate.

  • Parameter names include the module type and OSC address tag, making them easier to identify in the host.
  • PAR values can be automated directly.
  • LFO controls such as rate, phase, and shape are available for mapping.
  • ENV ADSR controls are available for mapping.
  • Moving mapped host parameters updates the plugin controls.

Tip: Rename module OSC addresses before configuring automation in the host. That keeps the host parameter names meaningful.


License

The License tab accepts a username and serial. Once registration succeeds, the input fields are hidden and the tab shows a centered green REGISTERED TO <username> status.

  • Existing users can use compatible OSC/PAR (original one) serial credentials.

Troubleshooting

No OSC Is Arriving

  • Confirm the app is registered.
  • Confirm at least one A-E sender button is enabled in the module header.
  • Check the OSC sender IP and port in Settings.
  • Confirm your receiving app is listening on the same port.
  • Check that the footer prefix plus module address is the address you expect.

Host Clock Modules Are Not Moving

  • Start host playback so transport-driven modules advance.
  • Check whether the module is muted or another module is soloed.

Address Changes Send Too Early

  • Address fields commit on Enter or click-away. If you are still editing, partial text should not become the active OSC address.
  • Click away from the field to commit and defocus it.

OSC/PAR2 User Manual. Website: www.oscpilot.com. Programmed and designed by Joel Zimmerman.

3 Likes

Is there documentation for the new features?

ahaha coming shortly, for now youre just gunna have to fuck with it. :wink:

2 Likes

Fucked around with it and here’s some early notes:

  • reordering things doesn’t change which VST parameter is assigned to each output module
  • sometimes multiple VST parameters will adjust the same module
    • Not easily replicable
  • Par2 will forget all message strings each time you close the VST window

Everything else seems to behave as expected.

Also the VST parameter glitches will crash Live if messed around ‘in the wrong way’

After messing around with it for a little while, there are a lot of things about this that intrigued me about it. Although, some things are still confusing. Maybe to some, it would be intuitive, but I’ve only played around with OSC data so much.

Envelope - Very cool that we can do this now, but I wish there were some way to trigger this with MIDI notes.

Had this weird crash in FL Studio trying to use the Param Module, this is no big deal to be because I have both Ableton and FL Studio, although still concerning.

Many of the other features I really like. In the future I’d love for you guys to develop an audio follower! Been looking for something like this for ages, but most audio followers I know of kinda suck.

yeah, most audio followers do suck… but i think with a selection of modes it could not suck, like RMS vs Peak w/ smoothing option (some algo).. but i think also for “audio env foloow” the way to go is to use an envelope and trigger it with a threshold from the audio (the way compressors / gates use thresholds) then you can tune it a bit better for the decay / sus / release.

ill play around with it, and make those other fixes this week.

you “can” trigger an env with a midi note…. youll have to map the param. but…. the parameter problem is, VST3 params cant really be created “dynamically” like we do when adding / removing “modules” … so ill have to find a workaround… as in maybe push 100 params, and only publish them when a module is loaded to reserve the param / name it. when you load a VST, traditionally, all params are baked in, so to speak. our are not, so ill have to find a kinda workaround.

1 Like

Very promising features here! I especially like the sequencer.

Is it possible to get more precision from the sent parameters? When automating a parameter using a slow ramp the stepping is noticeable.

Yeah! I noticed this too. I was using OSC/PAR to convert to OSC data, then convert back to Midi, to control parameters In vst “PhasePlant”. I ended up linking the volume of a pure sin wave, to this value through a sideband, then sending it to an Audio Follower to smooth this value for PhasePlant with the attack and release.

Maybe the efficient way to implement this for OSC/PAR is a smoothing fader near the sequencer? I’m thinking of Shaperbox 3 vst as a reference.

Taking notes as I come across stuff…

  • First few attempts opening on my M1 macbook, Ableton crashed
    • I realized after messing around more that the crashes happened while trying to make changes when the session was playing. Later on I was safely making changes while session was playing so idk what the deal is.
  • Unable to change the OSC Space, it just crashes the DAW.
  • Transport controls flood the port, even when not playing the session. Biggest problem so far for me in terms of practically using it, but I’m assuming that’s not intentional.
  • Sequence is awesome
  • The setup for Notes makes sense to me
  • Is the idea behind Msg that you can kinda piggyback off assigned params to send cues?
  • LFO has the same issue as Transport controls at rest, the port is flooded with 0 values
    • Works as intended, I imagine, when session is playing. very useful
  • The port “banks” is a good addition, though I was slow in realizing I kept trying to “enable” ports where the transport controls are managed. Then I looked left lol

I like the add/remove UX. Idk if notes makes sense as something to add / remove like the others as you’re limited to adding one, so I sorta think of it the same as transport, you can enable or disable it, and that warrants a slightly different treatment (notes and transport could both be permanent rows with a toggle???). I like the value sliders for Sequence and LFO. I didn’t see how to change locking values to INT or FLOAT, so I hope that is kept from the first plugin.

Naming conventions and whether or not they’re kept the same as before (to be drag n drop with receiving tech of V1) is something to consider… so, transport controls are now nested in /Transport/, I think?, and note names looked a little different as well while also being nested under their own space.

1 Like

this is looking great!

i too would like some kind of smoothing / easing between sequencer values and easing curves for the envelope.

great work guys.

Hey, thanks for the feedback. That ended up being a bit of a false start. It just went through a rewrite, so I’ve updated the links above to new versions. If you want to try it out again. The UI is quite different now too.

I will post documentation for real later today too.

sorry for the delay, added some docs. I think the file extension for the saved configuration files will change from .oscpilot to .oscpar, but the internal format will be the same so you’ll just be able to rename those when you need to