Compare commits

...

2 commits

Author SHA1 Message Date
75e22e0166 add and use enum for SysEx message ids 2025-09-19 20:19:22 +02:00
43c4a5e50c DRY: create mixer once 2025-09-19 19:48:51 +02:00

View file

@ -19,6 +19,14 @@ class Mixer:
SYSEX_HEADER = ALLEN_HEATH_ID + QU_MIXER + MAJOR_MINOR SYSEX_HEADER = ALLEN_HEATH_ID + QU_MIXER + MAJOR_MINOR
SYSEX_ALL_CALL = SYSEX_HEADER + ALL_CALL_MIDI_CHANNEL SYSEX_ALL_CALL = SYSEX_HEADER + ALL_CALL_MIDI_CHANNEL
class SysExMessageId(Enum):
GET_NAME_FROM_QU_REQUEST = 0x01,
GET_NAME_FROM_QU_RESPONSE = 0x02,
GET_SYSTEM_STATE_REQUEST = 0x10,
GET_SYSTEM_STATE_RESPONSE = 0x11,
GET_METER_DATA_REQUEST = 0x12,
GET_METER_DATA_RESPONSE = 0x13
def recv(self): def recv(self):
p = mido.Parser() p = mido.Parser()
@ -42,7 +50,7 @@ class Mixer:
return msg return msg
def get_system_state(self): def get_system_state(self):
msg_id = 0x10 msg_id = self.SysExMessageId.GET_SYSTEM_STATE_REQUEST
i_pad_flag = 0x01 i_pad_flag = 0x01
data = self.SYSEX_ALL_CALL + [msg_id, i_pad_flag] data = self.SYSEX_ALL_CALL + [msg_id, i_pad_flag]
@ -87,7 +95,7 @@ class Mixer:
print(f"Firmware Version: {major_ver}.{minor_ver}") print(f"Firmware Version: {major_ver}.{minor_ver}")
def get_name_from_qu(self, channel_no, name_to_set): def get_name_from_qu(self, channel_no, name_to_set):
msg_id = 0x01 msg_id = self.SysExMessageId.GET_NAME_FROM_QU_REQUEST
data = self.SYSEX_HEADER + [int(0), msg_id, int(channel_no)] data = self.SYSEX_HEADER + [int(0), msg_id, int(channel_no)]
@ -173,35 +181,19 @@ def main():
args = parser.parse_args() args = parser.parse_args()
print(f"IP: {args.ip}") print(f"IP: {args.ip}")
mixer = Mixer(args.ip, MIXER_PORT)
if args.command: if args.command:
print(f"Command: {args.command}") print(f"Command: {args.command}")
print(f"Args: {vars(args)}") print(f"Args: {vars(args)}")
match args.command: match args.command:
case 'get_name_from_qu': case 'get_name_from_qu': mixer.get_name_from_qu(args.channel_id, args.name)
mixer = Mixer(args.ip, MIXER_PORT) case 'get_system_state': mixer.get_system_state()
mixer.get_name_from_qu(args.channel_id, args.name) case 'shutdown': mixer.shutdown()
case 'scene_recall': mixer.scene_recall(args.scene_number)
case 'get_system_state': case 'scene_recall_default': mixer.scene_recall(0)
mixer = Mixer(args.ip, MIXER_PORT) case 'watch': mixer.watch()
mixer.get_system_state()
case 'shutdown':
mixer = Mixer(args.ip, MIXER_PORT)
mixer.shutdown()
case 'scene_recall':
mixer = Mixer(args.ip, MIXER_PORT)
mixer.scene_recall(args.scene_number)
case 'scene_recall_default':
mixer = Mixer(args.ip, MIXER_PORT)
mixer.scene_recall(0)
case 'watch':
mixer = Mixer(args.ip, MIXER_PORT)
mixer.watch()
if __name__ == '__main__': if __name__ == '__main__':
main() main()