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),
findParameterand 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.