def __init__(self): print('Midi input devices:', mido.get_input_names()) print('Midi output devices:', mido.get_output_names()) selected_input = ConfigFile.get_midi_input() selected_output = ConfigFile.get_midi_output() print('Using midi input device:', selected_input) print('Using midi output device:', selected_output) self._control_change_dict = {} self._note_dict = {} is_connected = False waiting_time = 3 while not is_connected : try: self._outport = mido.open_output(selected_output) # pylint: disable=no-member self._inport = mido.open_input(selected_input, callback=self.handle_message) # pylint: disable=no-member is_connected = True except Exception: print(f"Connection to X-Touch-Mini not possible. Connected? Retry in {waiting_time}s.") time.sleep(waiting_time)
def main_app(offline: bool): global_storage = GlobalStorage() sm = None aq = None ae = None if not offline: sm = SimConnect() aq = AircraftRequests(sm, _time=200) ae = AircraftEvents(sm) global_storage.set_aircraft_events(ae) global_storage.set_aircraft_requests(aq) else: global_storage.set_aircraft_events(MockAircraftEvents()) global_storage.set_aircraft_requests(MockAircraftRequests()) print('Midi input devices:', mido.get_input_names()) print('Midi output devices:', mido.get_output_names()) selected_input = ConfigFile.get_midi_input() selected_output = ConfigFile.get_midi_output() print('Using midi input device:', selected_input) print('Using midi output device:', selected_output) aircraft = aq.get('TITLE') print("Current aircraft:", aircraft) outport = mido.open_output(selected_output) # pylint: disable=no-member control_change_dict = {} note_dict = {} def handle_message(msg: mido.Message): # print(msg) if msg.type == 'control_change': if msg.control in control_change_dict: control_change_dict[msg.control].on_cc_data(msg.value) elif msg.type == 'note_on': if msg.note in note_dict: note_dict[msg.note].on_note_data(True) elif msg.type == 'note_off': if msg.note in note_dict: note_dict[msg.note].on_note_data(False) inport = mido.open_input(selected_input, callback=handle_message) # pylint: disable=no-member for e in range(1, 17): encoder = RotaryEncoder(e, outport) global_storage.add_encoder(encoder) for b in range(1, 33): btn = PushButton(b, outport) global_storage.add_button(btn) for f in range(1, 3): fader = Fader(f) global_storage.add_fader(fader) c = ConfigFile(aircraft) c.configure() triggers = c.triggers for encoder in GlobalStorage().encoders: control_change_dict[encoder.rotary_control_channel] = encoder note_dict[encoder.button_note] = encoder for btn in GlobalStorage().buttons: note_dict[btn.button_note] = btn for f in GlobalStorage().faders: control_change_dict[f.control_channel] = f while True: for obj in GlobalStorage().all_elements: if obj.bound_simvar and aq: sv = aq.get(obj.bound_simvar) obj.on_simvar_data(sv) current_aircraft = aq.get('TITLE') if current_aircraft and aircraft != current_aircraft: print("Aircraft changed from", aircraft, "to", current_aircraft) break time.sleep(0.05) global_storage.clear() inport.close() outport.close()