Skip to content
Permalink
master
Go to file
 
 
Cannot retrieve contributors at this time
2997 lines (2876 sloc) 77.4 KB
local R = {}
local ControlSpec = require 'controlspec'
local eng = {} -- NOTE: functions rely on engine global
local util = {}
local specs = {}
local metadata = {}
-- controlspecs for each module parameter. this is also available in R.metadata. R.specs is left for backwards compatilibity.
specs['44Matrix'] = {
FadeTime = ControlSpec.new(0, 100000, "linear", 0, 5, "ms"),
Gate_1_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_1_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_1_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_1_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_2_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_2_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_2_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_2_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_3_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_3_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_3_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_3_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_4_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_4_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_4_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_4_4 = ControlSpec.new(0, 1, "linear", 1, 0, "")
}
specs['88Matrix'] = {
FadeTime = ControlSpec.new(0, 100000, "linear", 0, 5, "ms"),
Gate_1_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_1_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_1_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_1_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_1_5 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_1_6 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_1_7 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_1_8 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_2_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_2_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_2_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_2_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_2_5 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_2_6 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_2_7 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_2_8 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_3_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_3_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_3_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_3_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_3_5 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_3_6 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_3_7 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_3_8 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_4_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_4_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_4_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_4_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_4_5 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_4_6 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_4_7 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_4_8 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_5_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_5_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_5_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_5_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_5_5 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_5_6 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_5_7 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_5_8 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_6_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_6_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_6_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_6_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_6_5 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_6_6 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_6_7 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_6_8 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_7_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_7_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_7_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_7_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_7_5 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_7_6 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_7_7 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_7_8 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_8_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_8_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_8_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_8_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_8_5 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_8_6 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_8_7 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_8_8 = ControlSpec.new(0, 1, "linear", 1, 0, "")
}
specs['ADSREnv'] = {
Attack = ControlSpec.new(0.1, 2000, "exp", 0, 5, "ms"),
Decay = ControlSpec.new(0.1, 8000, "exp", 0, 200, "ms"),
Sustain = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
Release = ControlSpec.new(0.1, 8000, "exp", 0, 200, "ms"),
Gate = ControlSpec.new(0, 1, "linear", 1, 0, "")
}
specs['ADSREnv2'] = {
Attack = ControlSpec.new(0.1, 2000, "exp", 0, 5, "ms"),
Decay = ControlSpec.new(0.1, 8000, "exp", 0, 200, "ms"),
Sustain = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
Release = ControlSpec.new(0.1, 8000, "exp", 0, 200, "ms")
}
specs['Amp'] = {
Level = ControlSpec.UNIPOLAR
}
specs['Amp2'] = {
Gain = ControlSpec.UNIPOLAR,
GainModulation = ControlSpec.BIPOLAR,
In1 = ControlSpec.UNIPOLAR,
In2 = ControlSpec.UNIPOLAR,
Out = ControlSpec.UNIPOLAR,
Mode = ControlSpec.new(0, 1, "linear", 1, 0, "")
}
specs['BPFilter'] = {
AudioLevel = ControlSpec.new(0, 1, "amp", 0, 1, ""),
Frequency = ControlSpec.WIDEFREQ,
Resonance = ControlSpec.UNIPOLAR,
FM = ControlSpec.BIPOLAR,
ResonanceModulation = ControlSpec.BIPOLAR
}
specs['BRFilter'] = {
AudioLevel = ControlSpec.new(0, 1, "amp", 0, 1, ""),
Frequency = ControlSpec.WIDEFREQ,
Resonance = ControlSpec.UNIPOLAR,
FM = ControlSpec.BIPOLAR,
ResonanceModulation = ControlSpec.BIPOLAR
}
specs['Comp2'] = {
Threshold = ControlSpec.new(-math.huge, 0, "db", 0, -10, " dB"),
Attack = ControlSpec.new(0.1, 250, "exp", 0, 10, "ms"),
Release = ControlSpec.new(0.1, 1000, "exp", 0, 100, "ms"),
Ratio = ControlSpec.new(0, 20, "linear", 0, 3, ""),
MakeUp = ControlSpec.new(-math.huge, 20, "db", 0, 0, " dB")
}
specs['DbMixer'] = {
In1 = ControlSpec.DB,
In2 = ControlSpec.DB,
In3 = ControlSpec.DB,
In4 = ControlSpec.DB,
Out = ControlSpec.DB
}
specs['Decimate'] = {
Rate = ControlSpec.UNIPOLAR,
Depth = ControlSpec.UNIPOLAR,
Smooth = ControlSpec.UNIPOLAR,
RateModulation = ControlSpec.UNIPOLAR,
DepthModulation = ControlSpec.UNIPOLAR,
SmoothModulation = ControlSpec.UNIPOLAR
}
specs['Delay'] = {
DelayTime = ControlSpec.new(0.1, 5000, "exp", 0, 300, "ms"),
DelayTimeModulation = ControlSpec.BIPOLAR
}
specs['EQBP'] = {
Frequency = ControlSpec.WIDEFREQ,
Bandwidth = ControlSpec.new(0, 10, "linear", 0, 0, ""),
FM = ControlSpec.BIPOLAR,
BandwidthModulation = ControlSpec.BIPOLAR
}
specs['EnvF'] = {
Attack = ControlSpec.new(0.1, 2000, "exp", 0, 100, "ms"),
Decay = ControlSpec.new(0.1, 8000, "exp", 0, 200, "ms"),
Sensitivity = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
Threshold = ControlSpec.new(0, 1, "linear", 0, 0.5, "")
}
specs['FMVoice'] = {
Freq = ControlSpec.FREQ,
Timbre = ControlSpec.new(0, 5, "linear", 0, 1, ""),
Osc1Gain = ControlSpec.AMP,
Osc1Partial = ControlSpec.new(0.5, 12, "linear", 0.5, 1, ""),
Osc1Fixed = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Osc1Fixedfreq = ControlSpec.WIDEFREQ,
Osc1Index = ControlSpec.new(0, 24, "linear", 0, 3, ""),
Osc1Outlevel = ControlSpec.AMP,
Osc1_To_Osc1Freq = ControlSpec.AMP,
Osc1_To_Osc2Freq = ControlSpec.AMP,
Osc1_To_Osc3Freq = ControlSpec.AMP,
Osc2Gain = ControlSpec.AMP,
Osc2Partial = ControlSpec.new(0.5, 12, "linear", 0.5, 1, ""),
Osc2Fixed = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Osc2Fixedfreq = ControlSpec.WIDEFREQ,
Osc2Index = ControlSpec.new(0, 24, "linear", 0, 3, ""),
Osc2Outlevel = ControlSpec.AMP,
Osc2_To_Osc1Freq = ControlSpec.AMP,
Osc2_To_Osc2Freq = ControlSpec.AMP,
Osc2_To_Osc3Freq = ControlSpec.AMP,
Osc3Gain = ControlSpec.AMP,
Osc3Partial = ControlSpec.new(0.5, 12, "linear", 0.5, 1, ""),
Osc3Fixed = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Osc3Fixedfreq = ControlSpec.WIDEFREQ,
Osc3Index = ControlSpec.new(0, 24, "linear", 0, 3, ""),
Osc3Outlevel = ControlSpec.AMP,
Osc3_To_Osc3Freq = ControlSpec.AMP,
Osc3_To_Osc2Freq = ControlSpec.AMP,
Osc3_To_Osc1Freq = ControlSpec.AMP,
Mod_To_Osc1Gain = ControlSpec.BIPOLAR,
Mod_To_Osc2Gain = ControlSpec.BIPOLAR,
Mod_To_Osc3Gain = ControlSpec.BIPOLAR,
Mod_To_Osc1Freq = ControlSpec.BIPOLAR,
Mod_To_Osc2Freq = ControlSpec.BIPOLAR,
Mod_To_Osc3Freq = ControlSpec.BIPOLAR
}
specs['FShift'] = {
Frequency = ControlSpec.new(-2000, 2000, "linear", 0, 0, "Hz"),
FM = ControlSpec.BIPOLAR
}
specs['FreqGate'] = {
Frequency = ControlSpec.FREQ,
Gate = ControlSpec.new(0, 1, "linear", 1, 0, "")
}
specs['HPFilter'] = {
AudioLevel = ControlSpec.new(0, 1, "amp", 0, 1, ""),
Frequency = ControlSpec.WIDEFREQ,
Resonance = ControlSpec.UNIPOLAR,
FM = ControlSpec.BIPOLAR,
ResonanceModulation = ControlSpec.BIPOLAR
}
specs['LPFilter'] = {
AudioLevel = ControlSpec.new(0, 1, "amp", 0, 1, ""),
Frequency = ControlSpec.WIDEFREQ,
Resonance = ControlSpec.UNIPOLAR,
FM = ControlSpec.BIPOLAR,
ResonanceModulation = ControlSpec.BIPOLAR
}
specs['LPLadder'] = {
Frequency = ControlSpec.WIDEFREQ,
Resonance = ControlSpec.UNIPOLAR,
FM = ControlSpec.BIPOLAR,
ResonanceModulation = ControlSpec.BIPOLAR
}
specs['LinMixer'] = {
In1 = ControlSpec.UNIPOLAR,
In2 = ControlSpec.UNIPOLAR,
In3 = ControlSpec.UNIPOLAR,
In4 = ControlSpec.UNIPOLAR,
Out = ControlSpec.UNIPOLAR
}
specs['MGain'] = {
Gain = ControlSpec.new(-math.huge, 12, "db", 0, 0, " dB"),
Mute = ControlSpec.new(0, 1, "linear", 1, 0, "")
}
specs['MMFilter'] = {
AudioLevel = ControlSpec.new(0, 1, "amp", 0, 1, ""),
Frequency = ControlSpec.WIDEFREQ,
Resonance = ControlSpec.UNIPOLAR,
FM = ControlSpec.BIPOLAR,
ResonanceModulation = ControlSpec.BIPOLAR
}
specs['MultiLFO'] = {
Frequency = ControlSpec.new(0.01, 50, "exp", 0, 1, "Hz"),
Reset = ControlSpec.new(0, 1, "linear", 1, 0, "")
}
specs['MultiOsc'] = {
Range = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
Tune = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
FM = ControlSpec.UNIPOLAR,
PulseWidth = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
PWM = ControlSpec.UNIPOLAR
}
specs['MultiOscExp'] = {
Range = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
Tune = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
FM = ControlSpec.UNIPOLAR,
LinFM = ControlSpec.new(0, 5, "linear", 0.01, 0, ""),
PulseWidth = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
PWM = ControlSpec.UNIPOLAR
}
specs['Noise'] = {
}
specs['OGain'] = {
Gain = ControlSpec.new(-math.huge, 12, "db", 0, 0, " dB"),
Mute = ControlSpec.new(0, 1, "linear", 1, 0, "")
}
specs['PNoise'] = {
}
specs['PShift'] = {
PitchRatio = ControlSpec.new(0, 4, "linear", 0, 1, ""),
PitchDispersion = ControlSpec.new(0, 4, "linear", 0, 0, ""),
TimeDispersion = ControlSpec.new(0, 1, "linear", 0, 0, ""),
PitchRatioModulation = ControlSpec.BIPOLAR,
PitchDispersionModulation = ControlSpec.BIPOLAR,
TimeDispersionModulation = ControlSpec.BIPOLAR
}
specs['Pan'] = {
Position = ControlSpec.BIPOLAR,
PositionModulation = ControlSpec.BIPOLAR
}
specs['PolMixer'] = {
In1 = ControlSpec.BIPOLAR,
In2 = ControlSpec.BIPOLAR,
In3 = ControlSpec.BIPOLAR,
In4 = ControlSpec.BIPOLAR,
Out = ControlSpec.UNIPOLAR
}
specs['PulseOsc'] = {
Range = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
Tune = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
FM = ControlSpec.UNIPOLAR,
PulseWidth = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
PWM = ControlSpec.UNIPOLAR
}
specs['PulseOscExp'] = {
Range = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
Tune = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
FM = ControlSpec.UNIPOLAR,
LinFM = ControlSpec.new(0, 5, "linear", 0.01, 0, ""),
PulseWidth = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
PWM = ControlSpec.new(0, 1, "linear", 0, 0.4, "")
}
specs['QGain'] = {
Gain = ControlSpec.new(-math.huge, 12, "db", 0, 0, " dB"),
Mute = ControlSpec.new(0, 1, "linear", 1, 0, "")
}
specs['Rev1'] = {
Volume = ControlSpec.new(-math.huge, 12, "db", 0, -10, " dB"),
PreDelay = ControlSpec.new(1, 1000, "linear", 0, 64, "ms"),
DelTime_1 = ControlSpec.new(64, 1000, "linear", 0, 101, "ms"),
DelTime_2 = ControlSpec.new(64, 1000, "linear", 0, 143, "ms"),
DelTime_3 = ControlSpec.new(64, 1000, "linear", 0, 165, "ms"),
DelTime_4 = ControlSpec.new(64, 1000, "linear", 0, 177, "ms"),
DelAtten_1 = ControlSpec.new(0, 0.5, "linear", 0, 0.4, ""),
DelAtten_2 = ControlSpec.new(0, 0.5, "linear", 0, 0.37, ""),
DelAtten_3 = ControlSpec.new(0, 0.5, "linear", 0, 0.333, ""),
DelAtten_4 = ControlSpec.new(0, 0.5, "linear", 0, 0.3, "")
}
specs['RingMod'] = {
}
specs['SGain'] = {
Gain = ControlSpec.new(-math.huge, 12, "db", 0, 0, " dB"),
Mute = ControlSpec.new(0, 1, "linear", 1, 0, "")
}
specs['SPVoice'] = {
Gate = ControlSpec.new(0, 1, "linear", 1, 0, ""),
SampleStart = ControlSpec.UNIPOLAR,
SampleEnd = ControlSpec.new(0, 1, "linear", 0, 1, ""),
LoopPoint = ControlSpec.UNIPOLAR,
LoopEnable = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Frequency = ControlSpec.FREQ,
RootFrequency = ControlSpec.FREQ,
Volume = ControlSpec.new(-math.huge, 0, "db", 0, -10, " dB"),
Pan = ControlSpec.PAN,
FM = ControlSpec.UNIPOLAR
}
specs['SampHold'] = {
}
specs['SawOsc'] = {
Range = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
Tune = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
FM = ControlSpec.UNIPOLAR
}
specs['SawOscExp'] = {
Range = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
Tune = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
FM = ControlSpec.UNIPOLAR,
LinFM = ControlSpec.new(0, 5, "linear", 0.01, 0, "")
}
specs['Seq1'] = {
Reset = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Step = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Range = ControlSpec.new(0, 2, "linear", 1, 0, ""),
Scale = ControlSpec.new(0, 1, "linear", 0, 1, ""),
Glide_1 = ControlSpec.UNIPOLAR,
Glide_2 = ControlSpec.UNIPOLAR,
Trig_1_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_1_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_1_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_1_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_1_5 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_1_6 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_1_7 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_1_8 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_2_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_2_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_2_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_2_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_2_5 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_2_6 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_2_7 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Trig_2_8 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Value_1_1 = ControlSpec.BIPOLAR,
Value_1_2 = ControlSpec.BIPOLAR,
Value_1_3 = ControlSpec.BIPOLAR,
Value_1_4 = ControlSpec.BIPOLAR,
Value_1_5 = ControlSpec.BIPOLAR,
Value_1_6 = ControlSpec.BIPOLAR,
Value_1_7 = ControlSpec.BIPOLAR,
Value_1_8 = ControlSpec.BIPOLAR,
Value_2_1 = ControlSpec.BIPOLAR,
Value_2_2 = ControlSpec.BIPOLAR,
Value_2_3 = ControlSpec.BIPOLAR,
Value_2_4 = ControlSpec.BIPOLAR,
Value_2_5 = ControlSpec.BIPOLAR,
Value_2_6 = ControlSpec.BIPOLAR,
Value_2_7 = ControlSpec.BIPOLAR,
Value_2_8 = ControlSpec.BIPOLAR,
Gate_1 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_2 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_3 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_4 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_5 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_6 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_7 = ControlSpec.new(0, 1, "linear", 1, 0, ""),
Gate_8 = ControlSpec.new(0, 1, "linear", 1, 0, "")
}
specs['SineLFO'] = {
Frequency = ControlSpec.new(0.01, 50, "exp", 0, 1, "Hz"),
Reset = ControlSpec.new(0, 1, "linear", 1, 0, "")
}
specs['SineOsc'] = {
Range = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
Tune = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
FM = ControlSpec.UNIPOLAR
}
specs['SineOscExp'] = {
Range = ControlSpec.new(-8, 8, "linear", 1, 0, ""),
Tune = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
FM = ControlSpec.UNIPOLAR,
LinFM = ControlSpec.new(0, 5, "linear", 0.01, 0, ""),
PM = ControlSpec.new(0, 5, "linear", 0.01, 0, "")
}
specs['Slew'] = {
Time = ControlSpec.new(0, 60000, "linear", 0, 0, "ms")
}
specs['SoundIn'] = {
}
specs['SoundOut'] = {
}
specs['TestGen'] = {
Frequency = ControlSpec.WIDEFREQ,
Amplitude = ControlSpec.DB,
Wave = ControlSpec.new(0, 1, "linear", 1, 0, "")
}
specs['TriOsc'] = {
Range = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
Tune = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
FM = ControlSpec.UNIPOLAR
}
specs['TriOscExp'] = {
Range = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
Tune = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
FM = ControlSpec.UNIPOLAR,
LinFM = ControlSpec.new(0, 5, "linear", 0.01, 0, "")
}
specs['XFader'] = {
Fade = ControlSpec.BIPOLAR,
TrimA = ControlSpec.new(-math.huge, 12, "db", 0, -math.huge, " dB"),
TrimB = ControlSpec.new(-math.huge, 12, "db", 0, -math.huge, " dB"),
Master = ControlSpec.new(-math.huge, 12, "db", 0, -math.huge, " dB")
}
-- module metadata
metadata['SoundIn'] = {
outputs = {
['Left'] = {
description = "Audio signal from left R audio input."
},
['Right'] = {
description = "Audio signal from right R audio input."
}
}
}
metadata['SoundOut'] = {
inputs = {
['Left'] = {
description = "Audio signal to left R audio output."
},
['Right'] = {
description = "Audio signal to right R audio output."
}
}
}
metadata['44Matrix'] = {
parameters = {
['FadeTime'] = {
spec = ControlSpec.new(0, 1000, "linear", 0, 5, "ms"),
description = "Fade time in milliseconds (range: `0`-`100000` ms) applied when an input is switched on to or off from an output. Default is `5` ms."
},
['Gate_1_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 1 is switched on to output 1."
},
['Gate_2_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 1 is switched on to output 2."
},
['Gate_3_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 1 is switched on to output 3."
},
['Gate_4_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 1 is switched on to output 4."
},
['Gate_1_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 2 is switched on to output 1."
},
['Gate_2_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 2 is switched on to output 2."
},
['Gate_3_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 2 is switched on to output 3."
},
['Gate_4_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 2 is switched on to output 4."
},
['Gate_1_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 3 is switched on to output 1."
},
['Gate_2_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 3 is switched on to output 2."
},
['Gate_3_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 3 is switched on to output 3."
},
['Gate_4_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 3 is switched on to output 4."
},
['Gate_1_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 4 is switched on to output 1."
},
['Gate_2_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 4 is switched on to output 2."
},
['Gate_3_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 4 is switched on to output 3."
},
['Gate_4_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 4 is switched on to output 4."
}
},
inputs = {
['In1'] = {
description = "Input 1"
},
['In2'] = {
description = "Input 2"
},
['In3'] = {
description = "Input 3"
},
['In4'] = {
description = "Input 4"
}
},
outputs = {
['Out1'] = {
description = "Output 1"
},
['Out2'] = {
description = "Output 2"
},
['Out3'] = {
description = "Output 3"
},
['Out4'] = {
description = "Output 4"
}
}
}
metadata['88Matrix'] = {
parameters = {
['FadeTime'] = {
spec = ControlSpec.new(0, 1000, "linear", 0, 5, "ms"),
description = "Fade time in milliseconds (range: `0`-`100000` ms) applied when an input is switched on to or off from an output. Default is `5` ms."
},
['Gate_1_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 1 is switched on to output 1."
},
['Gate_2_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 1 is switched on to output 2."
},
['Gate_3_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 1 is switched on to output 3."
},
['Gate_4_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 1 is switched on to output 4."
},
['Gate_5_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 1 is switched on to output 5."
},
['Gate_6_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 1 is switched on to output 6."
},
['Gate_7_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 1 is switched on to output 7."
},
['Gate_8_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 1 is switched on to output 8."
},
['Gate_1_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 2 is switched on to output 1."
},
['Gate_2_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 2 is switched on to output 2."
},
['Gate_3_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 2 is switched on to output 3."
},
['Gate_4_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 2 is switched on to output 4."
},
['Gate_5_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 2 is switched on to output 5."
},
['Gate_6_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 2 is switched on to output 6."
},
['Gate_7_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 2 is switched on to output 7."
},
['Gate_8_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 2 is switched on to output 8."
},
['Gate_1_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 3 is switched on to output 1."
},
['Gate_2_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 3 is switched on to output 2."
},
['Gate_3_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 3 is switched on to output 3."
},
['Gate_4_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 3 is switched on to output 4."
},
['Gate_5_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 3 is switched on to output 5."
},
['Gate_6_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 3 is switched on to output 6."
},
['Gate_7_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 3 is switched on to output 7."
},
['Gate_8_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 3 is switched on to output 8."
},
['Gate_1_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 4 is switched on to output 1."
},
['Gate_2_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 4 is switched on to output 2."
},
['Gate_3_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 4 is switched on to output 3."
},
['Gate_4_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 4 is switched on to output 4."
},
['Gate_5_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 4 is switched on to output 5."
},
['Gate_6_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 4 is switched on to output 6."
},
['Gate_7_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 4 is switched on to output 7."
},
['Gate_8_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 4 is switched on to output 8."
},
['Gate_1_5'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 5 is switched on to output 1."
},
['Gate_2_5'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 5 is switched on to output 2."
},
['Gate_3_5'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 5 is switched on to output 3."
},
['Gate_4_5'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 5 is switched on to output 4."
},
['Gate_5_5'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 5 is switched on to output 5."
},
['Gate_6_5'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 5 is switched on to output 6."
},
['Gate_7_5'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 5 is switched on to output 7."
},
['Gate_8_5'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 5 is switched on to output 8."
},
['Gate_1_6'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 6 is switched on to output 1."
},
['Gate_2_6'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 6 is switched on to output 2."
},
['Gate_3_6'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 6 is switched on to output 3."
},
['Gate_4_6'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 6 is switched on to output 4."
},
['Gate_5_6'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 6 is switched on to output 5."
},
['Gate_6_6'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 6 is switched on to output 6."
},
['Gate_7_6'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 6 is switched on to output 7."
},
['Gate_8_6'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 6 is switched on to output 8."
},
['Gate_1_7'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 7 is switched on to output 1."
},
['Gate_2_7'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 7 is switched on to output 2."
},
['Gate_3_7'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 7 is switched on to output 3."
},
['Gate_4_7'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 7 is switched on to output 4."
},
['Gate_5_7'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 7 is switched on to output 5."
},
['Gate_6_7'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 7 is switched on to output 6."
},
['Gate_7_7'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 7 is switched on to output 7."
},
['Gate_8_7'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 7 is switched on to output 8."
},
['Gate_1_8'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 8 is switched on to output 1."
},
['Gate_2_8'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 8 is switched on to output 2."
},
['Gate_3_8'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 8 is switched on to output 3."
},
['Gate_4_8'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 8 is switched on to output 4."
},
['Gate_5_8'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 8 is switched on to output 5."
},
['Gate_6_8'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 8 is switched on to output 6."
},
['Gate_7_8'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 8 is switched on to output 7."
},
['Gate_8_8'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Toggle that determine whether input 8 is switched on to output 8."
}
},
inputs = {
['In1'] = {
description = "Input 1"
},
['In2'] = {
description = "Input 2"
},
['In3'] = {
description = "Input 3"
},
['In4'] = {
description = "Input 4"
},
['In5'] = {
description = "Input 5"
},
['In6'] = {
description = "Input 6"
},
['In7'] = {
description = "Input 7"
},
['In8'] = {
description = "Input 8"
}
},
outputs = {
['Out1'] = {
description = "Output 1"
},
['Out2'] = {
description = "Output 2"
},
['Out3'] = {
description = "Output 3"
},
['Out4'] = {
description = "Output 4"
},
['Out5'] = {
description = "Output 5"
},
['Out6'] = {
description = "Output 6"
},
['Out7'] = {
description = "Output 7"
},
['Out8'] = {
description = "Output 8"
}
}
}
metadata['ADSREnv'] = {
parameters = {
['Attack'] = {
spec = ControlSpec.new(0.1, 2000, "exp", 0, 5, "ms"),
description = "Attack time. Range `0.1` - `2000` ms. Default is `5`."
},
['Decay'] = {
spec = ControlSpec.new(0.1, 8000, "exp", 0, 200, "ms"),
description = "Decay time. Range `0.1` - `8000` ms. Default is `200`."
},
['Sustain'] = {
spec = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
description = "Sustain level `0` - `1.0`. Default is `0.5`."
},
['Release'] = {
spec = ControlSpec.new(0.1, 8000, "exp", 0, 200, "ms"),
description = "Release time. Range `0.1` - `8000` ms. Default is `200`."
},
['Gate'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Scriptable gate. When parameter goes from 0 to a positive value a gate is triggered."
}
},
inputs = {
['Gate'] = {
description = "Gate control input. A signal > 0 triggers envelope."
}
},
outputs = {
['Out'] = {
description = "Envelope signal: `0` ... `0.8`."
}
}
}
metadata['ADSREnv2'] = {
parameters = {
['Attack'] = {
spec = ControlSpec.new(0.1, 2000, "exp", 0, 5, "ms")
},
['Decay'] = {
spec = ControlSpec.new(0.1, 8000, "exp", 0, 200, "ms")
},
['Sustain'] = {
spec = ControlSpec.new(0, 1, "linear", 0, 0.5, "")
},
['Release'] = {
spec = ControlSpec.new(0.1, 8000, "exp", 0, 200, "ms")
}
}
}
metadata['Amp'] = {
parameters = {
['Level'] = {
spec = ControlSpec.UNIPOLAR,
description = "Amplifier level `0` - `1.0`."
}
},
inputs = {
['Exp'] = {
description = "Gain modulation control input (logarithmic)."
},
['Lin'] = {
description = "Gain modulation control input (linear)."
},
['In'] = {
description = "Input signal to attenuate."
}
},
outputs = {
['Out'] = {
description = "Attenuated signal."
}
}
}
metadata['Amp2'] = {
parameters = {
['Gain'] = {
spec = ControlSpec.UNIPOLAR,
description = "Initial gain `0` - `1.0`."
},
['GainModulation'] = {
spec = ControlSpec.BIPOLAR,
description = "Gain modulation amount `0` - `1.0`."
},
['In1'] = {
spec = ControlSpec.UNIPOLAR,
description = "Audio input 1 level `0` - `1.0`."
},
['In2'] = {
spec = ControlSpec.UNIPOLAR,
description = "Audio input 2 level `0` - `1.0`."
},
['Out'] = {
spec = ControlSpec.UNIPOLAR,
description = "Audio output level `0` - `1.0`."
},
['Mode'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "`0` or `1` representing linear or exponential gain modulation."
}
},
inputs = {
['GainModulation'] = {
description = "Control input for gain modulation."
},
['In1'] = {
description = "Audio input 1."
},
['In2'] = {
description = "Audio input 2."
}
},
outputs = {
['Out'] = {
description = "Attenuated signal."
}
}
}
metadata['BPFilter'] = {
parameters = {
['AudioLevel'] = {
spec = ControlSpec.new(0, 1, "amp", 0, 1, ""),
description = "Audio level `0` ... `1.0`. Default is `1`."
},
['Frequency'] = {
spec = ControlSpec.WIDEFREQ,
description = "Cutoff frequency `0.1` ... `20000` Hz. Default is `440` Hz."
},
['Resonance'] = {
spec = ControlSpec.UNIPOLAR,
description = "Resonance `0` ... `1.0`. Default is `0`."
},
['FM'] = {
spec = ControlSpec.BIPOLAR,
description = "Frequency modulation amount `-1.0` ... `1.0`."
},
['ResonanceModulation'] = {
spec = ControlSpec.BIPOLAR,
description = "Resonance modulation amount `-1.0` ... `1.0`."
}
},
inputs = {
['In'] = {
description = "Audio input."
},
['FM'] = {
description = "Control input for frequency modulation."
},
['ResonanceModulation'] = {
description = "Control input for resonance modulation."
}
},
outputs = {
['Out'] = {
description = "Filtered audio signal."
}
}
}
metadata['BRFilter'] = {
parameters = {
['AudioLevel'] = {
spec = ControlSpec.new(0, 1, "amp", 0, 1, ""),
description = "Audio level `0` ... `1.0`. Default is `1`."
},
['Frequency'] = {
spec = ControlSpec.WIDEFREQ,
description = "Cutoff frequency `0.1` ... `20000` Hz. Default is `440` Hz."
},
['Resonance'] = {
spec = ControlSpec.UNIPOLAR,
description = "Resonance `0` ... `1.0`. Default is `0`."
},
['FM'] = {
spec = ControlSpec.BIPOLAR,
description = "Frequency modulation amount `-1.0` ... `1.0`."
},
['ResonanceModulation'] = {
spec = ControlSpec.BIPOLAR,
description = "Resonance modulation amount `-1.0` ... `1.0`."
}
},
inputs = {
['In'] = {
description = "Audio input."
},
['FM'] = {
description = "Control input for frequency modulation."
},
['ResonanceModulation'] = {
description = "Control input for resonance modulation."
}
},
outputs = {
['Out'] = {
description = "Filtered audio signal."
}
}
}
metadata['Comp2'] = {
parameters = {
['Threshold'] = {
spec = ControlSpec.new(-math.huge, 0, "db", 0, -10, " dB"),
description = "Treshold."
},
['Attack'] = {
spec = ControlSpec.new(0.1, 250, "exp", 0, 10, "ms"),
description = "Attack time."
},
['Release'] = {
spec = ControlSpec.new(0.1, 1000, "exp", 0, 100, "ms"),
description = "Release time."
},
['Ratio'] = {
spec = ControlSpec.new(0, 20, "linear", 0, 3, ""),
description = "Compression ratio."
},
['MakeUp'] = {
spec = ControlSpec.new(-math.huge, 20, "db", 0, 0, " dB"),
description = "Make up level."
}
},
inputs = {
['Left'] = {
description = "Left audio input"
},
['Right'] = {
description = "Right audio input."
},
['SideChain'] = {
description = "Side chain control input."
}
},
outputs = {
['Left'] = {
description = "Left compressed audio signal."
},
['Right'] = {
description = "Right compressed audio signal."
}
}
}
metadata['DbMixer'] = {
parameters = {
['In1'] = {
spec = ControlSpec.DB,
description = "Audio input 1 level TODO: range/spec."
},
['In2'] = {
spec = ControlSpec.DB,
description = "Audio input 2 level TODO: range/spec."
},
['In3'] = {
spec = ControlSpec.DB,
description = "Audio input 3 level TODO: range/spec."
},
['In4'] = {
spec = ControlSpec.DB,
description = "Audio input 4 level TODO: range/spec."
},
['Out'] = {
spec = ControlSpec.DB,
description = "Output level TODO: range/spec."
}
},
inputs = {
['In1'] = {
description = "Audio input 1."
},
['In2'] = {
description = "Audio input 2."
},
['In3'] = {
description = "Audio input 3."
},
['In4'] = {
description = "Audio input 4."
}
},
outputs = {
['Out'] = {
description = "Mixed signal."
}
}
}
metadata['Decimate'] = {
parameters = {
['Rate'] = {
spec = ControlSpec.UNIPOLAR,
description = "TODO."
},
['Depth'] = {
spec = ControlSpec.UNIPOLAR,
description = "TODO."
},
['Smooth'] = {
spec = ControlSpec.UNIPOLAR,
description = "TODO."
},
['RateModulation'] = {
spec = ControlSpec.UNIPOLAR,
description = "TODO."
},
['DepthModulation'] = {
spec = ControlSpec.UNIPOLAR,
description = "TODO."
},
['SmoothModulation'] = {
spec = ControlSpec.UNIPOLAR,
description = "TODO."
}
},
inputs = {
['In'] = {
description = "Audio input."
},
['Rate'] = {
description = "TODO."
},
['Depth'] = {
description = "TODO."
},
['Smooth'] = {
description = "TODO."
}
},
outputs = {
['Out'] = {
description = "Reduced signal."
}
}
}
metadata['Delay'] = {
parameters = {
['DelayTime'] = {
spec = ControlSpec.new(0.1, 5000, "exp", 0, 300, "ms"),
description = "Delay time `0.1` ... `5000` ms."
},
['DelayTimeModulation'] = {
spec = ControlSpec.BIPOLAR,
description = "Delay time modulation amount."
}
},
inputs = {
['In'] = {
description = "Audio input."
},
['DelayTimeModulation'] = {
description = "Control signal for delay time modulation."
}
},
outputs = {
['Out'] = {
description = "Delayed signal."
}
}
}
metadata['EQBP'] = {
parameters = {
['Frequency'] = {
spec = ControlSpec.WIDEFREQ,
description = "TODO"
},
['Bandwidth'] = {
spec = ControlSpec.new(0, 10, "linear", 0, 0, ""),
description = "TODO"
},
['FM'] = {
spec = ControlSpec.BIPOLAR,
description = "TODO"
},
['BandwidthModulation'] = {
spec = ControlSpec.BIPOLAR,
description = "TODO"
}
}
}
metadata['EnvF'] = {
parameters = {
['Attack'] = {
spec = ControlSpec.new(0.1, 2000, "exp", 0, 100, "ms"),
description = "Envelope follower attack time."
},
['Decay'] = {
spec = ControlSpec.new(0.1, 8000, "exp", 0, 200, "ms"),
description = "Envelope follower decay time."
},
['Sensitivity'] = {
spec = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
description = "Envelope follower sensitivity."
},
['Threshold'] = {
spec = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
description = "Envelope follower threshold."
}
},
inputs = {
['In'] = {
description = "Input signal"
}
},
outputs = {
['Env'] = {
description = "Envelope follower control output signal."
},
['Gate'] = {
description = "Gte control output signal."
}
}
}
metadata['FMVoice'] = {
parameters = {
['Freq'] = {
spec = ControlSpec.FREQ
},
['Timbre'] = {
spec = ControlSpec.new(0, 5, "linear", 0, 1, "")
},
['Osc1Gain'] = {
spec = ControlSpec.AMP
},
['Osc1Partial'] = {
spec = ControlSpec.new(0.5, 12, "linear", 0.5, 1, "")
},
['Osc1Fixed'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, "")
},
['Osc1Fixedfreq'] = {
spec = ControlSpec.WIDEFREQ
},
['Osc1Index'] = {
spec = ControlSpec.new(0, 24, "linear", 0, 3, "")
},
['Osc1Outlevel'] = {
spec = ControlSpec.AMP
},
['Mod_To_Osc1Freq'] = {
spec = ControlSpec.BIPOLAR
},
['Mod_To_Osc1Gain'] = {
spec = ControlSpec.BIPOLAR
},
['Osc1_To_Osc1Freq'] = {
spec = ControlSpec.AMP
},
['Osc1_To_Osc2Freq'] = {
spec = ControlSpec.AMP
},
['Osc1_To_Osc3Freq'] = {
spec = ControlSpec.AMP
},
['Osc2Gain'] = {
spec = ControlSpec.AMP
},
['Osc2Partial'] = {
spec = ControlSpec.new(0.5, 12, "linear", 0.5, 1, "")
},
['Osc2Fixed'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, "")
},
['Osc2Fixedfreq'] = {
spec = ControlSpec.WIDEFREQ
},
['Osc2Index'] = {
spec = ControlSpec.new(0, 24, "linear", 0, 3, "")
},
['Osc2Outlevel'] = {
spec = ControlSpec.AMP
},
['Mod_To_Osc2Freq'] = {
spec = ControlSpec.BIPOLAR
},
['Mod_To_Osc2Gain'] = {
spec = ControlSpec.BIPOLAR
},
['Osc2_To_Osc1Freq'] = {
spec = ControlSpec.AMP
},
['Osc2_To_Osc2Freq'] = {
spec = ControlSpec.AMP
},
['Osc2_To_Osc3Freq'] = {
spec = ControlSpec.AMP
},
['Osc3Gain'] = {
spec = ControlSpec.AMP
},
['Osc3Partial'] = {
spec = ControlSpec.new(0.5, 12, "linear", 0.5, 1, "")
},
['Osc3Fixed'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, "")
},
['Osc3Fixedfreq'] = {
spec = ControlSpec.WIDEFREQ
},
['Osc3Index'] = {
spec = ControlSpec.new(0, 24, "linear", 0, 3, "")
},
['Osc3Outlevel'] = {
spec = ControlSpec.AMP
},
['Mod_To_Osc3Freq'] = {
spec = ControlSpec.BIPOLAR
},
['Mod_To_Osc3Gain'] = {
spec = ControlSpec.BIPOLAR
},
['Osc3_To_Osc1Freq'] = {
spec = ControlSpec.AMP
},
['Osc3_To_Osc2Freq'] = {
spec = ControlSpec.AMP
},
['Osc3_To_Osc3Freq'] = {
spec = ControlSpec.AMP
}
}
}
metadata['FreqGate'] = {
parameters = {
['Frequency'] = {
spec = ControlSpec.FREQ,
description = "Frequency parameter."
},
['Gate'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Gate parameter."
}
},
outputs = {
['Frequency'] = {
description = "Frequency control signal."
},
['Gate'] = {
description = "Gate control signal."
},
['Trig'] = {
description = "Trig control signal."
}
}
}
metadata['FShift'] = {
parameters = {
['Frequency'] = {
spec = ControlSpec.new(-2000, 2000, "linear", 0, 0, "Hz"),
description = "Frequency shift. `-2000` Hz ... `+2000` Hz."
},
['FM'] = {
spec = ControlSpec.BIPOLAR,
description = "Frequency modulation amount. `-1.0` ... `+1.0`."
}
},
inputs = {
['Left'] = {
description = "Left audio input."
},
['Right'] = {
description = "Right audio input."
},
['FM'] = {
description = "Control signal for frequency shift modulation."
}
},
outputs = {
['Left'] = {
description = "Left shifted signal."
},
['Right'] = {
description = "Right shifted signal."
}
}
}
metadata['HPFilter'] = {
parameters = {
['AudioLevel'] = {
spec = ControlSpec.new(0, 1, "amp", 0, 1, ""),
description = "Audio level `0` ... `1.0`. Default is `1`."
},
['Frequency'] = {
spec = ControlSpec.WIDEFREQ,
description = "Cutoff frequency `0.1` ... `20000` Hz. Default is `440` Hz."
},
['Resonance'] = {
spec = ControlSpec.UNIPOLAR,
description = "Resonance `0` ... `1.0`. Default is `0`."
},
['FM'] = {
spec = ControlSpec.BIPOLAR,
description = "Frequency modulation amount `-1.0` ... `1.0`."
},
['ResonanceModulation'] = {
spec = ControlSpec.BIPOLAR,
description = "Resonance modulation amount `-1.0` ... `1.0`."
}
},
inputs = {
['In'] = {
description = "Audio input."
},
['FM'] = {
description = "Control input for frequency modulation."
},
['ResonanceModulation'] = {
description = "Control input for resonance modulation."
}
},
outputs = {
['Out'] = {
description = "Filtered audio signal."
}
}
}
metadata['LinMixer'] = {
parameters = {
['In1'] = {
spec = ControlSpec.UNIPOLAR,
description = "Audio input 1 level TODO: range/spec."
},
['In2'] = {
spec = ControlSpec.UNIPOLAR,
description = "Audio input 2 level TODO: range/spec."
},
['In3'] = {
spec = ControlSpec.UNIPOLAR,
description = "Audio input 3 level TODO: range/spec."
},
['In4'] = {
spec = ControlSpec.UNIPOLAR,
description = "Audio input 4 level TODO: range/spec."
},
['Out'] = {
spec = ControlSpec.UNIPOLAR,
description = "Output level TODO: range/spec."
}
},
inputs = {
['In1'] = {
description = "Audio input 1."
},
['In2'] = {
description = "Audio input 2."
},
['In3'] = {
description = "Audio input 3."
},
['In4'] = {
description = "Audio input 4."
}
},
outputs = {
['Out'] = {
description = "Mixed signal."
}
}
}
metadata['LPFilter'] = {
parameters = {
['AudioLevel'] = {
spec = ControlSpec.new(0, 1, "amp", 0, 1, ""),
description = "Audio level `0` ... `1.0`. Default is `1`."
},
['Frequency'] = {
spec = ControlSpec.WIDEFREQ,
description = "Cutoff frequency `0.1` ... `20000` Hz. Default is `440` Hz."
},
['Resonance'] = {
spec = ControlSpec.UNIPOLAR,
description = "Resonance `0` ... `1.0`. Default is `0`."
},
['FM'] = {
spec = ControlSpec.BIPOLAR,
description = "Frequency modulation amount `-1.0` ... `1.0`."
},
['ResonanceModulation'] = {
spec = ControlSpec.BIPOLAR,
description = "Resonance modulation amount `-1.0` ... `1.0`."
}
},
inputs = {
['In'] = {
description = "Audio input."
},
['FM'] = {
description = "Control input for frequency modulation."
},
['ResonanceModulation'] = {
description = "Control input for resonance modulation."
}
},
outputs = {
['Out'] = {
description = "Filtered audio signal."
}
}
}
metadata['LPLadder'] = {
parameters = {
['Frequency'] = {
spec = ControlSpec.WIDEFREQ,
description = "Cutoff frequency `0.1` ... `20000` Hz. Default is `440` Hz."
},
['Resonance'] = {
spec = ControlSpec.UNIPOLAR,
description = "Resonance `0` ... `1.0`. Default is `0`."
},
['FM'] = {
spec = ControlSpec.BIPOLAR,
description = "Frequency modulation amount `-1.0` ... `1.0`."
},
['ResonanceModulation'] = {
spec = ControlSpec.BIPOLAR,
description = "Resonance modulation amount `-1.0` ... `1.0`."
}
},
inputs = {
['In'] = {
description = "Audio input."
},
['FM'] = {
description = "Control input for frequency modulation."
},
['ResonanceModulation'] = {
description = "Control input for resonance modulation."
}
},
outputs = {
['Out'] = {
description = "Filtered audio signal."
}
}
}
metadata['MGain'] = {
parameters = {
['Gain'] = {
spec = ControlSpec.new(-math.huge, 12, "db", 0, 0, " dB"),
description = "Attenuation control. `-inf` ... `+12` dB."
},
['Mute'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "If `1` signal is muted, otherwise not."
}
},
inputs = {
['In'] = {
description = "Audio input."
}
},
outputs = {
['Out'] = {
description = "Attenuated audio signal."
}
}
}
metadata['MMFilter'] = {
parameters = {
['AudioLevel'] = {
spec = ControlSpec.new(0, 1, "amp", 0, 1, ""),
description = "Audio level `0` ... `1.0`. Default is `1`."
},
['Frequency'] = {
spec = ControlSpec.WIDEFREQ,
description = "Cutoff frequency `0.1` ... `20000` Hz. Default is `440` Hz."
},
['Resonance'] = {
spec = ControlSpec.UNIPOLAR,
description = "Resonance `0` ... `1.0`. Default is `0`."
},
['FM'] = {
spec = ControlSpec.BIPOLAR,
description = "Frequency modulation amount `-1.0` ... `1.0`."
},
['ResonanceModulation'] = {
spec = ControlSpec.BIPOLAR,
description = "Resonance modulation amount `-1.0` ... `1.0`."
}
},
inputs = {
['In'] = {
description = "Audio input."
},
['FM'] = {
description = "Control input for frequency modulation."
},
['ResonanceModulation'] = {
description = "Control input for resonance modulation."
}
},
outputs = {
['Notch'] = {
description = "Band-reject filtered audio signal."
},
['Highpass'] = {
description = "Highpass filtered audio signal."
},
['Bandpass'] = {
description = "Bandpass filtered audio signal."
},
['Lowpass'] = {
description = "Lowpass filtered audio signal."
}
}
}
metadata['MultiLFO'] = {
parameters = {
['Frequency'] = {
spec = ControlSpec.new(0.01, 50, "exp", 0, 1, "Hz"),
description = "LFO Frequency `0.01` Hz ... `50` Hz."
},
['Reset'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Manual LFO reset trigger."
}
},
inputs = {
['Reset'] = {
description = "Audio rate reset trigger: when signal is changed from 0 to 1 the LFO is retriggered."
}
},
outputs = {
['InvSaw'] = {
description = "Inverted saw signal output."
},
['Saw'] = {
description = "Saw signal output."
},
['Sine'] = {
description = "Sine signal output."
},
['Triangle'] = {
description = "Triangle signal output."
},
['Pulse'] = {
description = "Pulse signal output."
}
}
}
metadata['MultiOsc'] = {
parameters = {
['Range'] = {
spec = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
description = "`-2` ... `+2` octaves."
},
['Tune'] = {
spec = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
description = "`-1200` ... `+1200` cents."
},
['PulseWidth'] = {
spec = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
description = "Pulse oscillator pulse width."
},
['FM'] = {
spec = ControlSpec.UNIPOLAR,
description = "Frequency modulation amount."
},
['PWM'] = {
spec = ControlSpec.UNIPOLAR,
description = "Pulse width modulation amount."
}
},
inputs = {
['FM'] = {
description = "Control signal for frequency modulation."
},
['PWM'] = {
description = "Control signal for pulse width modulation."
}
},
outputs = {
['Sine'] = {
description = "Sine wave oscillator output."
},
['Triangle'] = {
description = "Triangle wave oscillator output."
},
['Saw'] = {
description = "Saw wave oscillator output."
},
['Pulse'] = {
description = "Pulse wave oscillator output."
}
}
}
metadata['MultiOscExp'] = {
parameters = {
['Range'] = {
spec = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
description = "`-2` ... `+2` octaves."
},
['Tune'] = {
spec = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
description = "`-1200` ... `+1200` cents."
},
['PulseWidth'] = {
spec = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
description = "Pulse oscillator pulse width."
},
['FM'] = {
spec = ControlSpec.UNIPOLAR,
description = "Frequency modulation amount."
},
['LinFM'] = {
spec = ControlSpec.new(0, 10000, "linear", 0, 0, "Hz"),
description = "Linear frequency modulation amount."
},
['PWM'] = {
spec = ControlSpec.UNIPOLAR,
description = "Pulse width modulation amount."
}
},
inputs = {
['FM'] = {
description = "Control signal for frequency modulation."
},
['LinFM'] = {
description = "Control signal for linear frequency modulation."
},
['PWM'] = {
description = "Control signal for pulse width modulation."
}
},
outputs = {
['Sine'] = {
description = "Sine wave oscillator output."
},
['Triangle'] = {
description = "Triangle wave oscillator output."
},
['Saw'] = {
description = "Saw wave oscillator output."
},
['Pulse'] = {
description = "Pulse wave oscillator output."
}
}
}
metadata['Noise'] = {
outputs = {
['Out'] = {
description = "Noise signal."
}
}
}
metadata['OGain'] = {
parameters = {
['Gain'] = {
spec = ControlSpec.new(-math.huge, 12, "db", 0, 0, " dB"),
description = "Attenuation control. `-inf` ... `+12` dB."
},
['Mute'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "If `1` signal is muted, otherwise not."
}
},
inputs = {
['In1'] = {
description = "Audio input 1."
},
['In2'] = {
description = "Audio input 2."
},
['In3'] = {
description = "Audio input 3."
},
['In4'] = {
description = "Audio input 4."
},
['In5'] = {
description = "Audio input 5."
},
['In6'] = {
description = "Audio input 6."
},
['In7'] = {
description = "Audio input 7."
},
['In8'] = {
description = "Audio input 8."
}
},
outputs = {
['Out1'] = {
description = "Attenuated audio signal output 1."
},
['Out2'] = {
description = "Attenuated audio signal output 2."
},
['Out3'] = {
description = "Attenuated audio signal output 3."
},
['Out4'] = {
description = "Attenuated audio signal output 4."
},
['Out5'] = {
description = "Attenuated audio signal output 5."
},
['Out6'] = {
description = "Attenuated audio signal output 6."
},
['Out7'] = {
description = "Attenuated audio signal output 7."
},
['Out8'] = {
description = "Attenuated audio signal output 8."
}
}
}
metadata['Pan'] = {
parameters = {
['Position'] = {
spec = ControlSpec.BIPOLAR,
description = "Pan position `-1.0` ... `1.0` referring to left ... right panning."
},
['PositionModulation'] = {
spec = ControlSpec.BIPOLAR,
description = "Pan position modulation amount `-1.0` ... `1.0`."
}
},
inputs = {
['In'] = {
description = "Mono audio signal."
},
['PositionModulation'] = {
description = "Right audio signal."
}
},
outputs = {
['Left'] = {
description = "Left audio signal."
},
['Right'] = {
description = "Right audio signal."
}
}
}
metadata['PolMixer'] = {
parameters = {
['In1'] = {
spec = ControlSpec.BIPOLAR,
description = "Audio input 1 level TODO: range/spec."
},
['In2'] = {
spec = ControlSpec.BIPOLAR,
description = "Audio input 2 level TODO: range/spec."
},
['In3'] = {
spec = ControlSpec.BIPOLAR,
description = "Audio input 3 level TODO: range/spec."
},
['In4'] = {
spec = ControlSpec.BIPOLAR,
description = "Audio input 4 level TODO: range/spec."
},
['Out'] = {
spec = ControlSpec.UNIPOLAR,
description = "Output level TODO: range/spec."
}
},
inputs = {
['In1'] = {
description = "Audio input 1."
},
['In2'] = {
description = "Audio input 2."
},
['In3'] = {
description = "Audio input 3."
},
['In4'] = {
description = "Audio input 4."
}
},
outputs = {
['Out'] = {
description = "Mixed signal."
}
}
}
metadata['PNoise'] = {
outputs = {
['Out'] = {
description = "Noise signal."
}
}
}
metadata['PShift'] = {
parameters = {
['PitchRatio'] = {
spec = ControlSpec.new(0, 4, "linear", 0, 1, ""),
description = "Pitch ratio: `0` ... `4`. Default is `1`."
},
['PitchDispersion'] = {
spec = ControlSpec.new(0, 4, "linear", 0, 0, ""),
description = "Pitch dispersion: `0` ... `4`. Default is `0`."
},
['TimeDispersion'] = {
spec = ControlSpec.new(0, 1, "linear", 0, 0, ""),
description = "Time dispersion: `0` ... `1`. Default is `0`."
},
['PitchRatioModulation'] = {
spec = ControlSpec.BIPOLAR,
description = "Pitch ratio modulation amount: `-1` ... `1`."
},
['PitchDispersionModulation'] = {
spec = ControlSpec.BIPOLAR,
description = "Pitch dispersion modulation amount: `-1` ... `1`."
},
['TimeDispersionModulation'] = {
spec = ControlSpec.BIPOLAR,
description = "Time dispersion modulation amount: `-1` ... `1`."
}
},
inputs = {
['Left'] = {
description = "Left audio signal."
},
['Right'] = {
description = "Right audio signal."
},
['PitchRatioModulation'] = {
description = "Pitch ratio modulation amount."
},
['PitchDispersionModulation'] = {
description = "Pitch dispersion modulation amount."
},
['TimeDispersionModulation'] = {
description = "Time dispersion modulation amount."
}
},
outputs = {
['Left'] = {
description = "Left processed audio signal."
},
['Right'] = {
description = "Right processed audio signal."
}
}
}
metadata['PulseOsc'] = {
parameters = {
['Range'] = {
spec = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
description = "`-2` ... `+2` octaves."
},
['Tune'] = {
spec = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
description = "`-1200` ... `+1200` cents."
},
['PulseWidth'] = {
spec = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
description = "Pulse oscillator Pulse width."
},
['FM'] = {
spec = ControlSpec.UNIPOLAR,
description = "Frequency modulation amount."
},
['PWM'] = {
spec = ControlSpec.new(0, 1, "linear", 0, 0.4, ""),
description = "Pulse width modulation amount."
}
},
inputs = {
['FM'] = {
description = "Control signal for frequency modulation."
},
['PWM'] = {
description = "Control signal for pulse width modulation."
}
},
outputs = {
['Out'] = {
description = "Pulse wave oscillator output."
}
}
}
metadata['PulseOscExp'] = {
parameters = {
['Range'] = {
spec = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
description = "`-2` ... `+2` octaves."
},
['Tune'] = {
spec = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
description = "`-1200` ... `+1200` cents."
},
['PulseWidth'] = {
spec = ControlSpec.new(0, 1, "linear", 0, 0.5, ""),
description = "Pulse oscillator pulse width."
},
['FM'] = {
spec = ControlSpec.UNIPOLAR,
description = "Frequency modulation amount."
},
['PWM'] = {
spec = ControlSpec.new(0, 1, "linear", 0, 0.4, ""),
description = "Pulse width modulation amount."
},
['LinFM'] = {
spec = ControlSpec.new(0, 10000, "linear", 0, 0, "Hz"),
description = "Linear frequency modulation amount."
}
},
inputs = {
['FM'] = {
description = "Control signal for frequency modulation."
},
['LinFM'] = {
description = "Control signal for linear frequency modulation."
},
['PWM'] = {
description = "Control signal for pulse width modulation."
}
},
outputs = {
['Out'] = {
description = "Pulse wave oscillator output."
}
}
}
metadata['QGain'] = {
parameters = {
['Gain'] = {
spec = ControlSpec.new(-math.huge, 12, "db", 0, 0, " dB"),
description = "Attenuation control. `-inf` ... `+12` dB."
},
['Mute'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "If `1` signal is muted, otherwise not."
}
},
inputs = {
['In1'] = {
description = "Audio input 1"
},
['In2'] = {
description = "Audio input 2"
},
['In3'] = {
description = "Audio input 3"
},
['In4'] = {
description = "Audio input 4"
}
},
outputs = {
['Out1'] = {
description = "Attenuated audio signal output 1."
},
['Out2'] = {
description = "Attenuated audio signal output 2."
},
['Out3'] = {
description = "Attenuated audio signal output 3."
},
['Out4'] = {
description = "Attenuated audio signal output 4."
}
}
}
metadata['Rev1'] = {
parameters = {
['Volume'] = {
spec = ControlSpec.new(-math.huge, 12, "db", 0, -10, " dB")
},
['PreDelay'] = {
spec = ControlSpec.new(1, 1000, "linear", 0, 64, "ms")
},
['DelTime_1'] = {
spec = ControlSpec.new(64, 1000, "linear", 0, 101, "ms")
},
['DelTime_2'] = {
spec = ControlSpec.new(64, 1000, "linear", 0, 143, "ms")
},
['DelTime_3'] = {
spec = ControlSpec.new(64, 1000, "linear", 0, 165, "ms")
},
['DelTime_4'] = {
spec = ControlSpec.new(64, 1000, "linear", 0, 177, "ms")
},
['DelAtten_1'] = {
spec = ControlSpec.new(0, 0.5, "linear", 0, 0.4, "")
},
['DelAtten_2'] = {
spec = ControlSpec.new(0, 0.5, "linear", 0, 0.37, "")
},
['DelAtten_3'] = {
spec = ControlSpec.new(0, 0.5, "linear", 0, 0.333, "")
},
['DelAtten_4'] = {
spec = ControlSpec.new(0, 0.5, "linear", 0, 0.3, "")
}
}
}
metadata['RingMod'] = {
inputs = {
['In'] = {
description = "Audio signal input."
},
['Carrier'] = {
description = "Carrier signal input."
}
},
outputs = {
['Out'] = {
description = "Ring modulated audio signal."
}
}
}
metadata['SampHold'] = {
inputs = {
['In'] = {
description = "Audio signal input."
},
['Trig'] = {
description = "Trigger signal input."
}
},
outputs = {
['Out'] = {
description = "Processed audio signal."
}
}
}
metadata['SawOsc'] = {
parameters = {
['Range'] = {
spec = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
description = "`-2` ... `+2` octaves."
},
['Tune'] = {
spec = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
description = "`-1200` ... `+1200` cents."
},
['FM'] = {
spec = ControlSpec.UNIPOLAR,
description = "Frequency modulation amount."
}
},
inputs = {
['FM'] = {
description = "Control signal for frequency modulation."
}
},
outputs = {
['Out'] = {
description = "Saw wave oscillator output."
}
}
}
metadata['SawOscExp'] = {
parameters = {
['Range'] = {
spec = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
description = "`-2` ... `+2` octaves."
},
['Tune'] = {
spec = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
description = "`-1200` ... `+1200` cents."
},
['FM'] = {
spec = ControlSpec.UNIPOLAR,
description = "Frequency modulation amount."
},
['LinFM'] = {
spec = ControlSpec.new(0, 10000, "linear", 0, 0, "Hz"),
description = "Linear frequency modulation amount."
}
},
inputs = {
['FM'] = {
description = "Control signal for frequency modulation."
},
['LinFM'] = {
description = "Control signal for linear frequency modulation."
}
},
outputs = {
['Out'] = {
description = "Saw wave oscillator output."
}
}
}
metadata['Seq1'] = {
parameters = {
['Reset'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Manual reset."
},
['Step'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Manual forward step."
},
['Range'] = {
spec = ControlSpec.new(0, 2, "linear", 1, 0, ""),
description = "Output range: `0`, `1` or `2`, specifying ranges `0.1`, `0.2`, `0.4` respectively."
},
['Scale'] = {
spec = ControlSpec.new(0, 1, "linear", 0, 1, ""),
description = "TODO"
},
['Glide_1'] = {
spec = ControlSpec.UNIPOLAR,
description = "Glide time 1."
},
['Glide_2'] = {
spec = ControlSpec.UNIPOLAR,
description = "Glide time 2."
},
['Trig_1_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 1 step 1"
},
['Trig_1_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 1 step 2"
},
['Trig_1_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 1 step 3"
},
['Trig_1_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 1 step 4"
},
['Trig_1_5'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 1 step 5"
},
['Trig_1_6'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 1 step 6"
},
['Trig_1_7'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 1 step 7"
},
['Trig_1_8'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 1 step 8"
},
['Value_1_1'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 1 step 1"
},
['Value_1_2'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 1 step 2"
},
['Value_1_3'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 1 step 3"
},
['Value_1_4'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 1 step 4"
},
['Value_1_5'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 1 step 5"
},
['Value_1_6'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 1 step 6"
},
['Value_1_7'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 1 step 7"
},
['Value_1_8'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 1 step 8"
},
['Trig_2_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 2 step 1"
},
['Trig_2_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 2 step 2"
},
['Trig_2_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 2 step 3"
},
['Trig_2_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 2 step 4"
},
['Trig_2_5'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 2 step 5"
},
['Trig_2_6'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 2 step 6"
},
['Trig_2_7'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 2 step 7"
},
['Trig_2_8'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Tigger for row 2 step 8"
},
['Value_2_1'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 2 step 1"
},
['Value_2_2'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 2 step 2"
},
['Value_2_3'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 2 step 3"
},
['Value_2_4'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 2 step 4"
},
['Value_2_5'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 2 step 5"
},
['Value_2_6'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 2 step 6"
},
['Value_2_7'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 2 step 7"
},
['Value_2_8'] = {
spec = ControlSpec.BIPOLAR,
description = "Value for row 2 step 8"
},
['Gate_1'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Gate for step 1"
},
['Gate_2'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Gate for step 2"
},
['Gate_3'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Gate for step 3"
},
['Gate_4'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Gate for step 4"
},
['Gate_5'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Gate for step 5"
},
['Gate_6'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Gate for step 6"
},
['Gate_7'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Gate for step 7"
},
['Gate_8'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Gate for step 8"
}
},
inputs = {
['Clock'] = {
description = "Clock input."
},
['Reset'] = {
description = "Reset input."
},
['SampleAndHoldCtrl1'] = {
description = "Sample and hold control 1."
},
['GlideCtrl1'] = {
description = "Glide control input 1."
},
['SampleAndHoldCtrl2'] = {
description = "Sample and hold control 2."
},
['GlideCtrl2'] = {
description = "Glide control input 2."
}
},
outputs = {
['Trig1'] = {
description = "Trigger output 1."
},
['Trig2'] = {
description = "Trigger output 2."
},
['Gate'] = {
description = "Gate output."
},
['PreOut1'] = {
description = "Pre-output 1."
},
['Out1'] = {
description = "Output 1."
},
['PreOut2'] = {
description = "Pre-output 2."
},
['Out2'] = {
description = "Output 2."
}
}
}
metadata['SGain'] = {
parameters = {
['Gain'] = {
spec = ControlSpec.new(-math.huge, 12, "db", 0, 0, " dB"),
description = "Attenuation control. `-inf` ... `+12` dB."
},
['Mute'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "If `1` signal is muted, otherwise not."
}
},
inputs = {
['Left'] = {
description = "Left channel input."
},
['Right'] = {
description = "Right channel input."
}
},
outputs = {
['Left'] = {
description = "Attenuated left channel signal."
},
['Right'] = {
description = "Attenuated right channel signal."
}
}
}
metadata['SineLFO'] = {
parameters = {
['Frequency'] = {
spec = ControlSpec.new(0.01, 50, "exp", 0, 1, "Hz"),
description = "Frequency `0.01` Hz .. `50` Hz."
},
['Reset'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Script reset trigger: when value is changed from `0` to `1` the LFO is retriggered."
}
},
inputs = {
['Reset'] = {
description = "Audio rate reset trigger: when signal is changed from 0 to 1 the LFO is retriggered."
}
},
outputs = {
['Out'] = {
description = "Sine output"
}
}
}
metadata['SineOsc'] = {
parameters = {
['Range'] = {
spec = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
description = "`-2` ... `+2` octaves."
},
['Tune'] = {
spec = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
description = "`-1200` ... `+1200` cents."
},
['FM'] = {
spec = ControlSpec.UNIPOLAR,
description = "Frequency modulation amount."
}
},
inputs = {
['FM'] = {
description = "Control signal for frequency modulation."
}
},
outputs = {
['Out'] = {
description = "Sine wave oscillator output."
}
}
}
metadata['SineOscExp'] = {
parameters = {
['Range'] = {
spec = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
description = "`-2` ... `+2` octaves."
},
['Tune'] = {
spec = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
description = "`-1200` ... `+1200` cents."
},
['FM'] = {
spec = ControlSpec.UNIPOLAR,
description = "Frequency modulation amount."
},
['LinFM'] = {
spec = ControlSpec.new(0, 10000, "linear", 0, 0, "Hz"),
description = "Linear frequency modulation amount."
},
['PM'] = {
spec = ControlSpec.new(0, 5, "linear", 0.01, 0, ""),
description = "Phase modulation amount."
}
},
inputs = {
['FM'] = {
description = "Control signal for frequency modulation."
},
['LinFM'] = {
description = "Control signal for linear frequency modulation."
},
['PM'] = {
description = "Control signal for phase modulation."
}
},
outputs = {
['Out'] = {
description = "Sine wave oscillator output."
}
}
}
metadata['Slew'] = {
parameters = {
['Time'] = {
spec = ControlSpec.new(0, 60000, "linear", 0, 0, "ms"),
description = "Slew time `0` ... `60 000` ms."
}
},
inputs = {
['In'] = {
description = "Audio signal imput."
}
},
outputs = {
['Out'] = {
description = "Processed audio signal."
}
}
}
metadata['SPVoice'] = {
parameters = {
['Gate'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Manual gate."
},
['SampleStart'] = {
spec = ControlSpec.UNIPOLAR,
description = "Sample start position normalized to `0` ... `1`."
},
['SampleEnd'] = {
spec = ControlSpec.new(0, 1, "linear", 0, 1, ""),
description = "Sample end position normalized to `0` ... `1`."
},
['LoopPoint'] = {
spec = ControlSpec.UNIPOLAR,
description = "Loop point within sample start and end position normalized to `0` ... `1`."
},
['LoopEnable'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Loop enabled. `1` means enabled, `0` not."
},
['Frequency'] = {
spec = ControlSpec.FREQ,
description = "Frequency."
},
['RootFrequency'] = {
spec = ControlSpec.FREQ,
description = "Root frequency."
},
['Volume'] = {
spec = ControlSpec.new(-math.huge, 0, "db", 0, -10, " dB"),
description = "Volume."
},
['Pan'] = {
spec = ControlSpec.PAN,
description = "Pan position."
},
['FM'] = {
spec = ControlSpec.UNIPOLAR,
description = "Frequency modulation amount."
}
},
inputs = {
['Gate'] = {
description = "Control signal for gate"
},
['FM'] = {
description = "Control signal for frequency modulation"
}
},
outputs = {
['Left'] = {
description = "Left audio signal"
},
['Right'] = {
description = "Right audio signal"
}
}
}
metadata['TestGen'] = {
parameters = {
['Frequency'] = {
spec = ControlSpec.WIDEFREQ,
description = "Sine wave frequency."
},
['Amplitude'] = {
spec = ControlSpec.DB,
description = "Audio output signal amplitude."
},
['Wave'] = {
spec = ControlSpec.new(0, 1, "linear", 1, 0, ""),
description = "Wave: `0` means sine wave, `1` white noise."
}
},
outputs = {
['Out'] = {
description = "Sine wave signal or noise output."
}
}
}
metadata['TriOsc'] = {
parameters = {
['Range'] = {
spec = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
description = "`-2` ... `+2` octaves."
},
['Tune'] = {
spec = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
description = "`-1200` ... `+1200` cents."
},
['FM'] = {
spec = ControlSpec.UNIPOLAR,
description = "Frequency modulation amount."
}
},
inputs = {
['FM'] = {
description = "Control signal for frequency modulation."
}
},
outputs = {
['Out'] = {
description = "Triangle wave oscillator output."
}
}
}
metadata['TriOscExp'] = {
parameters = {
['Range'] = {
spec = ControlSpec.new(-2, 2, "linear", 1, 0, ""),
description = "`-2` ... `+2` octaves."
},
['Tune'] = {
spec = ControlSpec.new(-600, 600, "linear", 0, 0, "cents"),
description = "`-1200` ... `+1200` cents."
},
['FM'] = {
spec = ControlSpec.UNIPOLAR,
description = "Frequency modulation amount."
},
['LinFM'] = {
spec = ControlSpec.new(0, 10000, "linear", 0, 0, "Hz"),
description = "Linear frequency modulation amount."
}
},
inputs = {
['FM'] = {
description = "Control signal for frequency modulation."
},
['LinFM'] = {
description = "Control signal for linear frequency modulation."
}
},
outputs = {
['Out'] = {
description = "Triangle wave oscillator output."
}
}
}
metadata['XFader'] = {
parameters = {
['Fade'] = {
spec = ControlSpec.BIPOLAR,
description = "Fader position: `-1` fully attenuates stereo signal A, `1` fully attenuates stereo signal B, anything in between mixes the signals."
},
['TrimA'] = {
spec = ControlSpec.new(-math.huge, 12, "db", 0, -math.huge, " dB"),
description = "Signal A trim."
},
['TrimB'] = {
spec = ControlSpec.new(-math.huge, 12, "db", 0, -math.huge, " dB"),
description = "Signal B trim."
},
['Master'] = {
spec = ControlSpec.new(-math.huge, 12, "db", 0, -math.huge, " dB"),
description = "Master output level."
}
},
inputs = {
['InALeft'] = {
description = "Signal A left audio signal."
},
['InARight'] = {
description = "Signal A right audio signal."
},
['InBLeft'] = {
description = "Signal B left audio signal."
},
['InBRight'] = {
description = "Signal B right audio signal."
}
},
outputs = {
['Left'] = {
description = "Crossfaded left audio signal."
},
['Right'] = {
description = "Crossfaded right audio signal."
}
}
}
-- utility function to create module, will validate kind lua side
function eng.new(name, kind)
if specs[kind] then
engine.new(name..voicenum, kind)
else
error(kind.." - not a valid module type")
end
end
-- utility function to create multiple modules suffixed 1..polyphony
function eng.poly_new(name, kind, polyphony)
if specs[kind] then
for voicenum=1, polyphony do
engine.new(name..voicenum, kind)
end
else
error(kind.." not a valid module type")
end
end
-- utility function to connect modules suffixed with 1..polyphony
function eng.poly_connect(output, input, polyphony)
local sourcemodule, outputref = util.split_ref(output)
local destmodule, inputref = util.split_ref(input)
for voicenum=1, polyphony do
engine.connect(sourcemodule..voicenum.."/"..outputref, destmodule..voicenum.."*"..inputref)
end
end
-- utility function to set param of multiple modules suffixed 1..polyphony
function eng.poly_set(ref, value, polyphony)
local module, param = util.split_ref(ref)
for voicenum=1, polyphony do
engine.set(util.param_voice_ref(module, param, voicenum), value)
end
end
-- utility function to expand a moduleparam ref to #polyphony ones suffixed with 1..polyphony
function util.poly_expand(moduleparam, polyphony)
local module, param = util.split_ref(moduleparam)
local expanded = ""
for voicenum=1, polyphony do
expanded = expanded .. util.param_voice_ref(module, param, voicenum)
if voicenum ~= polyphony then
expanded = expanded .. " "
end
end
return expanded
end
function util.param_voice_ref(module, param, voicenum)
return module .. voicenum .. "." .. param
end
function util.split_ref(ref)
local words = {}
for word in ref:gmatch("[a-zA-Z0-9]+") do table.insert(words, word) end
return words[1], words[2]
end
R.specs = specs
R.metadata = metadata
R.engine = eng
R.util = util
return R