Table of Contents

Class Vst3Parameter

Namespace
NAudio.Vst3
Assembly
NAudio.Vst3.dll

A single VST 3® parameter exposed by the plug-in's Parameters collection. Static metadata (id, title, units, step count) is captured at construction; the value getters / setters round-trip through the plug-in's IEditController on every call.

public sealed class Vst3Parameter
Inheritance
Vst3Parameter
Inherited Members

Remarks

VST 3 parameters live in two value spaces that the plug-in maps between non-linearly:

  • NormalizedValue — always [0.0, 1.0], uniform across every parameter. This is what automation lanes record and what the plug-in stores internally.
  • PlainValue / SetPlainValue(double) — the value in the plug-in's chosen units (Hz, dB, %, etc.). The mapping is owned by the plug-in; the only authoritative conversion is via IEditController, which this property delegates to.

For UI display use DisplayValue or FormatValue(double) — the plug-in formats the value with its own units ("8.4 kHz", "+3.2 dB") and that's almost always more useful than the raw PlainValue double.

Threading: this API is single-threaded — drive it from one thread (typically the UI thread), as the VST 3 edit-controller contract requires. A write updates the controller immediately (so a subsequent read reflects it) and is also queued for the plug-in's DSP at offset 0 of the next Process(ReadOnlySpan<float>, Span<float>, int) block via IParameterChanges.

Properties

CanAutomate

true if the parameter declared CanAutomate.

public bool CanAutomate { get; }

Property Value

bool

DefaultNormalizedValue

Plug-in's default value in normalised [0, 1] form.

public double DefaultNormalizedValue { get; }

Property Value

double

DisplayValue

Formatted current value — convenience for FormatValue(NormalizedValue).

public string DisplayValue { get; }

Property Value

string

Flags

Combined flag bitmask.

public Vst3ParameterFlags Flags { get; }

Property Value

Vst3ParameterFlags

Id

The plug-in's unique identifier for this parameter (Vst::ParamID).

public uint Id { get; }

Property Value

uint

IsBypass

true for the bypass parameter (also surfaced as BypassParameter).

public bool IsBypass { get; }

Property Value

bool

IsDiscrete

true if StepCount is non-zero (toggle or discrete list).

public bool IsDiscrete { get; }

Property Value

bool

IsHidden

true if the parameter is hidden from generic parameter lists.

public bool IsHidden { get; }

Property Value

bool

IsProgramChange

true if the parameter selects the active program for its owning unit (the target a MIDI program-change message drives).

public bool IsProgramChange { get; }

Property Value

bool

IsReadOnly

true if the parameter is read-only.

public bool IsReadOnly { get; }

Property Value

bool

NormalizedValue

Current value in normalised [0, 1] form. Reads via IEditController::getParamNormalized; writes are queued and applied to the DSP on the next Process(ReadOnlySpan<float>, Span<float>, int) call.

public double NormalizedValue { get; set; }

Property Value

double

PlainValue

Current value converted to the plug-in's plain units (Hz, dB, %, etc.). Returns a raw double with no unit attached — DisplayValue is usually what you want for display.

public double PlainValue { get; }

Property Value

double

ShortTitle

Short title for tight UI surfaces; falls back to Title when empty.

public string ShortTitle { get; }

Property Value

string

StepCount

0 = continuous; 1 = toggle (two states); >1 = discrete steps (the normalised range is split into StepCount + 1 values).

public int StepCount { get; }

Property Value

int

Title

UTF-16 title displayed in a host parameter list (e.g. "Cutoff").

public string Title { get; }

Property Value

string

UnitId

Owning unit id (Vst::UnitID); 0 = root unit.

public int UnitId { get; }

Property Value

int

Units

Units string (e.g. "Hz", "dB"); empty for unitless parameters.

public string Units { get; }

Property Value

string

Methods

FormatValue(double)

Formats normalized as the display string the plug-in's own UI would show (e.g. "8.4 kHz", "+3.2 dB", "Lowpass").

public string FormatValue(double normalized)

Parameters

normalized double

Returns

string

SetPlainValue(double)

Sets the parameter from a value in the plug-in's plain units.

public void SetPlainValue(double plain)

Parameters

plain double

ToString()

Returns a string that represents the current object.

public override string ToString()

Returns

string

A string that represents the current object.