def list_midi_devices(): """ Lists MIDI devices. @return: None """ rtp_control = RTPControl() #FIXME: We should not need to instanciated all those session objects to simply list MIDI devices! # we give it dummy port numbers, just to enable sending and receiving. midi_session = rtp_control.add_session( MidiSession("127.0.0.1", rport=1, sport=1)) midi_session = rtp_control.get_session(midi_session) dev_in, dev_out = midi_session.get_devices() print "List of MIDI devices:" print " Input devices:" print " --------------" for dev in dev_in: print " * input %2s %30s" % (dev[0], '"%s"' % (dev[1])), if dev[2] == 1: print " [open]" else: print " [closed]" print " Output devices:" print " ---------------" for dev in dev_out: print " * output %2s %30s" % (dev[0], '"%s"' % (dev[1])), if dev[2] == 1: print " [open]" else: print " [closed]"
def cleanup_everything(): print "Shutting down midi stream module." # FIXME: what does it do, actually? return RTPControl().stop()
sys.exit(2) if config.receiving_port is None and config.sending_port is None: print "Error: You must choose either the sending or receiving mode." parser.print_usage() sys.exit(2) if config.sending_port is not None and config.receiving_port is not None: if config.sending_port != config.receiving_port: print "Error: receiving port and sending port must be equal if both specified." parser.print_usage() sys.exit(2) # start the app: midi_session_c = RTPControl().add_session( MidiSession(config.peer_address, sport=config.sending_port, rport=config.receiving_port, latency=config.latency, jitter_buffer_size=config.jitter_buffer, safe_keyboard=config.safe_keyboard, recovery=config.disable_recovery_journal, follow_standard=config.follow_standard, verbose=config.verbose)) midi_session = RTPControl().get_session(midi_session_c) dev_in, dev_out = midi_session.get_devices( ) #FIXME: I think this might crash if we're either not sending or receiving, since it will return a 1-tuple if config.input_device is not None: res = midi_session.set_device_in(config.input_device) if not res: print("Could not start session with input device %s" % (config.input_device)) sys.exit(2) if config.output_device is not None: res = midi_session.set_device_out(config.output_device)
def send_data(self, data, ts): #Selecting RTP session RTPControl().send_data_packet(self.cookie, data, ts)
def send_empty_packet(self, chunk=0): RTPControl().send_empty_packet(self.cookie, chunk)
def stop(self): """If override by daughters must call: """ RTPControl().stop_session(self.cookie)