1
+ import rtmidi
2
+ from pynput .keyboard import Key
3
+ from pynput .mouse import Button
4
+ import pynput
5
+ import time
6
+ from pathlib import Path
7
+
8
+ # 36 - 51
9
+
10
+ keyboard = pynput .keyboard .Controller ()
11
+ mouse = pynput .mouse .Controller ()
12
+
13
+ knob_position = 0
14
+ knob_previous = knob_position
15
+
16
+ BUTTON_TO_BUTTON_ID = {
17
+ "A1" : 36 ,
18
+ "A2" : 37 ,
19
+ "A3" : 38 ,
20
+ "A4" : 39 ,
21
+ "B1" : 40 ,
22
+ "B2" : 41 ,
23
+ "B3" : 42 ,
24
+ "B4" : 43 ,
25
+ "C1" : 44 ,
26
+ "C2" : 45 ,
27
+ "C3" : 46 ,
28
+ "C4" : 47 ,
29
+ "D1" : 48 ,
30
+ "D2" : 49 ,
31
+ "D3" : 50 ,
32
+ "D4" : 51 ,
33
+ }
34
+
35
+ cmd = "echo test"
36
+
37
+ ATOM_NAME = "ATOM"
38
+ EXPORT_PATH = Path (r"C:\Users\mc\Desktop\crouching_girl" )
39
+
40
+ midiin = rtmidi .RtMidiIn ()
41
+
42
+ ports = range (midiin .getPortCount ())
43
+
44
+ if ports :
45
+ for i in ports :
46
+ port_name = midiin .getPortName (i )
47
+ print (f"Port name { i } : { port_name } " )
48
+ if ATOM_NAME in midiin .getPortName (i ):
49
+ print (f"Opening port { i } : " + midiin .getPortName (i ))
50
+ m = midiin .openPort (i )
51
+ break
52
+
53
+ def exportMeshZbrush (filename : str ):
54
+ with keyboard .pressed (Key .ctrl ):
55
+ with keyboard .pressed (Key .alt ):
56
+ keyboard .press ("p" )
57
+ keyboard .release ("p" )
58
+ time .sleep (0.02 )
59
+ with keyboard .pressed (Key .ctrl ):
60
+ keyboard .press ("l" )
61
+ keyboard .release ("l" )
62
+ time .sleep (0.02 )
63
+ keyboard .type (str (EXPORT_PATH ))
64
+ keyboard .press (Key .enter )
65
+ keyboard .release (Key .enter )
66
+ keyboard .press (Key .tab )
67
+ keyboard .release (Key .tab )
68
+ keyboard .press (Key .tab )
69
+ keyboard .release (Key .tab )
70
+ keyboard .type (filename )
71
+ keyboard .press (Key .enter )
72
+ keyboard .release (Key .enter )
73
+ with keyboard .pressed (Key .alt ):
74
+ keyboard .press ("y" )
75
+ keyboard .release ("y" )
76
+
77
+
78
+ while True :
79
+ m = midiin .getMessage (250 )
80
+ if m :
81
+ if m .isNoteOn ():
82
+ # print('On', m.getMidiNoteName(m.getNoteNumber()), m.getVelocity())
83
+ if m .getNoteNumber () == BUTTON_TO_BUTTON_ID ["A1" ]:
84
+ exportMeshZbrush ("export_1" )
85
+ if m .getNoteNumber () == BUTTON_TO_BUTTON_ID ["A2" ]:
86
+ exportMeshZbrush ("export_2" )
87
+ if m .getNoteNumber () == BUTTON_TO_BUTTON_ID ["A3" ]:
88
+ exportMeshZbrush ("export_3" )
89
+ if m .getNoteNumber () == BUTTON_TO_BUTTON_ID ["A4" ]:
90
+ exportMeshZbrush ("export_4" )
91
+ if m .getNoteNumber () == BUTTON_TO_BUTTON_ID ["B1" ]:
92
+ keyboard .press ("s" )
93
+ keyboard .release ("s" )
94
+ time .sleep (0.02 )
95
+ mouse .press (Button .left )
96
+ time .sleep (0.05 )
97
+ mouse .move (2 , 0 )
98
+ time .sleep (0.05 )
99
+ mouse .release (Button .left )
100
+ if m .getNoteNumber () == BUTTON_TO_BUTTON_ID ["B3" ]:
101
+ keyboard .press ("b" )
102
+ keyboard .release ("b" )
103
+ time .sleep (0.02 )
104
+ keyboard .press ("c" )
105
+ keyboard .release ("c" )
106
+ time .sleep (0.02 )
107
+ keyboard .press ("b" )
108
+ keyboard .release ("b" )
109
+ time .sleep (0.02 )
110
+ if m .getNoteNumber () == BUTTON_TO_BUTTON_ID ["B2" ]:
111
+ pass
112
+ if m .getNoteNumber () == BUTTON_TO_BUTTON_ID ["B4" ]:
113
+ pass
114
+ elif m .isNoteOff ():
115
+ print ("OFF" , m .getMidiNoteName (m .getNoteNumber ()))
116
+ elif m .isController ():
117
+ print ("CONTROLLER" , m .getControllerNumber (), m .getControllerValue ())
118
+ if m .getNoteNumber () == 14 :
119
+ knob_position = m .getControllerValue ()
120
+ knob_rotation = knob_position - knob_previous
121
+
122
+ cursor_movement = knob_rotation
123
+
124
+ if cursor_movement == 0 :
125
+ cursor_movement = 2
126
+
127
+ keyboard .press ("s" )
128
+ keyboard .release ("s" )
129
+ time .sleep (0.02 )
130
+ mouse .press (Button .left )
131
+ time .sleep (0.02 )
132
+ mouse .move (cursor_movement , 0 )
133
+ time .sleep (0.02 )
134
+ mouse .release (Button .left )
135
+
136
+ knob_previous = knob_position
137
+ else :
138
+ print ("?" , m )
0 commit comments