-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcode.py
More file actions
79 lines (70 loc) · 2.32 KB
/
Copy pathcode.py
File metadata and controls
79 lines (70 loc) · 2.32 KB
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
import board
import time
import digitalio
import busio
import analogio
import usb_midi
import adafruit_midi
from adafruit_midi.control_change import ControlChange
from config import channel, left_fader_cc, middle_fader_cc, right_fader_cc
#MIDI settings
#channel
#channel = 1
#cc
#left_fader_cc = 2
#middle_fader_cc = 11
#right_fader_cc = 1
#pins
left_fader = board.GP28
middle_fader = board.GP27
right_fader = board.GP26
midi_out_pin = board.GP4
#variable set up
analog_pins = [left_fader, middle_fader, right_fader]
analog_in = [analogio.AnalogIn(a_in) for a_in in analog_pins]
fader_out_1 = [0] * len(analog_pins)
fader_out_2 = [0] * len(analog_pins)
fader_out_3 = [0] * len(analog_pins)
fader_out = [0] * len(analog_pins)
fader_cc = [left_fader_cc, middle_fader_cc, right_fader_cc]
fader_prev = [0] * len(analog_pins)
fader_next = [0] * len(analog_pins)
#error handling
if type(channel) != int:
channel = 1
channel = max(0, min(15, channel - 1))
default_cc = [2,11,1]
for i, fader in enumerate(fader_cc):
if type(fader) != int:
fader = default_cc[i]
fader = max(0, min(127, fader))
#midi uart setup
midiuart = busio.UART(midi_out_pin, baudrate=31250)
hex_dict_cc = [0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF]
#Functions
#send midi data
def send_midi_control(control, value, channel):
global midiuart
midiuart.write(bytes([hex_dict_cc[channel], fader_cc[i], fader_out[i]]))
midi = adafruit_midi.MIDI(midi_out=usb_midi.ports[1], out_channel=channel)
midi.send([ControlChange(control, value)])
while True:
#read fader inputs
for i, fader in enumerate(analog_in):
fader_out_1[i] = fader.value
time.sleep(0.001)
for i, fader in enumerate(analog_in):
fader_out_2[i] = fader.value
time.sleep(0.001)
for i, fader in enumerate(analog_in):
fader_out_3[i] = fader.value
for i, fader in enumerate(analog_in):
fader_out[i] = int((((fader_out_1[i]+fader_out_2[i]+fader_out_3[i])/3) - 1792) / 480)
fader_out[i] = max(0, min(127, fader_out[i]))
fader_next[i] = fader_out[i]
#send midi data
for i, fader in enumerate(fader_out):
if fader_next[i] != fader_prev[i]:
send_midi_control(fader_cc[i], fader_out[i], channel)
fader_prev[i] = fader_next[i]
time.sleep(0.001)