Skip to content
Pascal Gauthier edited this page Sep 20, 2025 · 8 revisions

PluginCollider

PluginCollider is an implementation of scsynth (the SuperCollider server component) designed to run directly inside a DAW plugin. While PluginCollider can listen for OSC messages from sclang, the intended workflow is to build precompiled SynthDefs and include them in the DAW plugin instance. This way, sclang is not needed when loading your DAW project.

PluginCollider Project

A PluginCollider project is a snapshot of a SuperCollider session in which SynthDefs and buffers (with buffer support planned in a future version) are saved into a single entity. This allows them to be restored and played musically within a DAW session.

Within a project, you can organize a SynthDef hierarchy that includes MIDI Note nodes (SynthDefs triggered by MIDI notes) and FX nodes (SynthDefs that run continuously as effects). You can group these nodes into a Group, similar to how grouping works in SuperCollider.

  • MIDI Note Nodes: Triggered by MIDI notes. You can specify a note range so that only notes within that range will activate the node.
  • FX Nodes: Always running, acting as audio effects.

The UI allows you to drag nodes to reorder them within the group. You can also use the context menu to add or remove nodes.

SCSynthDef Format

The quickest way to generate an .scsynthdef file from sclang is to use the .writeDefFile(".") method, which writes the SynthDef to the current directory:

SynthDef("testfx2b", { |out = 0, vol = 1|
    var sig;
    sig = SoundIn.ar([0, 1]);  // <==== READ INPUT FROM DAW
    ReplaceOut.ar(out, sig * vol);
}).writeDefFile(".");

If you're using audio input from your DAW, the SoundIn UGen is required.

When processing MIDI Note nodes, PluginCollider will look for these parameters in the SynthDef:

Midi Event ScSynDef args Conversion
note-on midi note freq Converts midi node (0-127) to frequency (hz)
note-on velocity amp Converts midi velocity (0-127) to amp(0.0-1.0), linearly (for now).
note-off gate Sends gate=0 on midi note off

If these parameters are omitted, the node will still be triggered, but with the SynthDef's default values.

ControlBus and Parameters

SynthDef parameters are read from the .scsynthdef file. Since there is no metadata available (especially for parameter ranges), PluginCollider will attempt to infer this information based on the parameter names and default values.

SuperCollider ControlBuses are mapped to DAW plugin parameters. In the ControlBus section of the project tree, you can configure up to 32 different ControlBuses by setting their names and ranges. These should be visible from your DAW.

You can assign a SynthDef parameter to a ControlBus by clicking "Assign". PluginCollider will prompt you to optionally reconfigure the ControlBus to match the SynthDef's parameter range. Once a parameter is assigned to a ControlBus, it becomes "grayed out" in the SynthDef panel, indicating that it is now externally controlled.

SuperCollider Plugins

If PluginCollider were distributed as source-only (requiring users to build it themselves), this wouldn't be an issue. However, due to macOS's strict binary notarization requirements and the complexity of handling Windows binaries (which require .DLLs to be on the system path), the initial user experience was suboptimal.

To simplify deployment, PluginCollider is currently compiled with SC_DYNAMIC_PLUGINS set to false, ensuring that everything works out of the box.

Clone this wiki locally