diff --git a/source/_static/controllers/MiniMixxx.ytx b/source/_static/controllers/MiniMixxx.ytx new file mode 100644 index 0000000000..b7617725f9 --- /dev/null +++ b/source/_static/controllers/MiniMixxx.ytx @@ -0,0 +1 @@ +{"hwconfig":{"digital1":["RB82","NONE","NONE","NONE","NONE","NONE","NONE","NONE"],"digital2":["NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE"],"encoders":["ENC41H_D","NONE","NONE","NONE","NONE","NONE","NONE","NONE"],"analog1":["P41","NONE","F41","NONE","P41","NONE","NONE","NONE"],"analog2":["NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE"],"analog_exp1":["NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE"],"analog_exp2":["NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE"],"feedbacks":["NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE"],"device_name":"MiniMixxx","usb_pid":60362,"usb_serial":"C20MMX001","midiMergeOption":[0,0,0,0],"banksNumber":1,"banksModes":[1,1,1,1,1,1,1,1],"banksIds":[65535,65535,65535,65535,65535,65535,65535,65535],"takeover":0,"rainbow":1,"remoteBanks":0,"factoryReset":0,"dumpStateOnStartup":0,"rememberState":1,"fw_version_minor":16,"fw_version_major":0,"hw_version_minor":0,"hw_version_major":1,"qtyMsg7bit":40,"qtyMsg14bit":0,"signature":207,"bootflag":0,"reserved1":0,"switchFeedbackColorList":{"OFF":"000000","RED":"FF0000","ORANGE":"FF8C00","STRAWBERRY":"CC0066","PINK":"FF6699","SALMON":"FF9999","MAGENTA":"EE00EE","PURPLE":"9966FF","BLUE":"0000FF","LIGHT BLUE":"0099FF","CYAN":"00EEEE","AQUA GREEN":"00FF99","GREEN":"00FF00","YELLOW":"EEEE00","CREAM":"FFFF99","WHITE":"DDDDDD"},"analogFeedbackColorList":{"OFF":"000000","RED":"FF0000","ORANGE":"FF8C00","STRAWBERRY":"CC0066","PINK":"FF6699","SALMON":"FF9999","MAGENTA":"EE00EE","PURPLE":"9966FF","BLUE":"0000FF","LIGHT BLUE":"0099FF","CYAN":"00EEEE","AQUA GREEN":"00FF99","GREEN":"00FF00","YELLOW":"EEEE00","CREAM":"FFFF99","WHITE":"DDDDDD"},"digitalFeedbackColorList":{"OFF":"000000","RED":"FF0000","ORANGE":"FF8C00","STRAWBERRY":"CC0066","PINK":"FF6699","SALMON":"FF9999","MAGENTA":"EE00EE","PURPLE":"9966FF","BLUE":"0000FF","LIGHT BLUE":"0099FF","CYAN":"00EEEE","AQUA GREEN":"00FF99","GREEN":"00FF00","YELLOW":"EEEE00","CREAM":"FFFF99","WHITE":"DDDDDD"}},"banks":{"0":{"encoders":{"0":{"encoder_mode":{"hw_mode":2,"speed_value":0},"rotary_config":{"message":2,"channel":0,"midi_port":3,"parameter":0,"parameter_lsb":0,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key_left":"\u0000","key_right":"\u0000","modifier_left":0,"modifier_right":0,"comment":"rotary 1"},"switch_config":{"type":0,"double_click":0,"mode":1,"message":0,"channel":0,"midi_port":3,"parameter":0,"parameter_lsb":0,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0000","key_left":"\u0000","key_right":"\u0000","modifier":0,"modifier_left":0,"modifier_right":0,"qstb_bank":0,"qstbn_note":0},"rotation_feedback":{"mode":0,"source":3,"channel":0,"message":2,"parameter":0,"parameter_lsb":0,"color_range_enable":1,"parameter_msb":0,"color":[245,66,84]},"switch_feedback":{"type":0,"source":3,"message":0,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":0,"parameter_lsb":0,"parameter_msb":0,"color":[66,245,224],"low_intensity_off_mode":0},"value":0},"1":{"encoder_mode":{"hw_mode":2,"speed_value":0},"rotary_config":{"message":2,"channel":0,"midi_port":3,"parameter":1,"parameter_lsb":1,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key_left":"\u0001","key_right":"\u0000","modifier_left":0,"modifier_right":0,"comment":"rotary 2"},"switch_config":{"type":0,"double_click":0,"mode":1,"message":0,"channel":0,"midi_port":3,"parameter":1,"parameter_lsb":1,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0001","key_left":"\u0001","key_right":"\u0000","modifier":0,"modifier_left":0,"modifier_right":0,"qstb_bank":0,"qstbn_note":0},"rotation_feedback":{"mode":2,"source":3,"channel":0,"message":2,"parameter":1,"parameter_lsb":1,"color_range_enable":1,"parameter_msb":0,"color":[245,187,66]},"switch_feedback":{"type":0,"source":3,"message":0,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":1,"parameter_lsb":1,"parameter_msb":0,"color":[66,245,224],"low_intensity_off_mode":0},"value":0},"2":{"encoder_mode":{"hw_mode":2,"speed_value":0},"rotary_config":{"message":2,"channel":0,"midi_port":3,"parameter":2,"parameter_lsb":2,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key_left":"\u0002","key_right":"\u0000","modifier_left":0,"modifier_right":0,"comment":"rotary 3"},"switch_config":{"type":0,"double_click":0,"mode":1,"message":0,"channel":0,"midi_port":3,"parameter":2,"parameter_lsb":2,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0002","key_left":"\u0002","key_right":"\u0000","modifier":0,"modifier_left":0,"modifier_right":0,"qstb_bank":0,"qstbn_note":0},"rotation_feedback":{"mode":2,"source":3,"channel":0,"message":2,"parameter":2,"parameter_lsb":2,"color_range_enable":1,"parameter_msb":0,"color":[245,187,66]},"switch_feedback":{"type":0,"source":3,"message":0,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":2,"parameter_lsb":2,"parameter_msb":0,"color":[66,245,224],"low_intensity_off_mode":0},"value":0},"3":{"encoder_mode":{"hw_mode":2,"speed_value":0},"rotary_config":{"message":2,"channel":0,"midi_port":3,"parameter":3,"parameter_lsb":3,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key_left":"\u0003","key_right":"\u0000","modifier_left":0,"modifier_right":0,"comment":"rotary 4"},"switch_config":{"type":0,"double_click":0,"mode":1,"message":0,"channel":0,"midi_port":3,"parameter":3,"parameter_lsb":3,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0003","key_left":"\u0003","key_right":"\u0000","modifier":0,"modifier_left":0,"modifier_right":0,"qstb_bank":0,"qstbn_note":0},"rotation_feedback":{"mode":0,"source":3,"channel":0,"message":2,"parameter":3,"parameter_lsb":3,"color_range_enable":1,"parameter_msb":0,"color":[245,66,84]},"switch_feedback":{"type":0,"source":3,"message":0,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":3,"parameter_lsb":3,"parameter_msb":0,"color":[66,245,224],"low_intensity_off_mode":0},"value":0}},"digitals":{"0":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":4,"parameter_lsb":4,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0004","modifier":0,"comment":"CUE1\u0000\u0000\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":4,"parameter_lsb":4,"parameter_msb":0,"color":[245,187,66],"low_intensity_off_mode":1},"value":0},"1":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":5,"parameter_lsb":5,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0005","modifier":0,"comment":"PITCH1\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":5,"parameter_lsb":5,"parameter_msb":0,"color":[4,84,249],"low_intensity_off_mode":1},"value":0},"2":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":6,"parameter_lsb":6,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0006","modifier":0,"comment":"HOT1-1\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":6,"parameter_lsb":6,"parameter_msb":0,"color":[230,28,253],"low_intensity_off_mode":1},"value":0},"3":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":7,"parameter_lsb":7,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0007","modifier":0,"comment":"CUE2\u0000\u0000\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":7,"parameter_lsb":7,"parameter_msb":0,"color":[245,187,66],"low_intensity_off_mode":1},"value":0},"4":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":8,"parameter_lsb":8,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\b","modifier":0,"comment":"UNK\u0000\u0000\u0000\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":8,"parameter_lsb":8,"parameter_msb":0,"color":[245,187,66],"low_intensity_off_mode":1},"value":0},"5":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":9,"parameter_lsb":9,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\t","modifier":0,"comment":"PITCH2\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":9,"parameter_lsb":9,"parameter_msb":0,"color":[4,84,249],"low_intensity_off_mode":1},"value":0},"6":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":10,"parameter_lsb":10,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\n","modifier":0,"comment":"HOT2-1\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":10,"parameter_lsb":10,"parameter_msb":0,"color":[230,28,253],"low_intensity_off_mode":1},"value":0},"7":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":11,"parameter_lsb":11,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u000b","modifier":0,"comment":"UnK\u0000\u0000\u0000\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":11,"parameter_lsb":11,"parameter_msb":0,"color":[245,187,66],"low_intensity_off_mode":1},"value":0},"8":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":12,"parameter_lsb":12,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\f","modifier":0,"comment":"PLAY1\u0000\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":12,"parameter_lsb":12,"parameter_msb":0,"color":[8,210,15],"low_intensity_off_mode":1},"value":0},"9":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":13,"parameter_lsb":13,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\r","modifier":0,"comment":"SYNC1\u0000\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":13,"parameter_lsb":13,"parameter_msb":0,"color":[245,66,84],"low_intensity_off_mode":1},"value":0},"10":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":14,"parameter_lsb":14,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u000e","modifier":0,"comment":"HOT1-2\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":14,"parameter_lsb":14,"parameter_msb":0,"color":[230,28,253],"low_intensity_off_mode":1},"value":0},"11":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":15,"parameter_lsb":15,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u000f","modifier":0,"comment":"PLAY2\u0000\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":15,"parameter_lsb":15,"parameter_msb":0,"color":[8,210,15],"low_intensity_off_mode":1},"value":0},"12":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":16,"parameter_lsb":16,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0010","modifier":0,"comment":"UNK\u0000\u0000\u0000\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":16,"parameter_lsb":16,"parameter_msb":0,"color":[8,210,15],"low_intensity_off_mode":1},"value":0},"13":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":17,"parameter_lsb":17,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0011","modifier":0,"comment":"SYNC2\u0000\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":17,"parameter_lsb":17,"parameter_msb":0,"color":[245,66,84],"low_intensity_off_mode":1},"value":0},"14":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":18,"parameter_lsb":18,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0012","modifier":0,"comment":"HOT2-2\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":18,"parameter_lsb":18,"parameter_msb":0,"color":[230,28,253],"low_intensity_off_mode":1},"value":0},"15":{"action_config":{"toggle_momentary":0,"midi_port":3,"message":1,"channel":0,"parameter":19,"parameter_lsb":19,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0013","modifier":0,"comment":"UNK2-2\u0000\u0000"},"feedback_config":{"type":1,"source":3,"message":1,"channel":0,"local_behaviour":0,"color_range_enable":1,"parameter":19,"parameter_lsb":19,"parameter_msb":0,"color":[240,245,66],"low_intensity_off_mode":1},"value":0}},"analogs":{"0":{"general_analog":{"analog_type":3},"message_config":{"message":2,"channel":0,"split_mode":0,"midi_port":3,"parameter":4,"parameter_lsb":4,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0004","modifier":0,"comment":"ytx Ana."},"feedback_config":{"type":0,"source":3,"message":2,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":4,"parameter_lsb":4,"parameter_msb":0,"color":[66,245,224]},"value":0,"has_feedback":false},"1":{"general_analog":{"analog_type":3},"message_config":{"message":2,"channel":0,"split_mode":0,"midi_port":3,"parameter":5,"parameter_lsb":5,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0005","modifier":0,"comment":"ytx Ana."},"feedback_config":{"type":0,"source":3,"message":2,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":5,"parameter_lsb":5,"parameter_msb":0,"color":[66,245,224]},"value":0,"has_feedback":false},"2":{"general_analog":{"analog_type":3},"message_config":{"message":2,"channel":0,"split_mode":0,"midi_port":3,"parameter":6,"parameter_lsb":6,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0006","modifier":0,"comment":"ytx Ana."},"feedback_config":{"type":0,"source":3,"message":2,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":6,"parameter_lsb":6,"parameter_msb":0,"color":[66,245,224]},"value":0,"has_feedback":false},"3":{"general_analog":{"analog_type":3},"message_config":{"message":2,"channel":0,"split_mode":0,"midi_port":3,"parameter":7,"parameter_lsb":7,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u0007","modifier":0,"comment":"ytx Ana."},"feedback_config":{"type":0,"source":3,"message":2,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":7,"parameter_lsb":7,"parameter_msb":0,"color":[66,245,224]},"value":0,"has_feedback":false},"4":{"general_analog":{"analog_type":3},"message_config":{"message":2,"channel":0,"split_mode":0,"midi_port":3,"parameter":8,"parameter_lsb":8,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\b","modifier":0,"comment":"ytx Ana."},"feedback_config":{"type":0,"source":3,"message":2,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":8,"parameter_lsb":8,"parameter_msb":0,"color":[66,245,224]},"value":0,"has_feedback":false},"5":{"general_analog":{"analog_type":3},"message_config":{"message":2,"channel":0,"split_mode":0,"midi_port":3,"parameter":9,"parameter_lsb":9,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\t","modifier":0,"comment":"ytx Ana."},"feedback_config":{"type":0,"source":3,"message":2,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":9,"parameter_lsb":9,"parameter_msb":0,"color":[66,245,224]},"value":0,"has_feedback":false},"6":{"general_analog":{"analog_type":3},"message_config":{"message":2,"channel":0,"split_mode":0,"midi_port":3,"parameter":10,"parameter_lsb":10,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\n","modifier":0,"comment":"ytx Ana."},"feedback_config":{"type":0,"source":3,"message":2,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":10,"parameter_lsb":10,"parameter_msb":0,"color":[66,245,224]},"value":0,"has_feedback":false},"7":{"general_analog":{"analog_type":3},"message_config":{"message":2,"channel":0,"split_mode":0,"midi_port":3,"parameter":11,"parameter_lsb":11,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u000b","modifier":0,"comment":"ytx Ana."},"feedback_config":{"type":0,"source":3,"message":2,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":11,"parameter_lsb":11,"parameter_msb":0,"color":[66,245,224]},"value":0,"has_feedback":false},"8":{"general_analog":{"analog_type":3},"message_config":{"message":2,"channel":0,"split_mode":0,"midi_port":3,"parameter":12,"parameter_lsb":12,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\f","modifier":0,"comment":"ytx Ana."},"feedback_config":{"type":0,"source":3,"message":2,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":12,"parameter_lsb":12,"parameter_msb":0,"color":[66,245,224]},"value":0,"has_feedback":false},"9":{"general_analog":{"analog_type":3},"message_config":{"message":2,"channel":0,"split_mode":0,"midi_port":3,"parameter":13,"parameter_lsb":13,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\r","modifier":0,"comment":"ytx Ana."},"feedback_config":{"type":0,"source":3,"message":2,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":13,"parameter_lsb":13,"parameter_msb":0,"color":[66,245,224]},"value":0,"has_feedback":false},"10":{"general_analog":{"analog_type":3},"message_config":{"message":2,"channel":0,"split_mode":0,"midi_port":3,"parameter":14,"parameter_lsb":14,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u000e","modifier":0,"comment":"ytx Ana."},"feedback_config":{"type":0,"source":3,"message":2,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":14,"parameter_lsb":14,"parameter_msb":0,"color":[66,245,224]},"value":0,"has_feedback":false},"11":{"general_analog":{"analog_type":3},"message_config":{"message":2,"channel":0,"split_mode":0,"midi_port":3,"parameter":15,"parameter_lsb":15,"parameter_msb":0,"parameter_min":0,"parameter_min_lsb":0,"parameter_min_msb":0,"parameter_max":127,"parameter_max_lsb":127,"parameter_max_msb":127,"key":"\u000f","modifier":0,"comment":"ytx Ana."},"feedback_config":{"type":0,"source":3,"message":2,"channel":0,"local_behaviour":0,"color_range_enable":0,"parameter":15,"parameter_lsb":15,"parameter_msb":0,"color":[66,245,224]},"value":0,"has_feedback":false}},"feedbacks":{},"color":"None","button":"None","mode":"Toggle","midi_ch":"None"}}} diff --git a/source/_static/controllers/yaeltex_minimixxx.jpg b/source/_static/controllers/yaeltex_minimixxx.jpg new file mode 100644 index 0000000000..df15f56064 Binary files /dev/null and b/source/_static/controllers/yaeltex_minimixxx.jpg differ diff --git a/source/hardware/controllers/yaeltex_minimixxx.rst b/source/hardware/controllers/yaeltex_minimixxx.rst new file mode 100644 index 0000000000..cf4d0ca1bd --- /dev/null +++ b/source/hardware/controllers/yaeltex_minimixxx.rst @@ -0,0 +1,328 @@ +.. _yaeltex-minimixxx: + +Yaeltex MiniMixxx +================= + +- `Manufacturer’s product page `__ + +.. sectionauthor:: + Owen Williams + +.. versionadded:: 2.4.0 + +The Yaeltex MiniMixxx is a compact, 2-deck DJ controller designed exclusively +for Mixxx. Unlike most small form-factor DJ controllers which sacrifice +important functions, the MiniMixxx provides access to all of the critical parts +of DJing: full size EQ and quick FX knobs, pitch sliders, channel faders and +track gain, playback controls including sync nudging, looping, an FX bank, 4 +hotcues per deck, 8 samplers, sync lock, keylock, library navigation, and master +output settings. Button mode layers are intelligently laid out and road-tested +for maximum flexibility during performance, with bold RGB colors indicating +current modes. The visualization of channel volume and virtual record spinning +indicators makes the MiniMixxx an eye-catching wonder in the DJ booth. + +The MiniMixxx can run on USB bus power. Using a separate power supply increases +the brightness of the LEDs. The MiniMixxx does not have a built-in sound card. + +Compatibility +------------- + +Controller +~~~~~~~~~~ + +The MiniMixxx is a USB class compliant MIDI device. To work correctly with this +mapping, you need to load the custom Yaeltex layout file onto your controller: + +1. Download the :download:`MiniMixxx Layout Configuration<../../_static/controllers/MiniMixxx.ytx>`. +1. Go to `Yaeltex Kilowhat `_ configuration site. +1. Select your controller and click "Load From Desktop" +1. Select the downloaded layout file. +1. Click Send to Device. + +Inside Mixxx, open the preferences and select the Yaeltex Minimixxx from the list of controller presets. + +Mapping description +------------------- + +.. figure:: ../../_static/controllers/yaeltex_minimixxx.jpg + :align: center + :width: 100% + :figwidth: 100% + :alt: Yaeltex Minimixxx (photo by Yaeltex) + :figclass: pretty-figures + + Yaeltex Minimixxx + +Mixer +~~~~~ + +The primary mixer knobs and sliders are single-purpose. This includes: + +======== ================================================== ========================================== +No. Control Function +======== ================================================== ========================================== +1 :hwlabel:`Hi` High frequency EQ Adjustment +2 :hwlabel:`Mid` Midrange EQ Adjustment +3 :hwlabel:`Low` Low frequency EQ Adjustment +4 :hwlabel:`FX` Turn to engage Quick FX for each channel. +5 :hwlabel:`Level` Slide to adjust channel level +6 :hwlabel:`Pitch` Slide to adjust deck speed. When :hwlabel:`SHIFT` is held, has no effect. When :hwlabel:`KEYLOCK` is held, adjusts musical pitch. +======== ================================================== ========================================== + +Buttons Overview +~~~~~~~~~~~~~~~~ + +Almost all the other controls on the MiniMixxx have more than one function. It +helps to understand how the buttons are divided + +.. csv-table:: + :header: "Deck 1", "", "", "Deck 2", "", "", "Layer Buttons", "" + :widths: 1 1 1 1 1 1 1 1 + + ":hwlabel:`1`", ":hwlabel:`2`", ":hwlabel:`3`", ":hwlabel:`4`", ":hwlabel:`5`", ":hwlabel:`6`", ":hwlabel:`7`", ":hwlabel:`8`" + ":hwlabel:`9`", ":hwlabel:`10`", ":hwlabel:`11`", ":hwlabel:`12`", ":hwlabel:`13`", ":hwlabel:`14`", ":hwlabel:`15`", ":hwlabel:`16`" + +There are 16 buttons arranged in three blocks. The buttons are numbered 1-16, +starting in the upper left across the top row, and then counting the bottom row. +So the upper left button is 1, the upper right button is 8, the lower left +button is 9, the lower right button is 16. + + + - Deck 1 uses the leftmost 6 buttons in a 3x2 grid. + + - Deck 2 uses the next block of 6 buttons. + + - The last 4 buttons enable certain layers and modes. These are buttons + :hwlabel:`7`, :hwlabel:`8`, :hwlabel:`15`, and :hwlabel:`16`. + + - Button :hwlabel:`16` in the lower right is always the :hwlabel:`SHIFT` button. + + - The upper left button of each track block (number :hwlabel:`1` and + :hwlabel:`4`) are always :hwlabel:`CUE` buttons for track 1 and 2, respectively. + + - The lower left button of each track block (number :hwlabel:`9` and + :hwlabel:`12`) are always :hwlabel:`PLAY` buttons for track 1 and 2. + + - Each deck has a small grid of 4 buttons to the right of the :hwlabel:`PLAY` + and :hwlabel:`CUE` buttons for that deck. These are buttons :hwlabel:`2`, + :hwlabel:`3`, :hwlabel:`10`, :hwlabel:`11`; and :hwlabel:`5`, :hwlabel:`6`, + :hwlabel:`13`, :hwlabel:`14`. + +Constant buttons: + +.. csv-table:: + :header: "Deck 1", "", "", "Deck 2", "", "", "Layer Buttons", "" + :widths: 1 1 1 1 1 1 1 1 + + ":hwlabel:`CUE`", "", "", ":hwlabel:`CUE`", "", "", "", "" + ":hwlabel:`PLAY`", "", "", ":hwlabel:`PLAY`", "", "", "", ":hwlabel:`SHIFT`" + +Default Layer +~~~~~~~~~~~~~ + +Because the MiniMixxx is so compact, most controls have more than one function +depending on what Layer is selected. The Default Layer will be active when the +controller starts up. + +.. csv-table:: + :header: "Encoder 1", "Encoder 2", "Encoder 3", "Encoder 4" + :widths: 1 1 1 1 + :align: center + + ":hwlabel:`JOG 1`", ":hwlabel:`PREGAIN 1`", ":hwlabel:`PREGAIN 2`", ":hwlabel:`JOG 2`" + +.. Spacer + +.. csv-table:: + :header: "Deck 1", "", "", "Deck 2", "", "", "Layer Buttons", "" + :widths: 1 1 2 1 1 2 1 1 + + ":hwlabel:`CUE`", ":hwlabel:`KEYLOCK`", ":hwlabel:`FX`", ":hwlabel:`CUE`", ":hwlabel:`KEYLOCK`", ":hwlabel:`FX`", ":hwlabel:`HOTCUES-1` / :hwlabel:`FX`", ":hwlabel:`HOTCUES-2` / :hwlabel:`SAMPLERS`" + ":hwlabel:`PLAY`", ":hwlabel:`SYNC`", ":hwlabel:`LOOP`", ":hwlabel:`PLAY`", ":hwlabel:`SYNC`", ":hwlabel:`LOOP`", ":hwlabel:`LIBRARY` / :hwlabel:`MAIN GAIN`", ":hwlabel:`SHIFT`" + +The Default Layer is active when the controller starts, and represents the +default actions for each button. Some buttons activate other layers. When a +layer is selected, pushing another layer button will enable that layer instead. +Or, press the currently-activated layer button to disable it. + +In the Default Layer, the encoders above the Pitch sliders will have an animated +spinning indicator, and the encoders above the Level sliders will show an +animated VU meter for each deck. + +=============================== ======== ===================================== +Button Category Function +=============================== ======== ===================================== +:hwlabel:`2` Deck 1 :hwlabel:`KEYLOCK`. Tapping this button toggles keylock. Press and hold this button and move the :hwlabel:`PITCH` slider to adjust musical key without changing track speed. +:hwlabel:`3` Deck 1 Toggles :hwlabel:`FX` Unit 1 for each deck. +:hwlabel:`10` Deck 1 :hwlabel:`SYNC`. Tap to perform a one-off beatsync. Press and hold to enable Sync Lock. +:hwlabel:`11` Deck 1 Enables the :hwlabel:`LOOP` layer for each individual deck. +.. +:hwlabel:`8` Deck 2 Enables the :hwlabel:`HOTCUE` layer for each deck. +:hwlabel:`5` Deck 2 :hwlabel:`KEYLOCK`. Tapping this button toggles keylock. Press and hold this button and move the :hwlabel:`PITCH` slider to adjust musical key without changing track speed. +:hwlabel:`6` Deck 2 Toggles :hwlabel:`FX` Unit 1 for each deck. +:hwlabel:`13` Deck 2 :hwlabel:`SYNC`. Tap to perform a one-off beatsync. Press and hold to enable Sync Lock. +.. +:hwlabel:`7` Deck 1 Enables the :hwlabel:`HOTCUE` layer for Deck 1. +:hwlabel:`8` Deck 2 Enables the :hwlabel:`HOTCUE` layer for Deck 2. +:hwlabel:`15` Layer Enables the :hwlabel:`LIBRARY` layer. Hold :hwlabel:`SHIFT` and press to enable the :hwlabel:`MAIN GAIN` layer. +:hwlabel:`16` Layer :hwlabel:`SHIFT` +=============================== ======== ===================================== + +================== ================ ======================== ======================================== +Encoder Category Action Function +================== ================ ======================== ======================================== +Encoder 1 Deck 1 Jog Spin Jog forward and back, or nudge faster or slower if the track is playing. +.. .. :hwlabel:`SHIFT` + Spin Seek forward a large distance in the track. +.. .. Press Creates a loop if not in a loop, or reloop toggle if the playhead is in the loop. +.. .. :hwlabel:`SHIFT` + Press Does a beatloop roll. +Encoder 2 Deck 1 Pregain Spin Adjust track pregain. +.. .. Press Toggle :term:`pfl`. +.. .. :hwlabel:`SHIFT` + Press Reset track pregain. +Encoder 3 Deck 2 Pregain Spin Adjust track pregain. +.. .. Press Toggle :term:`pfl`. +.. .. :hwlabel:`SHIFT` + Press Reset track pregain. +Encoder 4 Deck 2 Jog Spin Jog forward and back, or nudge faster or slower if the track is playing. +.. .. :hwlabel:`SHIFT` + Spin Seek forward a large distance in the track. +.. .. Press Creates a loop if not in a loop, or reloop toggle if the playhead is in the loop. +.. .. :hwlabel:`SHIFT` + Press Does a beatloop roll. +================== ================ ======================== ======================================== + +If the track is clipping, the LED ring will flash bright red. + +Loop Layers +~~~~~~~~~~~ + +.. csv-table:: + :header: "Encoder 1", "Encoder 2", "Encoder 3", "Encoder 4" + :widths: 1 1 1 1 + :align: center + + ":hwlabel:`LOOP 1`", ":hwlabel:`BEATJUMP 1`", ":hwlabel:`LOOP 2`", ":hwlabel:`BEATJUMP 2`" + +The :hwlabel:`LOOP` layer can be activated separately per-deck. When active, the +two encoders for the activated deck will turn green. + +In the table below, the Left encoder for Deck 1 is above its pitch slider, Deck +2's is above its level slider. The Left encoders control loops, and the Right +encoders control beatjumping. + +============= ======================== ======================================== +Encoder Action Function +============= ======================== ======================================== +Left Encoder Spin Adjusts loop size. +.. :hwlabel:`SHIFT` + Spin Moves the loop by the Beatjump amount. +.. Press Creates a loop if not in a loop, or reloop toggle if the playhead is in the loop. +.. :hwlabel:`SHIFT` + Press Reloop toggle. +Right Encoder Spin Adjust beatjump size. +.. :hwlabel:`SHIFT` + Spin Jump the playhead forward / backward. +.. Press Activate a beatloop roll. +.. :hwlabel:`SHIFT` + Press Reloop and stop. +============= ======================== ======================================== + +Hotcue Layers +~~~~~~~~~~~~~ + +.. csv-table:: + :header: "Deck 1", "", "", "Deck 2", "", "", "Layer Buttons", "" + :widths: 1 1 2 1 1 2 1 1 + + ":hwlabel:`CUE`", ":hwlabel:`HOTCUE 1`", ":hwlabel:`HOTCUE 2`", ":hwlabel:`CUE`", ":hwlabel:`HOTCUE 1`", ":hwlabel:`HOTCUE 2`", ":hwlabel:`HOTCUES-1` / :hwlabel:`FX`", ":hwlabel:`HOTCUES-2` / :hwlabel:`SAMPLERS`" + ":hwlabel:`PLAY`", ":hwlabel:`HOTCUE 3`", ":hwlabel:`HOTCUE 4`", ":hwlabel:`PLAY`", ":hwlabel:`HOTCUE 3`", ":hwlabel:`HOTCUE 4`", ":hwlabel:`LIBRARY` / :hwlabel:`MAIN GAIN`", ":hwlabel:`SHIFT`" + + +The :hwlabel:`HOTCUE` layers are also activated separately per deck. When +activated, the four buttons to the right of :hwlabel:`PLAY` and :hwlabel:`CUE` +for each deck become hotcue buttons. Pressing the hotcue button activates the +hotcue. Hold :hwlabel:`SHIFT` and press to clear the hotcue. + +Sampler Layer +~~~~~~~~~~~~~ + +.. csv-table:: + :header: "Deck 1", "", "", "Deck 2", "", "", "Layer Buttons", "" + :widths: 1 1 2 1 1 2 1 1 + + ":hwlabel:`CUE`", ":hwlabel:`SAMPLE 1`", ":hwlabel:`SAMPLE 2`", ":hwlabel:`CUE`", ":hwlabel:`SAMPLE 3`", ":hwlabel:`SAMPLE 4`", ":hwlabel:`HOTCUES-1` / :hwlabel:`FX`", ":hwlabel:`HOTCUES-2` / :hwlabel:`SAMPLERS`" + ":hwlabel:`PLAY`", ":hwlabel:`SAMPLE 5`", ":hwlabel:`SAMPLE 6`", ":hwlabel:`PLAY`", ":hwlabel:`SAMPLE 7`", ":hwlabel:`SAMPLE 8`", ":hwlabel:`LIBRARY` / :hwlabel:`MAIN GAIN`", ":hwlabel:`SHIFT`" + + +When activated, all 8 buttons next to both sets of :hwlabel:`PLAY` and :hwlabel:`CUE` +buttons become sampler buttons. Press any button to activate that sample. Hold +:hwlabel:`SHIFT` and press to eject the sample. + +FX Layer +~~~~~~~~ + +.. csv-table:: + :header: "Encoder 1", "Encoder 2", "Encoder 3", "Encoder 4" + :widths: 1 1 1 1 + :align: center + + ":hwlabel:`FX META 1`", ":hwlabel:`FX META 2`", ":hwlabel:`FX META 3`", ":hwlabel:`FX SUPER`" + + +When FX layer is activated, the four encoders control Effect Unit 1. The left +three encoders adjust the :hwlabel:`META` knobs for the three effects in the +unit, and the rightmost encoder controls the :hwlabel:`SUPER` knob for the whole +unit. In FX mode, the encoders turn blue. + +Pressing an encoder enables or disables the effect. Pressing the rightmost +encoder toggles the whole unit. + +Library Layer +~~~~~~~~~~~~~ + +.. csv-table:: + :header: "Encoder 1", "Encoder 2", "Encoder 3", "Encoder 4" + :widths: 1 1 1 1 + :align: center + + ":hwlabel:`VERTICAL FOCUS`", ":hwlabel:`SELECT 1`", ":hwlabel:`SELECT 2`", ":hwlabel:`HORIZONTAL FOCUS`" + + +When the Library layer is activated, the four encoders enable browsing of the +library. In Library mode, the encoders turn purple. + +================== ================ ======================== ======================================== +Encoder Category Action Function +================== ================ ======================== ======================================== +Encoder 1 Library Focus Spin Move library focus forward / backward. +.. .. :hwlabel:`SHIFT` + Spin Seek forward a large distance in the track in Deck 1. This is useful for previewing tracks without leaving the library layer. +.. .. Press Activates "Go To Item", which opens or closes the tree view in the side panel. +Encoders 2 and 3 Scroll Spin Scrolls up and down. +.. .. :hwlabel:`SHIFT` + Spin Scrolls horizontally. +.. .. Press Load the selected track in either Deck 1 or 2, depending which knob you're using. +.. .. :hwlabel:`SHIFT` + Press Ejects the currently loaded track. +Encoder 4 Horizontal Focus Spin Scrolls horizontally. +.. .. :hwlabel:`SHIFT` + Spin Seek forward a large distance in the track in Deck 2. This is useful for previewing tracks without leaving the library layer. +.. .. Press Activates "Go To Item", which opens or closes the tree view in the side panel. +================== ================ ======================== ======================================== + +Main Gain Layer +~~~~~~~~~~~~~~~ + +.. csv-table:: + :header: "Encoder 1", "Encoder 2", "Encoder 3", "Encoder 4" + :widths: 1 1 1 1 + :align: center + + ":hwlabel:`MAIN BALANCE`", ":hwlabel:`MAIN GAIN`", ":hwlabel:`HEAD GAIN`", ":hwlabel:`HEAD MIX`" + + +The main gain layer is useful for adjusting main and headphone output levels. +When active, the encoders turn light green and light yellow. + +================== ================ ======================== ======================================== +Encoder Category Action Function +================== ================ ======================== ======================================== +Encoder 1 Main Balance Spin Adjusts main balance. +.. .. Press Resets main balance. +Encoder 2 Main Gain Spin Adjusts main gain. +.. .. :hwlabel:`SHIFT` + Spin Adjusts booth gain. +.. .. Press Resets main gain. +.. .. :hwlabel:`SHIFT` + Press Resets booth gain. +Encoder 3 Headphone Gain Spin Adjusts headphone gain. +.. .. Press Resets headphone gain. +Encoder 4 Headphone Mix Spin Adjusts headphone mix. +.. .. Press Resets headphone mix. +================== ================ ======================== ========================================