local group_osc1 = Group { name = "OSC1", Parameter { id = "ms1", name = "Multisound 1", number = 58, max_value = 15, }, Parameter { id = "octave1", name = "Octave", number = 63, items = {"16'","8","4"}, item_values = {0,1,2}, }, Parameter { id = "level1", name = "Level", number = 0, max_value = 100, }, Parameter { id = "bit_res", name = "Bit Resolution", number = 62, items = {"6 bit","7 bit","8 bit","10 bit","12 bit"}, item_values = {0,1,2,3,4}, }, Parameter { id = "sync", name = "Sync", number = 61, items = {"Off","On"}, item_values = {0,1}, }, Parameter { id = "osc_bend_range", name = "Osc Bend Range", number = 60, max_value = 12, }, } local group_osc2 = Group { name = "OSC2", Parameter { id = "ms2", name = "Multisound 2", number = 59, max_value = 15, }, Parameter { id = "octave2", name = "Octave", number = 64, items = {"16'","8","4"}, item_values = {0,1,2}, }, Parameter { id = "level2", name = "Level", number = 1, max_value = 100, }, Parameter { id = "interval", name = "Interval", number = 66, max_value = 11, }, Parameter { id = "detune", name = "Detune", number = 65, max_value = 63, }, Parameter { id = "noise", name = "Noise Level", number = 3, max_value = 63, }, } local group_autobend = Group { name = "AUTOBEND", Parameter { id = "bend_select", name = "Bend Select", number = 71, items = {"Off","Osc1","Osc2","Both"}, item_values = {0,1,2,3}, }, Parameter { id = "Bend_mode", name = "Bend Polarity", number = 72, items = {"Down","Up"}, item_values = {0,1}, }, Parameter { id = "Bend_time", name = "Bend Time", number = 73, max_value = 31, }, Parameter { id = "Bend_intensity", name = "Bend Intensity", number = 2, max_value = 127, }, Parameter { id = "autoBend_intensity", name = "Vel Sens Intensity", number = 27, max_value = 63 }, } local group_keyassign = Group { name = "KEY ASSIGN", Parameter { id = "assign", name = "Assign", number = 76, items = {"Poly2","Poly1","Unison"}, item_values = {0,1,2}, }, Parameter { id = "voices", name = "Voices", number = 77, items = {"2","4","6","8"}, item_values = {0,1,2,3}, }, Parameter { id = "unisondetune", name = "Unison Detune", number = 74, max_value = 7, }, } local group_ddl1 = Group { name = "DIGITAL DELAY 1", Parameter { id = "delay1time", name = "Delay Time", number = 46, value_callback = function(parameter) local synth_definition = parameter.synth_definition local msb = math.floor(parameter:value() / 127) if parameter:value() < 128 then parameter.number = 0 return parameter:value() else parameter.number = msb return parameter:value() - ( msb * 127 ) end end }, Parameter { id = "feedback1", name = "Feedback", number = 47, max_value = 15, }, Parameter { id = "Mga_intensity1", name = "MG-A Intensity", number = 49, max_value = 63, }, Parameter { id = "Mgb_intensity1", name = "MG-B Intensity", number = 50, max_value = 63, }, Parameter { id = "effect_level1", name = "Effect Level", number = 48, max_value = 15, }, } local group_aftertouch = Group { name = "AFTERTOUCH", Parameter { id = "Osc_MG", name = "Osc MG Intensity", number = 36, max_value = 15, }, Parameter { id = "VCF", name = "MG VCF Cutoff", number = 37, max_value = 15, }, Parameter { id = "VCA", name = "VCA Level", number = 39, max_value = 15, }, Parameter { id = "vcfslot", name = "VCF Parameter Slot", number =38, items = {"MG","Cutoff"}, item_values = {0,1}, }, } local group_vcf = Group { name = "VCF", Parameter { id = "mode", name = "Mode", number =4, items = {"12db","24db"}, item_values = {0,1}, }, Parameter { id = "vcf_cutoff_freq", name = "Cutoff", number = 6, max_value = 127, }, Parameter { id = "vcf_resonance", name = "Resonance", number = 8, max_value = 63, }, Parameter { id = "vcf_keyboard_track", name = "KBD Track", number = 9, max_value = 63, }, Parameter { id = "polarity", name = "Polarity", number = 5, items = {"-","+"}, item_values = {0,1}, }, Parameter { id = "EG_intensity", name = "EG Intensity", number = 7, max_value = 63, }, Parameter { id = "vcf_attack_time", name = "Attack", number = 13, max_value = 63, }, Parameter { id = "vcf_decay_time", name = "Decay", number = 14, max_value = 63, }, Parameter { id = "vcf_break_point", name = "Break Point", number = 15, max_value = 63, }, Parameter { id = "vcf_slope", name = "Slope", number = 16, max_value = 63, }, Parameter { id = "vcf_Sustain", name = "Sustain", number = 17, max_value = 63, }, Parameter { id = "vcf_Release", name = "Release", number = 18, max_value = 63, }, Parameter { id = "vcf_velocity_sensco", name = "Vel Sens Cutoff", number = 28, max_value = 63, }, Parameter { id = "vcf_velocity_sensat", name = "Vel Sens Attack", number = 29, max_value = 63, }, Parameter { id = "vcf_velocity_sensde", name = "Vel Sens Decay", number = 30, max_value = 63, }, Parameter { id = "vcf_velocity_senssl", name = "Vel Sens Slope", number = 31, max_value = 63, }, } local group_vcfmod = Group { name = "VCF MOD", Parameter { id = "vcf_mg_freq", name = "MG Frequency", number = 10, max_value = 63, }, Parameter { id = "vcf_mg_delay", name = "MG Delay", number = 11, max_value = 63, }, Parameter { id = "vcf_mg_inten", name = "MG Intensity", number = 12, max_value = 63, }, } local group_ddl2 = Group { name = "DIGITAL DELAY 2", Parameter { id = "inputselect", name = "Input Select", number = 51, items = {"Direct","DDL1"}, item_values = {0,1}, }, Parameter { id = "delay2time", name = "Delay Time", number = 52, value_callback = function(parameter) local synth_definition = parameter.synth_definition local msb = math.floor(parameter:value() / 127) if parameter:value() < 128 then parameter.number = 0 return parameter:value() else parameter.number = msb return parameter:value() - ( msb * 127 ) end end }, Parameter { id = "feedback2", name = "Feedback", number = 53, max_value = 15, }, Parameter { id = "Mga_intensity2", name = "MG-A Intensity", number = 55, max_value = 63, }, Parameter { id = "Mgb_intensity2", name = "MG-B Intensity", number = 56, max_value = 63, }, Parameter { id = "effect_leve2l", name = "Effect Level", number = 54, max_value = 15, }, Parameter { id = "mod_invert", name = "Mod Invert", number = 57, items = {"Normal","Invert"}, item_values = {0,1}, }, } local group_vca = Group { name = "VCA", Parameter { id = "env_attack_time", name = "Attack", number = 21, max_value = 63, }, Parameter { id = "env_decay_time", name = "Decay", number = 22, max_value = 63, }, Parameter { id = "env_break_point", name = "Break Point", number = 23, max_value = 63, }, Parameter { id = "env_slope", name = "Slope", number = 24, max_value = 63, }, Parameter { id = "env_Sustain", name = "Sustain", number = 25, max_value = 63, }, Parameter { id = "env_Release", name = "Release", number = 26, max_value = 63, }, Parameter { id = "env_level", name = "Total Level", number = 20, max_value = 63, }, Parameter { id = "env_eglevel", name = "VSens EG Level", number = 32, max_value = 63, }, Parameter { id = "env_egattack", name = "VSens Attack", number = 33, max_value = 63, }, Parameter { id = "env_egdecay", name = "VSens Decay", number = 34, max_value = 63, }, Parameter { id = "env_egslope", name = "VSens Slope", number = 35, max_value = 63, }, Parameter { id = "velsense_osc_change", name = "VSens OSC Chg", number = 75, max_value = 31, }, Parameter { id = "decay_kbd_track", name = "Decay Kbd Track", number = 19, display_min_value = -64, display_max_value = 63 }, } local group_bender = Group { name = "BENDER", Parameter { id = "JoystickVCFMode", name = "Joystick VCF Mode", number = 41, items = {"Off","On"}, item_values = {0,1}, }, Parameter { id = "pbrange", name = "Pitch Bend Range", number = 40, max_value = 12, }, } local group_eq = Group { name = "EQ", Parameter { id = "bass", name = "Bass", number = 43, max_value = 12, }, Parameter { id = "treble", name = "Treble", number = 42, max_value = 12, }, } local group_ddlfreq = Group { name = "DDL MG FREQUENCY", Parameter { id = "mgafreq", name = "A", number = 44, max_value = 63, }, Parameter { id = "mgbfreq", name = "B", number = 45, max_value = 63, }, } local group_oscmod = Group { name = "OSC MOD", Parameter { id = "mgselect", name = "MG Select", number = 67, items = {"Off","Osc1","Osc2","Both"}, item_values = {0,1,2,3}, }, Parameter { id = "mgfreq", name = "MG Frequency", number = 68, max_value = 31, }, Parameter { id = "mgintens", name = "MG Intensity", number = 69, max_value = 15, }, Parameter { id = "mgdelay", name = "MG Delay", number = 70, max_value = 15, }, } return SynthDefinition { id = "korg_dss1b", name = "Korg DSS1b", author = "Daniel", content_height = 510, delay_between_midi_messages = 10, sysex_message_template = {0xF0, 0x42, 0x30, 0x0B, 0x41, "nn", "vv", 0xF7}, Section { name = "Main", group_osc1, group_osc2, group_oscmod, group_vca, group_vcfmod, group_vcf, group_eq, }, Section { name = "Delay", group_ddlfreq, group_ddl1, group_ddl2, group_autobend, group_bender, group_aftertouch, group_keyassign } }