Table of Contents

Interface IGenericSynthModuleHandle

Namespace
SunSharp
Assembly
SunSharp.dll

Represents a handle to a generic synthesizer module, providing access to module properties and operations regardless of the underlying module type.

public interface IGenericSynthModuleHandle

Properties

Id

Gets the ID of the synthesizer module.

int Id { get; }

Property Value

int

Slot

Gets the slot associated with this instance.

ISlot Slot { get; }

Property Value

ISlot

Methods

ConnectInput(ISynthModuleHandle)

Connect the input of this module to the output of another module.

void ConnectInput(ISynthModuleHandle targetModule)

Parameters

targetModule ISynthModuleHandle

Remarks

Exceptions

SunVoxException

Thrown when the operation fails.

ConnectInput(int)

Connect the input of this module to the output of another module.

void ConnectInput(int targetModuleId)

Parameters

targetModuleId int

Remarks

Exceptions

SunVoxException

Thrown when the operation fails.

ConnectOutput(ISynthModuleHandle)

Connect the output of this module to the input of another module.

void ConnectOutput(ISynthModuleHandle targetModule)

Parameters

targetModule ISynthModuleHandle

Remarks

Exceptions

SunVoxException

Thrown when the operation fails.

ConnectOutput(int)

Connect the output of this module to the input of another module.

void ConnectOutput(int targetModuleId)

Parameters

targetModuleId int

Remarks

Exceptions

SunVoxException

Thrown when the operation fails.

DisconnectInput(ISynthModuleHandle)

Disconnect the input of this module from the output of another module.

void DisconnectInput(ISynthModuleHandle targetModule)

Parameters

targetModule ISynthModuleHandle

Remarks

Exceptions

SunVoxException

Thrown when the operation fails.

DisconnectInput(int)

Disconnect the input of this module from the output of another module.

void DisconnectInput(int targetModuleId)

Parameters

targetModuleId int

Remarks

Exceptions

SunVoxException

Thrown when the operation fails.

DisconnectOutput(ISynthModuleHandle)

Disconnect the output of this module from the input of another module.

void DisconnectOutput(ISynthModuleHandle targetModule)

Parameters

targetModule ISynthModuleHandle

Remarks

Exceptions

SunVoxException

Thrown when the operation fails.

DisconnectOutput(int)

Disconnect the output of this module from the input of another module.

void DisconnectOutput(int targetModuleId)

Parameters

targetModuleId int

Remarks

Exceptions

SunVoxException

Thrown when the operation fails.

GetColor()

Get the module color.

(byte R, byte G, byte B) GetColor()

Returns

(byte R, byte G, byte B)

RGB color tuple (r, g, b).

Remarks

GetExists()

Check if a module exists.

bool GetExists()

Returns

bool

true if module exists.

Remarks

GetFineTune()

Get the module fine tune and relative note values.

FineTunePair GetFineTune()

Returns

FineTunePair

Fine tune pair containing fine tune value and relative note.

Remarks

GetFlags()

Get the module flags.

ModuleFlags GetFlags()

Returns

ModuleFlags

Module flags indicating existence, type, state, and connections.

Remarks

GetInputModules()

Get the array of input modules connected to this module.

ISynthModuleHandle[] GetInputModules()

Returns

ISynthModuleHandle[]

Array of connected input module numbers.

Remarks

GetInputs()

Get the array of input module numbers connected to this module.

int[] GetInputs()

Returns

int[]

Array of connected input module numbers.

Remarks

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.

SynthModuleType? GetModuleType()

Returns

SynthModuleType?

GetName()

Get the module name.

string? GetName()

Returns

string

Module name, or null if unavailable.

Remarks

GetOutputModules()

Gets the array of output modules connected to this module.

ISynthModuleHandle[] GetOutputModules()

Returns

ISynthModuleHandle[]

Array of connected output module numbers.

Remarks

GetOutputs()

Get the array of output module numbers connected from this module.

int[] GetOutputs()

Returns

int[]

Array of connected output module numbers.

Remarks

GetPosition()

Get the module position on the canvas.

(int x, int y) GetPosition()

Returns

(int x, int y)

Tuple containing X and Y coordinates.

Remarks

MakeEvent(Note, byte?, byte?, Effect, ushort)

Creates a new generic pattern event with optional parameters for flexible event construction.

PatternEvent MakeEvent(Note note = default, byte? velocity = null, byte? controller = null, Effect effect = Effect.None, ushort value = 0)

Parameters

note Note
Note value. Allows for explicit note commands.
velocity byte?
Note velocity. Returns null when default velocity is used. Automatically handles the +1 offset used in raw data.
controller byte?
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.
effect Effect
Pattern event effect code.
value ushort
Parameter 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.

MakeNoteEvent(Note, byte?)

Creates a note event that triggers a note on the specified module.

PatternEvent MakeNoteEvent(Note note, byte? velocity = null)

Parameters

note Note
Note value. Allows for explicit note commands.
velocity byte?
Note velocity. Returns null when default velocity is used. Automatically handles the +1 offset used in raw data.

Returns

PatternEvent

MakeSetControllerValueEvent(byte, ushort)

Creates a controller event that changes a module parameter.

PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value)

Parameters

controllerId byte
value ushort
Parameter 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

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.

PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = null)

Parameters

frequency double

Frequency in Hz (e.g., 440.0 for A4).

velocity byte?

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.

PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = null)

Parameters

pitch ushort

Pitch value where 0x0000 = highest pitch, 0x7800 = C0 (lowest), 0x100 = one semitone.

velocity byte?

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);

ReadScope(AudioChannel, short[])

Read module scope view, and write it to a buffer.

int ReadScope(AudioChannel channel, short[] buffer)

Parameters

channel AudioChannel

Audio channel.

buffer short[]

Buffer to receive scope data.

Returns

int

Number of samples successfully read.

Remarks

Exceptions

ArgumentNullException

Thrown if buffer is null.

SetColor(byte, byte, byte)

Set the module color.

void SetColor(byte r, byte g, byte b)

Parameters

r byte

Red component (0 to 255).

g byte

Green component (0 to 255).

b byte

Blue component (0 to 255).

Remarks

Exceptions

SunVoxException

Thrown when the operation fails.

SetFineTune(FineTunePair)

Sets the fine tune for the module.

void SetFineTune(FineTunePair fineTune)

Parameters

fineTune FineTunePair

SetName(string)

Set the module name.

void SetName(string name)

Parameters

name string

New module name.

Remarks

Exceptions

SunVoxException

Thrown when the operation fails.

ArgumentNullException

Thrown if name is null.

SetPosition(int, int)

Set the module position.

void SetPosition(int x, int y)

Parameters

x int

X coordinate (center: 512, working area: 0 to 1024).

y int

Y coordinate (center: 512, working area: 0 to 1024).

Remarks

Exceptions

SunVoxException

Thrown when the operation fails.