-
Notifications
You must be signed in to change notification settings - Fork 0
/
midi_keymap.py
115 lines (95 loc) · 3.2 KB
/
midi_keymap.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
"""CLI - MIDIKeymap
"""
import pygame.midi
from controllers.midi_asociaton import *
import os
import time
last_time_called = 0
def limited_midi_connect(midi_bind, status, note, value):
global last_time_called
elapsed = time.time() - last_time_called
if elapsed >= 0.2:
last_time_called = time.time()
midi_bind.connect(midi_bind, status, note, value)
class MIDIKeymap:
def activate(self):
pygame.midi.init()
input_id = pygame.midi.get_default_input_id()
midi_input = pygame.midi.Input(1)
try:
while check:
if midi_input.poll():
# Leer los mensajes MIDI
midi_events = midi_input.read(100)
for event in midi_events:
data = event[0]
status = data[0]
note = data[1]
value = data[2]
limited_midi_connect(MIDIbind,status,note,value)
midi_events = []
except KeyboardInterrupt:
print("Desactivando")
finally:
midi_input.close()
pygame.midi.quit()
def clean_window():
if os.name == "nt":
clear = "cls"
else:
clear = "clear"
os.system(f"{clear}")
def get_all_midis():
keys = MIDIkeys.controlls
cc = MIDIcc.controlls
pads = MIDIPads.controlls
if keys:
print("Asignaciones de Teclas:")
for note, obj in keys.items():
print(f"{note} --> {' + '.join(obj.command).upper()}")
if cc:
print("Asignaciones de slider:")
for note, obj in cc.items():
print(f"{note} --> {' + '.join(obj.command).upper()}")
if pads:
print("Asignaciones de Pads:")
for note, obj in pads.items():
print(f"{note} --> {' + '.join(obj.command).upper()}")
print()
if __name__ == "__main__":
check = True
clean_window()
bind = MIDIbind()
bind.load_bind()
while check:
clean_window()
print("Bienvenido a MIDIKeymap por @emmanuelmmontesinos en github")
get_all_midis()
print("1 - Asignar tecla/pad/slider a comando")
print("2 - Activar MIDIKeymap")
print("3 - Comprobar tecla/pad/slider")
print("4 - Salir")
selection = input("")
match selection:
case "1":
clean_window()
get_all_midis()
obj = bind.bind()
command = input("Ponga el comando separado por ,\nEj para Ctrl + C sería: ctrl,c\n")
obj.set_command(command)
case "2":
clean_window()
get_all_midis()
try:
print("MIDIKeymap Iniciado")
print("Para salir pulse Ctrl + C")
MIDIKeymap.activate(MIDIKeymap)
except KeyboardInterrupt:
print("Desactivando MIDIKeymap")
case "3":
clean_window()
MIDIControllers.all_midis(MIDIControllers)
case "4":
print("Cerrando Programa")
bind.save_bind()
break