#!/usr/bin/env python3 import sys, getopt import time import threading from mido import MidiFile import serial def serialreceive(ser): print("Serial running") while True: try: line = ser.readline().decode() print(line) except Exception: pass def main(argv): inputfile = '' outputport = '' try: opts, args = getopt.getopt(argv, "hi:o:",["ifile=","oport="]) except getopt.GetoptError: print('send.py -i -o ') sys.exit(2) for opt, arg in opts: if opt == '-h': print('send.py -i -o ') sys.exit() elif opt in ("-i", "--ifile"): inputfile = arg elif opt in ("-o", "--oport"): outputport = arg with serial.Serial(outputport, 115200, timeout=12) as ser: receivethread = threading.Thread(target=serialreceive, args=(ser,)) receivethread.start() with MidiFile(inputfile) as mid: for msg in mid: time.sleep(msg.time) if not msg.is_meta: if msg.type == 'note_on' or msg.type == 'note_off': print(msg) ser.write(msg.bin()) else: print("not sent: " + str(msg)) #time.sleep(1000) if __name__ == "__main__": main(sys.argv[1:])