diff --git a/manager.py b/manager.py new file mode 100644 index 0000000..4426e2a --- /dev/null +++ b/manager.py @@ -0,0 +1,143 @@ +import mido,json,argparse,os +from mido import Message +from mido.ports import multi_receive +from os import path + +parser = argparse.ArgumentParser(description='''-r or --reset 1 will delete the previous config file + 0 will do nothing ''') +parser.add_argument('-r','--reset', type=int,default=0) +arguments = parser.parse_args() + +outCh = 6 +lcontrolCH = 2 +midiInputs = mido.get_input_names() +midiOutputs = mido.get_output_names() +inputList = [] +inputPort = 0 + +to_Axoloti = "Axoloti Core MIDI 1" +to_Keyboard = 'MicroBrute MIDI 1' +to_LControl = 'Launch Control XL MIDI 1' + +from_axoloti = 'Axoloti Core MIDI 1' +axoPort = mido.open_input(from_axoloti) + +style1 = "\x1b[4;37;40m" +greenS = "\x1b[6;30;42m" +redS = "\x1b[1;36;41m" +greenLetters = "\x1b[1;33;40m" + +def loggit(text,style): + return print(style + text + " \x1b[0m ") + +if arguments.reset == 1 : + if path.exists("stored_midiIO.json"): + loggit("RESETTING!!",greenS) + os.remove("stored_midiIO.json") + else: + loggit('Config file is not in the folder or has been removed',redS) + +def choose(text): + return int(input(text)) + +def startMenu(): + + loggit("----------- . -----------",greenS) + print("\x1b[6;30;42m STARTING I/0 SETTUP \x1b[0m ----------- \x1b[1;33;40m < this settings will be stored in stored_midiIO.json > \x1b[0m") + loggit("----------- . -----------",greenS) + loggit("----------- . -----------",greenS) + loggit("----------- INPUTS -----------",greenS) + + for name in mido.get_input_names(): + loggit("Input : "+ name,greenLetters) + + loggit("\n ----------- OUTPUTS -----------",greenS) + for name in mido.get_output_names(): + loggit("Output : " +name,greenLetters) + + print("----------- . ----------- \n") + + for input in midiInputs: + inIndex = midiInputs.index(input) + print(midiInputs[inIndex]) + addOrNot = choose("Add "+str(midiInputs[inIndex]) +" To inputs ? (1.- Yes 2.- No : ") + if addOrNot == 1: + inputList.append(midiInputs[inIndex]) + elif addOrNot != 1: + pass + else: + pass + print("ADDED CHANNELS TO MERGE") + print("-------------- . ------------- \n") + + for name in midiOutputs: + print(name, midiOutputs.index(name), "\x1b[1;36;41m <--SELECT \x1b[0m ") + + outnumPort = choose(" \n []Choose an output port[] : ") + to_Axoloti = midiOutputs[outnumPort] + + + print("INPUT ",midiInputs," OUTPUT ",midiOutputs[outnumPort]) + loggit('\n ----- \n READY \n ROUTIG STARTING... \n -----\n',greenLetters) + + #store new data in json file + config = {'input': midiInputs, 'output': to_Axoloti} + with open('stored_midiIO.json', 'w') as f: + json.dump(config, f) + + loggit('\n ----- PREFERECES SAVED IN .\stored_midiIO.json -----\n',greenLetters) + +if path.exists("stored_midiIO.json"): #load data from the previously choosen settings + with open('stored_midiIO.json', 'r') as f: + config = json.load(f) + inputPort = config["input"] + inputList = inputPort + to_Axoloti = config["output"] + print("\x1b[6;30;42m LAST USED CONFIGURATION LOADED \x1b[0m \n") + print("INPUT ",inputPort," OUTPUT ",to_Axoloti) + print("\x1b[4;37;40m Success! \x1b[0m") + pass + +else: + startMenu() + pass + +ports = [mido.open_input(name) for name in inputList] + +############# send custom CC local off for keyboard +local_off = Message('control_change',channel=13,control=122,value=0) + +with mido.open_output(to_Keyboard, autoreset=True) as kb: + kb.send(local_off) +#################################### + +try: + with mido.open_output(str(to_Axoloti), autoreset=True) as port: + for message in multi_receive(ports): + if hasattr(message, "note"): + print(message) + if message.type == 'note_on': + on = Message('note_on',channel=outCh,velocity=message.velocity,note=message.note) + port.send(on) + + if message.type == 'note_off': + off = Message('note_off',channel=outCh,note=message.note) + port.send(off) + + if message.type == 'control_change' : + cc = Message('control_change',channel=outCh,control=message.control,value=message.value) + port.send(cc) + print("Sending : ", cc) + print("----------------------") + +# To receive led CC data to show in the Launch Control XL + with mido.open_output(to_LControl) as port2: + print("Opened out to lx and axo listener " ,to_LControl, port2) + for message in multi_receive(axoPort): + if message.type == 'control_change' : + ledCC = Message('control_change',channel=lcontrolCH,control=message.control,value=message.value) + port2.send(ledCC) + print("Sending LED CC VALUES FROM AXO TO LXL") + +except KeyboardInterrupt: + pass \ No newline at end of file diff --git a/snippets/integrate.py b/snippets/integrate.py new file mode 100644 index 0000000..79cfb38 --- /dev/null +++ b/snippets/integrate.py @@ -0,0 +1,143 @@ +import mido,json,argparse,os +from mido import Message +from mido.ports import multi_receive +from os import path + +parser = argparse.ArgumentParser(description='-r or --reset 1 will delete the previous config file') +parser.add_argument('-r','--reset', type=int,default=0) +arguments = parser.parse_args() + +outCh = 6 # +lcontrolCH = 2 +midiInputs = mido.get_input_names() +midiOutputs = mido.get_output_names() +inputList = [] +inputPort = 0 + +to_Axoloti = "Axoloti Core MIDI 1" +to_Keyboard = 'MicroBrute MIDI 1' +to_LControl = 'Launch Control XL MIDI 1' + +from_axoloti = 'Axoloti Core MIDI 1' +axoPort = mido.open_input(from_axoloti) + +style1 = "\x1b[4;37;40m" +greenS = "\x1b[6;30;42m" +redS = "\x1b[1;36;41m" +greenLetters = "\x1b[1;33;40m" + +def loggit(text,style): + return print(style + text + " \x1b[0m ") + +if arguments.reset == 1 : + if path.exists("stored_midiIO.json"): + loggit("RESETTING!!",greenS) + os.remove("stored_midiIO.json") + else: + loggit('Config file is not in the folder or has been removed',redS) + +def choose(text): + return int(input(text)) + +def startMenu(): + + loggit("----------- . -----------",greenS) + print("\x1b[6;30;42m STARTING I/0 SETTUP \x1b[0m ----------- \x1b[1;33;40m < this settings will be stored in stored_midiIO.json > \x1b[0m") + loggit("----------- . -----------",greenS) + loggit("----------- . -----------",greenS) + loggit("----------- INPUTS -----------",greenS) + + for name in mido.get_input_names(): + loggit("Input : "+ name,greenLetters) + + loggit("\n ----------- OUTPUTS -----------",greenS) + for name in mido.get_output_names(): + loggit("Output : " +name,greenLetters) + + print("----------- . ----------- \n") + + for input in midiInputs: + inIndex = midiInputs.index(input) + print(midiInputs[inIndex]) + addOrNot = choose("Add "+str(midiInputs[inIndex]) +" To inputs ? (1.- Yes 2.- No : ") + if addOrNot == 1: + inputList.append(midiInputs[inIndex]) + elif addOrNot != 1: + pass + else: + pass + print("ADDED CHANNELS TO MERGE") + print("-------------- . ------------- \n") + + for name in midiOutputs: + print(name, midiOutputs.index(name), "\x1b[1;36;41m <--SELECT \x1b[0m ") + + outnumPort = choose(" \n []Choose an output port[] : ") + to_Axoloti = midiOutputs[outnumPort] + + + print("INPUT ",midiInputs," OUTPUT ",midiOutputs[outnumPort]) + loggit('\n ----- \n READY \n ROUTIG STARTING... \n -----\n',greenLetters) + + #store new data in json file + config = {'input': midiInputs, 'output': to_Axoloti} + with open('stored_midiIO.json', 'w') as f: + json.dump(config, f) + + loggit('\n ----- PREFERECES SAVED IN .\stored_midiIO.json -----\n',greenLetters) + +if path.exists("stored_midiIO.json"): #load data from the previously choosen settings + with open('stored_midiIO.json', 'r') as f: + config = json.load(f) + inputPort = config["input"] + inputList = inputPort + to_Axoloti = config["output"] + print("\x1b[6;30;42m LAST USED CONFIGURATION LOADED \x1b[0m \n") + print("INPUT ",inputPort," OUTPUT ",to_Axoloti) + print("\x1b[4;37;40m Success! \x1b[0m") + pass + +else: + startMenu() + pass + +ports = [mido.open_input(name) for name in inputList] + +############# send custom CC local off for keyboard +local_off = Message('control_change',channel=13,control=122,value=0) + +with mido.open_output(to_Keyboard, autoreset=True) as kb: + kb.send(local_off) +#################################### + +try: + with mido.open_output(str(to_Axoloti), autoreset=True) as port: + for message in multi_receive(ports): + if hasattr(message, "note"): + print(message) + if message.type == 'note_on': + on = Message('note_on',channel=outCh,velocity=message.velocity,note=message.note) + port.send(on) + + if message.type == 'note_off': + off = Message('note_off',channel=outCh,note=message.note) + port.send(off) + + if message.type == 'control_change' : + cc = Message('control_change',channel=outCh,control=message.control,value=message.value) + port.send(cc) + print("Sending : ", cc) + print("----------------------") + + +# To receive led CC data to show in the Launch Control XL + with mido.open_output(to_LControl) as port2: + #print("Opened out to lx and axo listener " ,to_LControl, port2) + for message in multi_receive(axoPort): + if message.type == 'control_change' : + ledCC = Message('control_change',channel=lcontrolCH,control=message.control,value=message.value) + port2.send(ledCC) + #print("Sending LED CC VALUES FROM AXO TO LXL") + +except KeyboardInterrupt: + pass \ No newline at end of file diff --git a/multiMidi.py b/snippets/multiMidi.py similarity index 97% rename from multiMidi.py rename to snippets/multiMidi.py index b0f2bad..e6c4932 100644 --- a/multiMidi.py +++ b/snippets/multiMidi.py @@ -25,13 +25,13 @@ print('\n ----- \n Waiting for messages...\n -----\n') local_off = Message('control_change',channel=13,control=122,value=0) + with mido.open_output(to_Keyboard, autoreset=True) as kb: time.sleep(1) kb.send(local_off) try: with mido.open_output(to_Axoloti, autoreset=True) as port: -<<<<<<< HEAD for message in multi_receive(ports): if hasattr(message, "note"): currNote = message @@ -47,7 +47,7 @@ port.send(cc) #print("Sending : ", cc) #print("----------------------") -======= + for message in multi_receive(ports): if hasattr(message, "note"): currNote = message @@ -64,7 +64,5 @@ port.send(cc) print("Sending : ", cc) print("----------------------") - ->>>>>>> 5b337c53be466cb34b8e40265498c4533d06cfda except KeyboardInterrupt: pass diff --git a/snippets/tkinter_test.py b/snippets/tkinter_test.py new file mode 100644 index 0000000..ce356bd --- /dev/null +++ b/snippets/tkinter_test.py @@ -0,0 +1,104 @@ +import mido,json,argparse,os +from mido import Message +from mido.ports import multi_receive +from os import path +from tkinter import * + +window = Tk() +window.geometry("350x200") +window.title("welcome to tkinter ") + +parser = argparse.ArgumentParser(description='Configure the script') +parser.add_argument('--reset', type=int,default=False) +arguments = parser.parse_args() + +outCh = 6 # +midiInputs = mido.get_input_names() +midiOutputs = mido.get_output_names() +inputList = [] +midiin = "loopMIDI 1 0" +outputPort = 0 +inputPort = 0 + +port = mido.open_input("loopMIDI 1 0") + +def updateLabel(x): + if x in midiInputs: + midiInputs.remove(midiInputs[x]) + if x not in midiInputs: + midiInputs.append(midiInputs[x]) + textvar = " INPUT " + midiInputs[x] + lab1 = Label(window, text=textvar, relief=RAISED,height=8, width=50 ) + print ("NAME APPENDED ",midiInputs[x]) + + lab1.pack() + +for i in range(len(midiInputs)): + button = Button() + button.configure(text=midiInputs[i])#This works fine for assigning text to the buttons. Each date value is unique for each button. + button['command'] = lambda: updateLabel(i) + button.pack(side=LEFT) + + +if arguments.reset == 1 : + if path.exists("stored_midiIO.json"): + print("\x1b[1;36;41m RESETTING!! \x1b[0m") + os.remove("stored_midiIO.json") + else: + print('\x1b[1;36;41m Config file is not in the folder or has been removed \n \x1b[0m') + +def startMenu(): + print("----------- . -----------") + print("\x1b[6;30;42m STARTING I/0 SETTUP \x1b[0m ----------- \x1b[1;33;40m < this settings will be stored in stored_midiIO.json > \x1b[0m") + print("----------- . -----------\n") + print("----------- INPUTS -----------") + + for name in mido.get_input_names(): + print("Input : ", name) + + print("\n ----------- OUTPUTS -----------") + for name in mido.get_output_names(): + print("Output : " , name) + print("----------- . ----------- \n") + + + + for name in midiInputs: + print("[",name, "] Select nº " ,midiInputs.index(name)) + + numPort = int(input("Choose an input port : ")) + inputPort = midiInputs[numPort] + + for name2 in midiOutputs: + print("[",name2,midiOutputs.index(name2), "] Select nº ", midiOutputs.index(name2)) + + print("-------------- . ------------- \n") + + outnumPort = int(input("Choose an output port : ")) + + print("INPUT ",midiInputs[numPort]," OUTPUT ",midiOutputs[outnumPort]) + print('\n ----- \n READY \n ROUTIG STARTING... \n -----\n') + config = {'input': midiInputs[numPort], 'output': midiOutputs[outnumPort]} + + + + with open('stored_midiIO.json', 'w') as f: + json.dump(config, f) + +if path.exists("stored_midiIO.json"): #load data from the previously choosen settings + with open('stored_midiIO.json', 'r') as f: + config = json.load(f) + inputPort = config["input"] + outputPort = config["output"] + print("\x1b[6;30;42m LAST USED CONFIGURATION LOADED \n \x1b[0m") + print("INPUT ",inputPort," OUTPUT ",outputPort) + print("\x1b[4;37;40m Success! \x1b[0m") + + +else: + startMenu() + +try: + window.mainloop() +except KeyboardInterrupt: + pass \ No newline at end of file