Table of Contents

Namespace PluginUI.NPlug

Hosts PluginUI editors in NPlug VST3 plug-ins: PluginEditorView (the IPlugView adapter), PluginUIController<TModel> (parameter edits, MIDI learn, shared state), PluginUIProcessor<TModel> (notes played in the editor, shared state) and the parameter bridge (NPlugParameter).

Classes

NPlugMidiLearn

IMidiLearnService on top of the VST3 MIDI mapping of a controller: the host turns the assigned MIDI controllers into parameter changes (IMidiMapping), learning listens to the live controllers the host reports (IMidiLearn::onLiveMIDIControllerInput). Created by PluginUIController<TModel>, which saves the assignments with the controller state.

NPlugParameter

IParameter view of an NPlug NPlug.AudioParameter: bind any PluginUI control to a VST3 parameter. Obtain instances from NPlugParameterSet (one per editor), which raises Changed for host automation, preset loads and edits.

NPlugParameterSet

The NPlug parameters of one editor as IParameters. Listens to the model while the editor is open and forwards value changes (automation, presets, edits) to the bound controls.

PluginEditorView

VST3 editor view (NPlug NPlug.IAudioPluginView) hosting a PluginUI element tree in a UIHost: window lifecycle, content scale, resizing negotiation with the DAW, keyboard and wheel forwarding, host parameter context menus (with MIDI learn), findParameter and notes played on the editor.

PluginUIController<TModel>

Base edit controller for plug-ins with a PluginUI editor: implements IParameterEditSink on top of NPlug's concurrent edit support, creates the view on Windows only, sends the notes played on the editor to the processor, receives the processor's shared state and provides MIDI learn.

PluginUIMessages

Messages exchanged by PluginUIController<TModel> and PluginUIProcessor<TModel> through the VST3 connection (IConnectionPoint::notify, always on the UI thread).

PluginUIProcessor<TModel>

Base audio processor for plug-ins with a PluginUI editor: receives the notes played on the editor (TryDequeueUINote(out UINoteEvent)) and shares an object with the controller (CreateSharedState()), for meters, note activity or waveforms read by the UI without locks.

UINoteQueue

Bounded queue carrying UINoteEvents from the UI thread to the audio thread. The audio side (TryDequeue(out UINoteEvent)) never blocks nor allocates; producers are serialized by a lock that the audio thread never takes.

Structs

UINoteEvent

A note played on the editor (on-screen keyboard, pads), delivered to the processor.

Interfaces

IParameterEditSink

Bridge between the editor and the controller: VST3 edit protocol, MIDI learn and notes played on the editor (PluginUIController<TModel> implements it for you).

Enums

UINoteKind

Kind of a note event coming from the editor.