Struct DelayModuleHandle
This module delays the sound and the incoming events (note, pitch, phase, velocity). Max delay length = 1 min.
public readonly struct DelayModuleHandle : IDelayModuleHandle, ITypedModuleHandle, IGenericSynthModuleHandle
- Implements
Constructors
DelayModuleHandle(SynthModuleHandle)
public DelayModuleHandle(SynthModuleHandle moduleHandle)
Parameters
moduleHandleSynthModuleHandle
Properties
Id
Gets the ID of the synthesizer module.
public int Id { get; }
Property Value
- int
ModuleHandle
public SynthModuleHandle ModuleHandle { get; }
Property Value
Slot
Gets the slot associated with this instance.
public ISlot Slot { get; }
Property Value
Methods
AssertCorrectHandleType()
Throws an exception if the underlying module is not of the correct type.
public void AssertCorrectHandleType()
Exceptions
- IncorrectSynthHandleTypeException
Thrown if the underlying module is not of the correct type.
ConnectInput(SynthModuleHandle)
Connect the input of this module to the output of another module.
public void ConnectInput(SynthModuleHandle targetModule)
Parameters
targetModuleSynthModuleHandle
Remarks
Requires LockSlot(int) / UnlockSlot(int).
Calls sv_connect_module(int, int, int).Exceptions
- SunVoxException
Thrown when the operation fails.
ConnectOutput(SynthModuleHandle)
Connect the output of this module to the input of another module.
public void ConnectOutput(SynthModuleHandle targetModule)
Parameters
targetModuleSynthModuleHandle
Remarks
Requires LockSlot(int) / UnlockSlot(int).
Calls sv_connect_module(int, int, int).Exceptions
- SunVoxException
Thrown when the operation fails.
DisconnectInput(SynthModuleHandle)
Disconnect the input of this module from the output of another module.
public void DisconnectInput(SynthModuleHandle targetModule)
Parameters
targetModuleSynthModuleHandle
Remarks
Requires LockSlot(int) / UnlockSlot(int).
Calls sv_connect_module(int, int, int).Exceptions
- SunVoxException
Thrown when the operation fails.
DisconnectOutput(SynthModuleHandle)
Disconnect the output of this module from the input of another module.
public void DisconnectOutput(SynthModuleHandle targetModule)
Parameters
targetModuleSynthModuleHandle
Remarks
Requires LockSlot(int) / UnlockSlot(int).
Calls sv_connect_module(int, int, int).Exceptions
- SunVoxException
Thrown when the operation fails.
GetAllPassFilter()
Original name: 12 'All-pass filter'
public Toggle GetAllPassFilter()
Returns
GetChannels()
Original name: 6 'Channels'
public Channels GetChannels()
Returns
GetColor()
Get the module color.
public (byte, byte, byte) GetColor()
Returns
- (byte R, byte G, byte B)
RGB color tuple (r, g, b).
Remarks
GetDelayL(ValueScalingMode)
Value range: displayed: 0 to 256, real: 0 to 256 Original name: 2 'Delay L'
public int GetDelayL(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueScalingModeValueScalingMode
Returns
- int
GetDelayMultiplier(ValueScalingMode)
Original name: 9 'Delay multiplier'
public int GetDelayMultiplier(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueScalingModeValueScalingMode
Returns
- int
GetDelayR(ValueScalingMode)
Value range: displayed: 0 to 256, real: 0 to 256 Original name: 3 'Delay R'
public int GetDelayR(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueScalingModeValueScalingMode
Returns
- int
GetDelayUnit()
Original name: 8 'Delay unit'
public DelayUnit GetDelayUnit()
Returns
GetDry(ValueScalingMode)
Value range: displayed: 0 to 512, real: 0 to 512 Original name: 0 'Dry'
public int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueScalingModeValueScalingMode
Returns
- int
GetExists()
Check if a module exists.
public bool GetExists()
Returns
- bool
true if module exists.
Remarks
GetFeedback(ValueScalingMode)
Value range: displayed: 0 to 32768, real: 0 to 32768 Original name: 10 'Feedback'
public int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueScalingModeValueScalingMode
Returns
- int
GetFineTune()
Get the module fine tune and relative note values.
public FineTunePair GetFineTune()
Returns
- FineTunePair
Fine tune pair containing fine tune value and relative note.
Remarks
GetFlags()
Get the module flags.
public ModuleFlags GetFlags()
Returns
- ModuleFlags
Module flags indicating existence, type, state, and connections.
Remarks
GetInputModules()
Get the array of input modules connected to this module.
public SynthModuleHandle[] GetInputModules()
Returns
- SynthModuleHandle[]
Array of connected input module numbers.
Remarks
GetInputs()
Get the array of input module numbers connected to this module.
public int[] GetInputs()
Returns
- int[]
Array of connected input module numbers.
Remarks
GetInverse()
Original name: 7 'Inverse'
public Toggle GetInverse()
Returns
GetModuleType()
Returns the module type. If the module does not exist, returns null. If the module type is unknown (due to library mismatch or otherwise), returns Unknown.
public SynthModuleType? GetModuleType()
Returns
GetName()
Get the module name.
public string? GetName()
Returns
- string
Module name, or null if unavailable.
Remarks
Calls sv_get_module_name(int, int).
GetNegativeFeedback()
Original name: 11 'Negative feedback'
public Toggle GetNegativeFeedback()
Returns
GetOutputModules()
Gets the array of output modules connected to this module.
public SynthModuleHandle[] GetOutputModules()
Returns
- SynthModuleHandle[]
Array of connected output module numbers.
Remarks
GetOutputs()
Get the array of output module numbers connected from this module.
public int[] GetOutputs()
Returns
- int[]
Array of connected output module numbers.
Remarks
GetPosition()
Get the module position on the canvas.
public (int, int) GetPosition()
Returns
- (int x, int y)
Tuple containing X and Y coordinates.
Remarks
Calls sv_get_module_xy(int, int).
GetVolumeL(ValueScalingMode)
Value range: displayed: 0 to 256, real: 0 to 256 Original name: 4 'Volume L'
public int GetVolumeL(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueScalingModeValueScalingMode
Returns
- int
GetVolumeR(ValueScalingMode)
Value range: displayed: 0 to 256, real: 0 to 256 Original name: 5 'Volume R'
public int GetVolumeR(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueScalingModeValueScalingMode
Returns
- int
GetWet(ValueScalingMode)
Value range: displayed: 0 to 512, real: 0 to 512 Original name: 1 'Wet'
public int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueScalingModeValueScalingMode
Returns
- int
IsCorrectHandleType()
Determines whether the underlying module is of the correct type.
public bool IsCorrectHandleType()
Returns
- bool
MakeAllPassFilterEvent(Toggle)
This is a helper method to automatically handle turning target controller values into column values.
For this controller the input value is taken as is, only clamped to column value range.
public PatternEvent MakeAllPassFilterEvent(Toggle value)
Parameters
valueToggle
Returns
MakeChannelsEvent(Channels)
This is a helper method to automatically handle turning target controller values into column values.
For this controller the input value is taken as is, only clamped to column value range.
public PatternEvent MakeChannelsEvent(Channels value)
Parameters
valueChannels
Returns
MakeDelayLEvent(int)
This is a helper method to automatically handle turning target controller values into column values.
For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped.
public PatternEvent MakeDelayLEvent(int value)
Parameters
valueint
Returns
MakeDelayMultiplierEvent(int)
This is a helper method to automatically handle turning target controller values into column values.
For this controller the input value is taken as is, only clamped to column value range.
public PatternEvent MakeDelayMultiplierEvent(int value)
Parameters
valueint
Returns
MakeDelayREvent(int)
This is a helper method to automatically handle turning target controller values into column values.
For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped.
public PatternEvent MakeDelayREvent(int value)
Parameters
valueint
Returns
MakeDelayUnitEvent(DelayUnit)
This is a helper method to automatically handle turning target controller values into column values.
For this controller the input value is taken as is, only clamped to column value range.
public PatternEvent MakeDelayUnitEvent(DelayUnit value)
Parameters
valueDelayUnit
Returns
MakeDryEvent(int)
This is a helper method to automatically handle turning target controller values into column values.
For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped.
public PatternEvent MakeDryEvent(int value)
Parameters
valueint
Returns
MakeEvent(Note, byte?, byte?, Effect, ushort)
Creates a new generic pattern event with optional parameters for flexible event construction.
public PatternEvent MakeEvent(Note note = default, byte? velocity = null, byte? controller = null, Effect effect = Effect.None, ushort value = 0)
Parameters
noteNoteNote value. Allows for explicit note commands. velocitybyte?Note velocity. Returns null when default velocity is used. Automatically handles the +1 offset used in raw data. controllerbyte?Controller identifier (0-based). Returns null when no controller is specified. Module controllers: 0-126 (raw data: 1-127). MIDI controllers: 127+ (raw data: 0x80+). Automatically handles the +1 offset used in raw data. effectEffectPattern event effect code. valueushortParameter value for controller or effect (16-bit unsigned integer). Range: 0-32768 (0x8000) for controllers, 0-65535 (0xFFFF) for effects.
For pitch commands: 0x0000 = highest pitch, 0x7800 = C0, 0x100 = one semitone.
Returns
- PatternEvent
A new PatternEvent with the specified fields.
Remarks
This method provides maximum flexibility for creating events. For common scenarios, consider using specific factory methods like NoteEvent(Note, int?, byte?), ControllerEvent(int, byte, ushort), etc.
MakeFeedbackEvent(int)
This is a helper method to automatically handle turning target controller values into column values.
For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped.
public PatternEvent MakeFeedbackEvent(int value)
Parameters
valueint
Returns
MakeInverseEvent(Toggle)
This is a helper method to automatically handle turning target controller values into column values.
For this controller the input value is taken as is, only clamped to column value range.
public PatternEvent MakeInverseEvent(Toggle value)
Parameters
valueToggle
Returns
MakeNegativeFeedbackEvent(Toggle)
This is a helper method to automatically handle turning target controller values into column values.
For this controller the input value is taken as is, only clamped to column value range.
public PatternEvent MakeNegativeFeedbackEvent(Toggle value)
Parameters
valueToggle
Returns
MakeNoteEvent(Note, byte?)
Creates a note event that triggers a note on the specified module.
public PatternEvent MakeNoteEvent(Note note, byte? velocity = null)
Parameters
noteNoteNote value. Allows for explicit note commands. velocitybyte?Note velocity. Returns null when default velocity is used. Automatically handles the +1 offset used in raw data.
Returns
MakeSetControllerValueEvent(byte, ushort)
Creates a controller event that changes a module parameter.
public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value)
Parameters
controllerIdbytevalueushortParameter value for controller or effect (16-bit unsigned integer). Range: 0-32768 (0x8000) for controllers, 0-65535 (0xFFFF) for effects.
For pitch commands: 0x0000 = highest pitch, 0x7800 = C0, 0x100 = one semitone.
Returns
Remarks
For better type safety and readability, consider using typed module handles and extension methods.
MakeSetFrequencyEvent(double, byte?)
Creates a Set Pitch event by converting a frequency in Hz to the appropriate pitch value.
public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = null)
Parameters
frequencydoubleFrequency in Hz (e.g., 440.0 for A4).
velocitybyte?Velocity value (0-128). Use null for default velocity.
Returns
- PatternEvent
A new PatternEvent with the calculated pitch value.
Examples
// Set pitch to A4 (440 Hz)
var a440 = PatternEvent.SetFrequencyEvent(0, 440.0, 100);
// Set pitch to middle C (261.63 Hz)
var c4 = PatternEvent.SetFrequencyEvent(0, 261.63);
MakeSetPitchEvent(ushort, byte?)
Creates a Set Pitch event with exact pitch value for microtonal or pitch-bend effects.
public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = null)
Parameters
pitchushortPitch value where 0x0000 = highest pitch, 0x7800 = C0 (lowest), 0x100 = one semitone.
velocitybyte?Velocity value (0-128). Use null for default velocity.
Returns
- PatternEvent
A new PatternEvent configured as a set pitch event.
Examples
// Set pitch to middle C (C4 = 0x3C00)
var middleC = PatternEvent.SetPitchEvent(0, 0x3C00);
// Set pitch to A4 (440Hz reference = 0x4500)
var a440 = PatternEvent.SetPitchEvent(0, 0x4500, 100);
MakeVolumeLEvent(int)
This is a helper method to automatically handle turning target controller values into column values.
For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped.
public PatternEvent MakeVolumeLEvent(int value)
Parameters
valueint
Returns
MakeVolumeREvent(int)
This is a helper method to automatically handle turning target controller values into column values.
For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped.
public PatternEvent MakeVolumeREvent(int value)
Parameters
valueint
Returns
MakeWetEvent(int)
This is a helper method to automatically handle turning target controller values into column values.
For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped.
public PatternEvent MakeWetEvent(int value)
Parameters
valueint
Returns
ReadScope(AudioChannel, short[])
Read module scope view, and write it to a buffer.
public int ReadScope(AudioChannel channel, short[] buffer)
Parameters
channelAudioChannelAudio channel.
buffershort[]Buffer to receive scope data.
Returns
- int
Number of samples successfully read.
Remarks
Exceptions
- ArgumentNullException
Thrown if
bufferis null.
SetAllPassFilter(Toggle)
Original name: 12 'All-pass filter' Note: equivalent SendEvent(int, PatternEvent) will be used internally, which may introduce latency. It will also be affected by the event timestamp set.
public void SetAllPassFilter(Toggle value)
Parameters
valueToggle
SetChannels(Channels)
Original name: 6 'Channels' Note: equivalent SendEvent(int, PatternEvent) will be used internally, which may introduce latency. It will also be affected by the event timestamp set.
public void SetChannels(Channels value)
Parameters
valueChannels
SetColor(byte, byte, byte)
Set the module color.
public void SetColor(byte r, byte g, byte b)
Parameters
rbyteRed component (0 to 255).
gbyteGreen component (0 to 255).
bbyteBlue component (0 to 255).
Remarks
Exceptions
- SunVoxException
Thrown when the operation fails.
SetDelayL(int, ValueScalingMode)
Value range: displayed: 0 to 256, real: 0 to 256 Original name: 2 'Delay L' Note: equivalent SendEvent(int, PatternEvent) will be used internally, which may introduce latency. It will also be affected by the event timestamp set.
public void SetDelayL(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueintvalueScalingModeValueScalingMode
SetDelayMultiplier(int, ValueScalingMode)
Original name: 9 'Delay multiplier' Note: equivalent SendEvent(int, PatternEvent) will be used internally, which may introduce latency. It will also be affected by the event timestamp set.
public void SetDelayMultiplier(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueintvalueScalingModeValueScalingMode
SetDelayR(int, ValueScalingMode)
Value range: displayed: 0 to 256, real: 0 to 256 Original name: 3 'Delay R' Note: equivalent SendEvent(int, PatternEvent) will be used internally, which may introduce latency. It will also be affected by the event timestamp set.
public void SetDelayR(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueintvalueScalingModeValueScalingMode
SetDelayUnit(DelayUnit)
Original name: 8 'Delay unit' Note: equivalent SendEvent(int, PatternEvent) will be used internally, which may introduce latency. It will also be affected by the event timestamp set.
public void SetDelayUnit(DelayUnit value)
Parameters
valueDelayUnit
SetDry(int, ValueScalingMode)
Value range: displayed: 0 to 512, real: 0 to 512 Original name: 0 'Dry' Note: equivalent SendEvent(int, PatternEvent) will be used internally, which may introduce latency. It will also be affected by the event timestamp set.
public void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueintvalueScalingModeValueScalingMode
SetFeedback(int, ValueScalingMode)
Value range: displayed: 0 to 32768, real: 0 to 32768 Original name: 10 'Feedback' Note: equivalent SendEvent(int, PatternEvent) will be used internally, which may introduce latency. It will also be affected by the event timestamp set.
public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueintvalueScalingModeValueScalingMode
SetFineTune(FineTunePair)
Sets the fine tune for the module.
public void SetFineTune(FineTunePair fineTune)
Parameters
fineTuneFineTunePair
SetInverse(Toggle)
Original name: 7 'Inverse' Note: equivalent SendEvent(int, PatternEvent) will be used internally, which may introduce latency. It will also be affected by the event timestamp set.
public void SetInverse(Toggle value)
Parameters
valueToggle
SetName(string)
Set the module name.
public void SetName(string name)
Parameters
namestringNew module name.
Remarks
Exceptions
- SunVoxException
Thrown when the operation fails.
- ArgumentNullException
Thrown if
nameis null.
SetNegativeFeedback(Toggle)
Original name: 11 'Negative feedback' Note: equivalent SendEvent(int, PatternEvent) will be used internally, which may introduce latency. It will also be affected by the event timestamp set.
public void SetNegativeFeedback(Toggle value)
Parameters
valueToggle
SetPosition(int, int)
Set the module position.
public void SetPosition(int x, int y)
Parameters
xintX coordinate (center: 512, working area: 0 to 1024).
yintY coordinate (center: 512, working area: 0 to 1024).
Remarks
Exceptions
- SunVoxException
Thrown when the operation fails.
SetVolumeL(int, ValueScalingMode)
Value range: displayed: 0 to 256, real: 0 to 256 Original name: 4 'Volume L' Note: equivalent SendEvent(int, PatternEvent) will be used internally, which may introduce latency. It will also be affected by the event timestamp set.
public void SetVolumeL(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueintvalueScalingModeValueScalingMode
SetVolumeR(int, ValueScalingMode)
Value range: displayed: 0 to 256, real: 0 to 256 Original name: 5 'Volume R' Note: equivalent SendEvent(int, PatternEvent) will be used internally, which may introduce latency. It will also be affected by the event timestamp set.
public void SetVolumeR(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueintvalueScalingModeValueScalingMode
SetWet(int, ValueScalingMode)
Value range: displayed: 0 to 512, real: 0 to 512 Original name: 1 'Wet' Note: equivalent SendEvent(int, PatternEvent) will be used internally, which may introduce latency. It will also be affected by the event timestamp set.
public void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed)
Parameters
valueintvalueScalingModeValueScalingMode
Operators
implicit operator SynthModuleHandle(DelayModuleHandle)
public static implicit operator SynthModuleHandle(DelayModuleHandle handle)
Parameters
handleDelayModuleHandle