keys :: ControllerShape
keys = ControllerShape {params = [
                          mCC "portamento" 5,
                          mCC "expression" 11,
                          CC "lfoshape" 15 (0, 5) 0 passThru, -- 0..5 - sine,triangle,square,saw,random,sample&hold
                          mCC "lforate" 16,
                          CC "lfosync" 17 (0, 1) 0 passThru, -- 0 off, 1 on
                          mCC "lfodelay" 18,
                          CC "octave" 27 (16, 112) 0 passThru, -- 16, 28, 40 .. 112 - 128' .. 1/2'
                          CC "semitone" 28 (52, 76) 0.5 passThru, -- 52 .. 76 - -12 - +12 semitones
                          mCC "detune" 29,
                          mCC "osc1fm" 30,
                          SysEx "osc1fmsrc" 6 (0, 11) 0 passThru,
                          CC "osc1shape" 31 (0, 5) 0 passThru, -- 0..5 - pulse, saw, tri, sine, alt 1, alt 2
                          mCC "osc1pw" 33,
                          mCC "osc1pwm" 34,
                          SysEx "osc1pwmsrc" 10 (0, 30) 0 passThru,
                          mCC "osc1vol" 52,
                          mCC "osc1pan" 53,
                          mCC "ringmod" 54,
                          mCC "ringpan" 55,
                          mCC "noise" 60,
                          mCC "noisepan" 61,
                          mCC "noisecol" 62,
                          mCC "kcutoff" 69,
                          mCC "attack" 101,
                          mCC "decay" 102,
                          mCC "sustain" 103,
                          mCC "release" 106
                        ],
                        duration = ("dur", 0.05),
                        velocity = ("vel", 0.5),
                        latency = 0.1}
keys :: ControllerShape
keys = ControllerShape {params = [
                          mCC "portamento" 5,
                          mCC "expression" 11,
                          CC "lfoshape" 15 (0, 5) 0 passThru, -- 0..5 - sine,triangle,square,saw,random,sample&hold
                          mCC "lforate" 16,
                          CC "lfosync" 17 (0, 1) 0 passThru, -- 0 off, 1 on
                          mCC "lfodelay" 18,
                          CC "octave" 27 (16, 112) 0 passThru, -- 16, 28, 40 .. 112 - 128' .. 1/2'
                          CC "semitone" 28 (52, 76) 0.5 passThru, -- 52 .. 76 - -12 - +12 semitones
                          mCC "detune" 29,
                          mCC "osc1fm" 30,
                          SysEx "osc1fmsrc" 6 (0, 11) 0 passThru,
                          CC "osc1shape" 31 (0, 5) 0 passThru, -- 0..5 - pulse, saw, tri, sine, alt 1, alt 2
                          mCC "osc1pw" 33,
                          mCC "osc1pwm" 34,
                          SysEx "osc1pwmsrc" 10 (0, 30) 0 passThru,
                          mCC "osc1vol" 52,
                          mCC "osc1pan" 53,
                          mCC "ringmod" 54,
                          mCC "ringpan" 55,
                          mCC "noise" 60,
                          mCC "noisepan" 61,
                          mCC "noisecol" 62,
                          mCC "kcutoff" 69,
                          mCC "attack" 101,
                          mCC "decay" 102,
                          mCC "sustain" 103,
                          mCC "release" 106
                        ],
                        duration = ("dur", 0.05),
                        velocity = ("vel", 0.5),
                        latency = 0.1}
keys = ControllerShape {params = [
                          mCC "portamento" 5,
                          mCC "expression" 11,
                          CC "lfoshape" 15 (0, 5) 0 passThru, -- 0..5 - sine,triangle,square,saw,random,sample&hold
                          mCC "lforate" 16,
                          CC "lfosync" 17 (0, 1) 0 passThru, -- 0 off, 1 on
                          mCC "lfodelay" 18,
                          CC "octave" 27 (16, 112) 0 passThru, -- 16, 28, 40 .. 112 - 128' .. 1/2'
                          CC "semitone" 28 (52, 76) 0.5 passThru, -- 52 .. 76 - -12 - +12 semitones
                          mCC "detune" 29,
                          mCC "osc1fm" 30,
                          SysEx "osc1fmsrc" 6 (0, 11) 0 passThru,
                          CC "osc1shape" 31 (0, 5) 0 passThru, -- 0..5 - pulse, saw, tri, sine, alt 1, alt 2
                          mCC "osc1pw" 33,
                          mCC "osc1pwm" 34,
                          SysEx "osc1pwmsrc" 10 (0, 30) 0 passThru,
                          mCC "osc1vol" 52,
                          mCC "osc1pan" 53,
                          mCC "ringmod" 54,
                          mCC "ringpan" 55,
                          mCC "noise" 60,
                          mCC "noisepan" 61,
                          mCC "noisecol" 62,
                          mCC "kcutoff" 69,
                          mCC "attack" 101,
                          mCC "decay" 102,
                          mCC "sustain" 103,
                          mCC "release" 106
                        ],
                        duration = ("dur", 0.05),
                        velocity = ("vel", 0.5),
                        latency = 0.1}