from midi_controller import BasicControl, Button, ModeButton, Knob, Led, MultiLed, MidiMsg class StepKnobButton(BasicControl): STEP_CLOCKWISE = 1 STEP_COUNTERCLOCKWISE = 127 EVENT_TYPE_STEP = MidiMsg.EVENT_TYPE_CTRL_CHANGE EVENT_TYPE_BUTTON = Button.EVENT_TYPE def __init__(self, name: str, chan: int, ctrl_id: int, button: Button): super().__init__(name, chan, ctrl_id) self.button = button class RolandDj202: def __init__(self): self.shiftButton = Button('SHIFT', chan=16, ctrl_id=0, led_class=Led) # both sides; LED might not work # middle section self.songSelectorKnob = StepKnobButton( 'SONG SELECTOR', chan=16, ctrl_id=0, button=Button('SONG SELECTOR, BUTTON', chan=16, ctrl_id=6)) self.songSelectorKnobShift = StepKnobButton( 'SONG SELECTOR (SHIFT)', chan=16, ctrl_id=1, button=Button('SONG SELECTOR, BUTTON (SHIFT)', chan=16, ctrl_id=7)) self.mixingKnob = Knob('MIXING', chan=16, ctrl_id=13, mid_=64) self.phonesLevelKnob = Knob('PHONES LEVEL', chan=16, ctrl_id=12) self.samplerLevelKnob = Knob('SAMPLER LEVEL', chan=16, ctrl_id=26) self.cueMiddleButton = Button('CUE (MIDDLE)', chan=16, ctrl_id=29, led_class=Led) self.sequencerSyncButton = Button('SEQUENCER: SYNC', chan=16, ctrl_id=83, led_class=Led) self.sequencerSyncButtonShift = Button('SEQUENCER: SYNC', chan=16, ctrl_id=85, led_class=Led) # SEQUENCER: START/STOP / TAP -> not assigned yet # SEQUENCER: START/STOP / TAP -> sequencer event not assigned yet self.crossfaderKnob = Knob('CROSSFADER', chan=16, ctrl_id=8, mid_=64) # middle section (left and right), deck 1 and 2 self.loadBpmButtonLeft = Button('LOAD/BPM, LEFT', chan=16, ctrl_id=2, led_class=Led) self.loadBpmButtonLeftShift = Button('LOAD/BPM, LEFT', chan=16, ctrl_id=19, led_class=Led) self.trimKnobLeft = Knob('TRIM, LEFT', chan=1, ctrl_id=22, ctrl_id2=52) self.hiKnobLeft = Knob('HI, LEFT', chan=1, ctrl_id=23, ctrl_id2=53) self.midKnobLeft = Knob('MID, LEFT', chan=1, ctrl_id=24, ctrl_id2=54) self.lowKnobLeft = Knob('LOW, LEFT', chan=1, ctrl_id=25, ctrl_id2=55) self.filterKnobLeft = Knob('FILTER, LEFT', chan=1, ctrl_id=26, ctrl_id2=None) self.cueTapButtonLeft = Button('CUE/TAP, LEFT', chan=1, ctrl_id=27, led_class=Led) self.cueTapButtonLeftShift = Button('CUE/TAP, LEFT, SHIFT', chan=1, ctrl_id=18, led_class=Led) self.faderKnobLeft = Knob('FADER, LEFT', chan=1, ctrl_id=28, ctrl_id2=58) self.loadBpmButtonRight = Button('LOAD/BPM, RIGHT', chan=16, ctrl_id=3, led_class=Led) self.loadBpmButtonRightShift = Button('LOAD/BPM, RIGHT', chan=16, ctrl_id=18, led_class=Led) self.trimKnobRight = Knob('TRIM, RIGHT', chan=2, ctrl_id=22, ctrl_id2=52) self.hiKnobRight = Knob('HI, RIGHT', chan=2, ctrl_id=23, ctrl_id2=53) self.midKnobRight = Knob('MID, RIGHT', chan=2, ctrl_id=24, ctrl_id2=54) self.lowKnobRight = Knob('LOW, RIGHT', chan=2, ctrl_id=25, ctrl_id2=55) self.filterKnobRight = Knob('FILTER, RIGHT', chan=2, ctrl_id=26, ctrl_id2=None) self.cueTapButtonRight = Button('CUE/TAP, RIGHT', chan=2, ctrl_id=27, led_class=Led) self.cueTapButtonRightShift = Button('CUE/TAP, RIGHT, SHIFT', chan=2, ctrl_id=18, led_class=Led) self.faderKnobRight = Knob('FADER, RIGHT', chan=2, ctrl_id=28, ctrl_id2=58) # fx section (left and right), deck 1 and 2 self.fx1LevelBeatsKnobLeft = Knob('LEVEL/BEATS (FX 1), LEFT', chan=9, ctrl_id=0, ctrl_id2=None) self.fx2LevelBeatsKnobLeft = Knob('LEVEL/BEATS (FX 2), LEFT', chan=9, ctrl_id=1, ctrl_id2=None) self.fx3LevelBeatsKnobLeft = Knob('LEVEL/BEATS (FX 3), LEFT', chan=9, ctrl_id=2, ctrl_id2=None) self.fx4LevelBeatsKnobLeft = Knob('LEVEL/BEATS (FX 4), LEFT, SHIFT', chan=9, ctrl_id=3, ctrl_id2=None) self.fx1ButtonLeft = Button('FX 1, LEFT', chan=9, ctrl_id=0, led_class=Led) self.fx2ButtonLeft = Button('FX 2, LEFT', chan=9, ctrl_id=1, led_class=Led) self.fx3ButtonLeft = Button('FX 3, LEFT', chan=9, ctrl_id=2, led_class=Led) self.tapFxModeButtonLeft = Button('TAP/FX MODE, LEFT', chan=9, ctrl_id=4, led_class=Led) self.fx1ButtonLeftShift = Button('FX 1, LEFT, SHIFT', chan=9, ctrl_id=11, led_class=Led) self.fx2ButtonLeftShift = Button('FX 2, LEFT, SHIFT', chan=9, ctrl_id=12, led_class=Led) self.fx3ButtonLeftShift = Button('FX 3, LEFT, SHIFT', chan=9, ctrl_id=13, led_class=Led) self.tapFxModeButtonLeftShift = Button('TAP/FX MODE, LEFT, SHIFT', chan=9, ctrl_id=10, led_class=Led) self.fx1LevelBeatsKnobRight = Knob('LEVEL/BEATS (FX 1), RIGHT', chan=10, ctrl_id=0, ctrl_id2=None) self.fx2LevelBeatsKnobRight = Knob('LEVEL/BEATS (FX 2), RIGHT', chan=10, ctrl_id=1, ctrl_id2=None) self.fx3LevelBeatsKnobRight = Knob('LEVEL/BEATS (FX 3), RIGHT', chan=10, ctrl_id=2, ctrl_id2=None) self.fx4LevelBeatsKnobRight = Knob('LEVEL/BEATS (FX 4), RIGHT, SHIFT', chan=10, ctrl_id=3, ctrl_id2=None) self.fx1ButtonRight = Button('FX 1, RIGHT', chan=10, ctrl_id=0, led_class=Led) self.fx2ButtonRight = Button('FX 2, RIGHT', chan=10, ctrl_id=1, led_class=Led) self.fx3ButtonRight = Button('FX 3, RIGHT', chan=10, ctrl_id=2, led_class=Led) self.tapFxModeButtonRight = Button('TAP/FX MODE, RIGHT', chan=10, ctrl_id=4, led_class=Led) self.fx1ButtonRightShift = Button('FX 1, RIGHT, SHIFT', chan=10, ctrl_id=11, led_class=Led) self.fx2ButtonRightShift = Button('FX 2, RIGHT, SHIFT', chan=10, ctrl_id=12, led_class=Led) self.fx3ButtonRightShift = Button('FX 3, RIGHT, SHIFT', chan=10, ctrl_id=13, led_class=Led) self.tapFxModeButtonRightShift = Button('TAP/FX MODE, RIGHT, SHIFT', chan=10, ctrl_id=10, led_class=Led) # general deck section (left and right), deck 1 and 2 self.tempoKnobLeft = Knob('TEMPO, LEFT', chan=1, ctrl_id=9, ctrl_id2=59, mid_=64) self.vinylSlipButtonLeft = Button('VYNIL/SLIP, LEFT', chan=1, ctrl_id=7, led_class=Led) # JOG WHEELS not yet assigned self.syncButtonLeft = Button('SYNC, LEFT', chan=1, ctrl_id=2, led_class=Led) self.syncButtonLeftShift = Button('SYNC, LEFT, SHIFT', chan=1, ctrl_id=3, led_class=Led) self.cueButtonLeft = Button('CUE, LEFT', chan=1, ctrl_id=1, led_class=Led) self.cueButtonLeftShift = Button('CUE, LEFT, SHIFT', chan=1, ctrl_id=5, led_class=Led) self.playButtonLeft = Button('PLAY/PAUSE, LEFT', chan=1, ctrl_id=0, led_class=Led) self.playButtonLeftShift = Button('PLAY/PAUSE, LEFT, SHIFT', chan=1, ctrl_id=4, led_class=Led) self.keyLockRangeLeft = Button('KEY LOCK/RANGE, LEFT', chan=1, ctrl_id=13, led_class=Led) self.keyLockRangeLeftShift = Button('KEY LOCK/RANGE, LEFT, SHIFT', chan=1, ctrl_id=14, led_class=Led) self.tempoKnobRight = Knob('TEMPO, RIGHT', chan=2, ctrl_id=9, ctrl_id2=59, mid_=64) self.vinylSlipButtonRight = Button('VYNIL/SLIP, RIGHT', chan=2, ctrl_id=7, led_class=Led) # JOG WHEELS not yet assigned self.syncButtonRight = Button('SYNC, RIGHT', chan=2, ctrl_id=2, led_class=Led) self.syncButtonRightShift = Button('SYNC, RIGHT, SHIFT', chan=2, ctrl_id=3, led_class=Led) self.cueButtonRight = Button('CUE, RIGHT', chan=2, ctrl_id=1, led_class=Led) self.cueButtonRightShift = Button('CUE, RIGHT, SHIFT', chan=2, ctrl_id=5, led_class=Led) self.playButtonRight = Button('PLAY/PAUSE, RIGHT', chan=2, ctrl_id=0, led_class=Led) self.playButtonRightShift = Button('PLAY/PAUSE, RIGHT, SHIFT', chan=2, ctrl_id=4, led_class=Led) self.keyLockRangeRight = Button('KEY LOCK/RANGE, RIGHT', chan=2, ctrl_id=13, led_class=Led) self.keyLockRangeRightShift = Button('KEY LOCK/RANGE, RIGHT, SHIFT', chan=2, ctrl_id=14, led_class=Led) # pads mode section (left and right), deck 1 and 2 self.padModeHotCueLeft = ModeButton('PAD MODE: HOT CUE / CUE LOOP, LEFT', chan=5, ctrl_id=0, value=3) self.padModeLoopRollLeft = ModeButton('PAD MODE: LOOP / ROLL, LEFT', chan=5, ctrl_id=0, value=19) self.padModeSequencerPattern1Left = ModeButton('PAD MODE: SEQUENCER / PATTERN (1), LEFT', chan=5, ctrl_id=0, value=32) self.padModeSequencerPattern2Left = ModeButton('PAD MODE: SEQUENCER / PATTERN (2), LEFT', chan=5, ctrl_id=0, value=34) self.padModeSequencerPattern1LeftShift = ModeButton('PAD MODE: SEQUENCER / PATTERN (1), LEFT, SHIFT', chan=5, ctrl_id=0, value=33) self.padModeSequencerPattern2LeftShift = ModeButton('PAD MODE: SEQUENCER / PATTERN (2), LEFT, SHIFT', chan=5, ctrl_id=0, value=35) self.padModeSamplerSlicerLeft = ModeButton('PAD MODE: SAMPLER / SLICER, LEFT', chan=5, ctrl_id=0, value=51) self.padModeHotCueRight = ModeButton('PAD MODE: HOT CUE / CUE LOOP, RIGHT', chan=6, ctrl_id=0, value=3) self.padModeLoopRollRight = ModeButton('PAD MODE: LOOP / ROLL, RIGHT', chan=6, ctrl_id=0, value=19) self.padModeSequencerPattern1Right = ModeButton('PAD MODE: SEQUENCER / PATTERN (1), RIGHT', chan=6, ctrl_id=0, value=32) self.padModeSequencerPattern2Right = ModeButton('PAD MODE: SEQUENCER / PATTERN (2), RIGHT', chan=6, ctrl_id=0, value=34) self.padModeSequencerPattern1RightShift = ModeButton('PAD MODE: SEQUENCER / PATTERN (1), RIGHT, SHIFT', chan=6, ctrl_id=0, value=33) self.padModeSequencerPattern2RightShift = ModeButton('PAD MODE: SEQUENCER / PATTERN (2), RIGHT, SHIFT', chan=6, ctrl_id=0, value=35) self.padModeSamplerSlicerRight = ModeButton('PAD MODE: SAMPLER / SLICER, RIGHT', chan=6, ctrl_id=0, value=51) # pads mode 3 (HOT CUE / CUE LOOP) -> deck 1 and 2 self.mode3ParamMinusButtonLeft = Button('MODE 3: PARAM MINUS, LEFT', chan=5, ctrl_id=67, led_class=Led) self.mode3ParamPlusButtonLeft = Button('MODE 3: PARAM PLUS, LEFT', chan=5, ctrl_id=68, led_class=Led) self.mode3Pad1ButtonLeft = Button('MODE 3: PAD 1, LEFT', chan=5, ctrl_id=1, led_class=MultiLed) self.mode3Pad2ButtonLeft = Button('MODE 3: PAD 2, LEFT', chan=5, ctrl_id=2, led_class=MultiLed) self.mode3Pad3ButtonLeft = Button('MODE 3: PAD 3, LEFT', chan=5, ctrl_id=3, led_class=MultiLed) self.mode3Pad4ButtonLeft = Button('MODE 3: PAD 4, LEFT', chan=5, ctrl_id=4, led_class=MultiLed) self.mode3Pad5ButtonLeft = Button('MODE 3: PAD 5, LEFT', chan=5, ctrl_id=5, led_class=MultiLed) self.mode3Pad6ButtonLeft = Button('MODE 3: PAD 6, LEFT', chan=5, ctrl_id=6, led_class=MultiLed) self.mode3Pad7ButtonLeft = Button('MODE 3: PAD 7, LEFT', chan=5, ctrl_id=7, led_class=MultiLed) self.mode3Pad8ButtonLeft = Button('MODE 3: PAD 8, LEFT', chan=5, ctrl_id=8, led_class=MultiLed) self.mode3ParamMinusButtonLeftShift = Button('MODE 3: PARAM MINUS, LEFT, SHIFT', chan=5, ctrl_id=75, led_class=Led) self.mode3ParamPlusButtonLeftShift = Button('MODE 3: PARAM PLUS, LEFT, SHIFT', chan=5, ctrl_id=76, led_class=Led) self.mode3Pad1ButtonLeftShift = Button('MODE 3: PAD 1, LEFT, SHIFT', chan=5, ctrl_id=9, led_class=MultiLed) self.mode3Pad2ButtonLeftShift = Button('MODE 3: PAD 2, LEFT, SHIFT', chan=5, ctrl_id=10, led_class=MultiLed) self.mode3Pad3ButtonLeftShift = Button('MODE 3: PAD 3, LEFT, SHIFT', chan=5, ctrl_id=11, led_class=MultiLed) self.mode3Pad4ButtonLeftShift = Button('MODE 3: PAD 4, LEFT, SHIFT', chan=5, ctrl_id=12, led_class=MultiLed) self.mode3Pad5ButtonLeftShift = Button('MODE 3: PAD 5, LEFT, SHIFT', chan=5, ctrl_id=13, led_class=MultiLed) self.mode3Pad6ButtonLeftShift = Button('MODE 3: PAD 6, LEFT, SHIFT', chan=5, ctrl_id=14, led_class=MultiLed) self.mode3Pad7ButtonLeftShift = Button('MODE 3: PAD 7, LEFT, SHIFT', chan=5, ctrl_id=15, led_class=MultiLed) self.mode3Pad8ButtonLeftShift = Button('MODE 3: PAD 8, LEFT, SHIFT', chan=5, ctrl_id=16, led_class=MultiLed) self.mode3ParamMinusButtonRight = Button('MODE 3: PARAM MINUS, RIGHT', chan=6, ctrl_id=67, led_class=Led) self.mode3ParamPlusButtonRight = Button('MODE 3: PARAM PLUS, RIGHT', chan=6, ctrl_id=68, led_class=Led) self.mode3Pad1ButtonRight = Button('MODE 3: PAD 1, RIGHT', chan=6, ctrl_id=1, led_class=MultiLed) self.mode3Pad2ButtonRight = Button('MODE 3: PAD 2, RIGHT', chan=6, ctrl_id=2, led_class=MultiLed) self.mode3Pad3ButtonRight = Button('MODE 3: PAD 3, RIGHT', chan=6, ctrl_id=3, led_class=MultiLed) self.mode3Pad4ButtonRight = Button('MODE 3: PAD 4, RIGHT', chan=6, ctrl_id=4, led_class=MultiLed) self.mode3Pad5ButtonRight = Button('MODE 3: PAD 5, RIGHT', chan=6, ctrl_id=5, led_class=MultiLed) self.mode3Pad6ButtonRight = Button('MODE 3: PAD 6, RIGHT', chan=6, ctrl_id=6, led_class=MultiLed) self.mode3Pad7ButtonRight = Button('MODE 3: PAD 7, RIGHT', chan=6, ctrl_id=7, led_class=MultiLed) self.mode3Pad8ButtonRight = Button('MODE 3: PAD 8, RIGHT', chan=6, ctrl_id=8, led_class=MultiLed) self.mode3ParamMinusButtonRightShift = Button('MODE 3: PARAM MINUS, RIGHT, SHIFT', chan=6, ctrl_id=75, led_class=Led) self.mode3ParamPlusButtonRightShift = Button('MODE 3: PARAM PLUS, RIGHT, SHIFT', chan=6, ctrl_id=76, led_class=Led) self.mode3Pad1ButtonRightShift = Button('MODE 3: PAD 1, RIGHT, SHIFT', chan=6, ctrl_id=9, led_class=MultiLed) self.mode3Pad2ButtonRightShift = Button('MODE 3: PAD 2, RIGHT, SHIFT', chan=6, ctrl_id=10, led_class=MultiLed) self.mode3Pad3ButtonRightShift = Button('MODE 3: PAD 3, RIGHT, SHIFT', chan=6, ctrl_id=11, led_class=MultiLed) self.mode3Pad4ButtonRightShift = Button('MODE 3: PAD 4, RIGHT, SHIFT', chan=6, ctrl_id=12, led_class=MultiLed) self.mode3Pad5ButtonRightShift = Button('MODE 3: PAD 5, RIGHT, SHIFT', chan=6, ctrl_id=13, led_class=MultiLed) self.mode3Pad6ButtonRightShift = Button('MODE 3: PAD 6, RIGHT, SHIFT', chan=6, ctrl_id=14, led_class=MultiLed) self.mode3Pad7ButtonRightShift = Button('MODE 3: PAD 7, RIGHT, SHIFT', chan=6, ctrl_id=15, led_class=MultiLed) self.mode3Pad8ButtonRightShift = Button('MODE 3: PAD 8, RIGHT, SHIFT', chan=6, ctrl_id=16, led_class=MultiLed) # pads mode 19 (LOOP / ROLL) -> deck 1 and 2 self.mode19ParamMinusButtonLeft = Button('MODE 19: PARAM MINUS, LEFT', chan=5, ctrl_id=65, led_class=Led) self.mode19ParamPlusButtonLeft = Button('MODE 19: PARAM PLUS, LEFT', chan=5, ctrl_id=66, led_class=Led) self.mode19Pad1ButtonLeft = Button('MODE 19: PAD 1, LEFT', chan=5, ctrl_id=17, led_class=MultiLed) self.mode19Pad2ButtonLeft = Button('MODE 19: PAD 2, LEFT', chan=5, ctrl_id=18, led_class=MultiLed) self.mode19Pad3ButtonLeft = Button('MODE 19: PAD 3, LEFT', chan=5, ctrl_id=19, led_class=MultiLed) self.mode19Pad4ButtonLeft = Button('MODE 19: PAD 4, LEFT', chan=5, ctrl_id=20, led_class=MultiLed) self.mode19Pad5ButtonLeft = Button('MODE 19: PAD 5, LEFT', chan=5, ctrl_id=21, led_class=MultiLed) self.mode19Pad6ButtonLeft = Button('MODE 19: PAD 6, LEFT', chan=5, ctrl_id=22, led_class=MultiLed) self.mode19Pad7ButtonLeft = Button('MODE 19: PAD 7, LEFT', chan=5, ctrl_id=23, led_class=MultiLed) self.mode19Pad8ButtonLeft = Button('MODE 19: PAD 8, LEFT', chan=5, ctrl_id=24, led_class=MultiLed) self.mode19ParamMinusButtonLeftShift = Button('MODE 19: PARAM MINUS, LEFT, SHIFT', chan=5, ctrl_id=73, led_class=Led) self.mode19ParamPlusButtonLeftShift = Button('MODE 19: PARAM PLUS, LEFT, SHIFT', chan=5, ctrl_id=74, led_class=Led) self.mode19Pad1ButtonLeftShift = Button('MODE 19: PAD 1, LEFT, SHIFT', chan=5, ctrl_id=25, led_class=MultiLed) self.mode19Pad2ButtonLeftShift = Button('MODE 19: PAD 2, LEFT, SHIFT', chan=5, ctrl_id=26, led_class=MultiLed) self.mode19Pad3ButtonLeftShift = Button('MODE 19: PAD 3, LEFT, SHIFT', chan=5, ctrl_id=27, led_class=MultiLed) self.mode19Pad4ButtonLeftShift = Button('MODE 19: PAD 4, LEFT, SHIFT', chan=5, ctrl_id=28, led_class=MultiLed) self.mode19Pad5ButtonLeftShift = Button('MODE 19: PAD 5, LEFT, SHIFT', chan=5, ctrl_id=29, led_class=MultiLed) self.mode19Pad6ButtonLeftShift = Button('MODE 19: PAD 6, LEFT, SHIFT', chan=5, ctrl_id=30, led_class=MultiLed) self.mode19Pad7ButtonLeftShift = Button('MODE 19: PAD 7, LEFT, SHIFT', chan=5, ctrl_id=31, led_class=MultiLed) self.mode19Pad8ButtonLeftShift = Button('MODE 19: PAD 8, LEFT, SHIFT', chan=5, ctrl_id=32, led_class=MultiLed) self.mode19ParamMinusButtonRight = Button('MODE 19: PARAM MINUS, RIGHT', chan=6, ctrl_id=65, led_class=Led) self.mode19ParamPlusButtonRight = Button('MODE 19: PARAM PLUS, RIGHT', chan=6, ctrl_id=66, led_class=Led) self.mode19Pad1ButtonRight = Button('MODE 19: PAD 1, RIGHT', chan=6, ctrl_id=17, led_class=MultiLed) self.mode19Pad2ButtonRight = Button('MODE 19: PAD 2, RIGHT', chan=6, ctrl_id=18, led_class=MultiLed) self.mode19Pad3ButtonRight = Button('MODE 19: PAD 3, RIGHT', chan=6, ctrl_id=19, led_class=MultiLed) self.mode19Pad4ButtonRight = Button('MODE 19: PAD 4, RIGHT', chan=6, ctrl_id=20, led_class=MultiLed) self.mode19Pad5ButtonRight = Button('MODE 19: PAD 5, RIGHT', chan=6, ctrl_id=21, led_class=MultiLed) self.mode19Pad6ButtonRight = Button('MODE 19: PAD 6, RIGHT', chan=6, ctrl_id=22, led_class=MultiLed) self.mode19Pad7ButtonRight = Button('MODE 19: PAD 7, RIGHT', chan=6, ctrl_id=23, led_class=MultiLed) self.mode19Pad8ButtonRight = Button('MODE 19: PAD 8, RIGHT', chan=6, ctrl_id=24, led_class=MultiLed) self.mode19ParamMinusButtonRightShift = Button('MODE 19: PARAM MINUS, RIGHT, SHIFT', chan=6, ctrl_id=73, led_class=Led) self.mode19ParamPlusButtonRightShift = Button('MODE 19: PARAM PLUS, RIGHT, SHIFT', chan=6, ctrl_id=74, led_class=Led) self.mode19Pad1ButtonRightShift = Button('MODE 19: PAD 1, RIGHT, SHIFT', chan=6, ctrl_id=25, led_class=MultiLed) self.mode19Pad2ButtonRightShift = Button('MODE 19: PAD 2, RIGHT, SHIFT', chan=6, ctrl_id=26, led_class=MultiLed) self.mode19Pad3ButtonRightShift = Button('MODE 19: PAD 3, RIGHT, SHIFT', chan=6, ctrl_id=27, led_class=MultiLed) self.mode19Pad4ButtonRightShift = Button('MODE 19: PAD 4, RIGHT, SHIFT', chan=6, ctrl_id=28, led_class=MultiLed) self.mode19Pad5ButtonRightShift = Button('MODE 19: PAD 5, RIGHT, SHIFT', chan=6, ctrl_id=29, led_class=MultiLed) self.mode19Pad6ButtonRightShift = Button('MODE 19: PAD 6, RIGHT, SHIFT', chan=6, ctrl_id=30, led_class=MultiLed) self.mode19Pad7ButtonRightShift = Button('MODE 19: PAD 7, RIGHT, SHIFT', chan=6, ctrl_id=31, led_class=MultiLed) self.mode19Pad8ButtonRightShift = Button('MODE 19: PAD 8, RIGHT, SHIFT', chan=6, ctrl_id=32, led_class=MultiLed) # pads mode 51 (SAMPLER / SLICER) -> deck 1 and 2 self.mode51ParamMinusButtonLeft = Button('MODE 51: PARAM MINUS, LEFT', chan=5, ctrl_id=69, led_class=Led) self.mode51ParamPlusButtonLeft = Button('MODE 51: PARAM PLUS, LEFT', chan=5, ctrl_id=70, led_class=Led) self.mode51Pad1ButtonLeft = Button('MODE 51: PAD 1, LEFT', chan=5, ctrl_id=33, led_class=MultiLed) self.mode51Pad2ButtonLeft = Button('MODE 51: PAD 2, LEFT', chan=5, ctrl_id=34, led_class=MultiLed) self.mode51Pad3ButtonLeft = Button('MODE 51: PAD 3, LEFT', chan=5, ctrl_id=35, led_class=MultiLed) self.mode51Pad4ButtonLeft = Button('MODE 51: PAD 4, LEFT', chan=5, ctrl_id=36, led_class=MultiLed) self.mode51Pad5ButtonLeft = Button('MODE 51: PAD 5, LEFT', chan=5, ctrl_id=37, led_class=MultiLed) self.mode51Pad6ButtonLeft = Button('MODE 51: PAD 6, LEFT', chan=5, ctrl_id=38, led_class=MultiLed) self.mode51Pad7ButtonLeft = Button('MODE 51: PAD 7, LEFT', chan=5, ctrl_id=39, led_class=MultiLed) self.mode51Pad8ButtonLeft = Button('MODE 51: PAD 8, LEFT', chan=5, ctrl_id=40, led_class=MultiLed) self.mode51ParamMinusButtonLeftShift = Button('MODE 51: PARAM MINUS, LEFT, SHIFT', chan=5, ctrl_id=77, led_class=Led) self.mode51ParamPlusButtonLeftShift = Button('MODE 51: PARAM PLUS, LEFT, SHIFT', chan=5, ctrl_id=78, led_class=Led) self.mode51Pad1ButtonLeftShift = Button('MODE 51: PAD 1, LEFT, SHIFT', chan=5, ctrl_id=41, led_class=MultiLed) self.mode51Pad2ButtonLeftShift = Button('MODE 51: PAD 2, LEFT, SHIFT', chan=5, ctrl_id=42, led_class=MultiLed) self.mode51Pad3ButtonLeftShift = Button('MODE 51: PAD 3, LEFT, SHIFT', chan=5, ctrl_id=43, led_class=MultiLed) self.mode51Pad4ButtonLeftShift = Button('MODE 51: PAD 4, LEFT, SHIFT', chan=5, ctrl_id=44, led_class=MultiLed) self.mode51Pad5ButtonLeftShift = Button('MODE 51: PAD 5, LEFT, SHIFT', chan=5, ctrl_id=45, led_class=MultiLed) self.mode51Pad6ButtonLeftShift = Button('MODE 51: PAD 6, LEFT, SHIFT', chan=5, ctrl_id=46, led_class=MultiLed) self.mode51Pad7ButtonLeftShift = Button('MODE 51: PAD 7, LEFT, SHIFT', chan=5, ctrl_id=47, led_class=MultiLed) self.mode51Pad8ButtonLeftShift = Button('MODE 51: PAD 8, LEFT, SHIFT', chan=5, ctrl_id=48, led_class=MultiLed) self.mode51ParamMinusButtonRight = Button('MODE 51: PARAM MINUS, RIGHT', chan=6, ctrl_id=69, led_class=Led) self.mode51ParamPlusButtonRight = Button('MODE 51: PARAM PLUS, RIGHT', chan=6, ctrl_id=70, led_class=Led) self.mode51Pad1ButtonRight = Button('MODE 51: PAD 1, RIGHT', chan=6, ctrl_id=33, led_class=MultiLed) self.mode51Pad2ButtonRight = Button('MODE 51: PAD 2, RIGHT', chan=6, ctrl_id=34, led_class=MultiLed) self.mode51Pad3ButtonRight = Button('MODE 51: PAD 3, RIGHT', chan=6, ctrl_id=35, led_class=MultiLed) self.mode51Pad4ButtonRight = Button('MODE 51: PAD 4, RIGHT', chan=6, ctrl_id=36, led_class=MultiLed) self.mode51Pad5ButtonRight = Button('MODE 51: PAD 5, RIGHT', chan=6, ctrl_id=37, led_class=MultiLed) self.mode51Pad6ButtonRight = Button('MODE 51: PAD 6, RIGHT', chan=6, ctrl_id=38, led_class=MultiLed) self.mode51Pad7ButtonRight = Button('MODE 51: PAD 7, RIGHT', chan=6, ctrl_id=39, led_class=MultiLed) self.mode51Pad8ButtonRight = Button('MODE 51: PAD 8, RIGHT', chan=6, ctrl_id=40, led_class=MultiLed) self.mode51ParamMinusButtonRightShift = Button('MODE 51: PARAM MINUS, RIGHT, SHIFT', chan=6, ctrl_id=77, led_class=Led) self.mode51ParamPlusButtonRightShift = Button('MODE 51: PARAM PLUS, RIGHT, SHIFT', chan=6, ctrl_id=78, led_class=Led) self.mode51Pad1ButtonRightShift = Button('MODE 51: PAD 1, RIGHT, SHIFT', chan=6, ctrl_id=41, led_class=MultiLed) self.mode51Pad2ButtonRightShift = Button('MODE 51: PAD 2, RIGHT, SHIFT', chan=6, ctrl_id=42, led_class=MultiLed) self.mode51Pad3ButtonRightShift = Button('MODE 51: PAD 3, RIGHT, SHIFT', chan=6, ctrl_id=43, led_class=MultiLed) self.mode51Pad4ButtonRightShift = Button('MODE 51: PAD 4, RIGHT, SHIFT', chan=6, ctrl_id=44, led_class=MultiLed) self.mode51Pad5ButtonRightShift = Button('MODE 51: PAD 5, RIGHT, SHIFT', chan=6, ctrl_id=45, led_class=MultiLed) self.mode51Pad6ButtonRightShift = Button('MODE 51: PAD 6, RIGHT, SHIFT', chan=6, ctrl_id=46, led_class=MultiLed) self.mode51Pad7ButtonRightShift = Button('MODE 51: PAD 7, RIGHT, SHIFT', chan=6, ctrl_id=47, led_class=MultiLed) self.mode51Pad8ButtonRightShift = Button('MODE 51: PAD 8, RIGHT, SHIFT', chan=6, ctrl_id=48, led_class=MultiLed) # deck switch buttons self.deck3Button = Button('DECK 3', chan=1, ctrl_id=8, led_class=Led) self.deck4Button = Button('DECK 4', chan=2, ctrl_id=8, led_class=Led)