Skip to content

added MIDI code #1848

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 28, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions Adafruit_Proximity_Trinkey/Proximity_Trinkey_MIDI/code.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# SPDX-FileCopyrightText: 2021 John Park for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
Proximity Trinkey MIDI
Touch pads switch between CC and Pitch Bend modes
Blue LED for CC, Red LED for pitchbend
Brightness of LEDs for proximity
"""
import board
import neopixel
import touchio
import usb_midi
import adafruit_midi
from adafruit_midi.control_change import ControlChange
from adafruit_midi.pitch_bend import PitchBend

from adafruit_apds9960.apds9960 import APDS9960

apds = APDS9960(board.I2C())
apds.enable_proximity = True

touch1 = touchio.TouchIn(board.TOUCH1)
touch2 = touchio.TouchIn(board.TOUCH2)

pixels = neopixel.NeoPixel(board.NEOPIXEL, 2)

midi = adafruit_midi.MIDI(
midi_in=usb_midi.ports[0], in_channel=0, midi_out=usb_midi.ports[1], out_channel=0
)

CC_NUM = 46 # pick your midi cc number here

def map_range(in_val, in_min, in_max, out_min, out_max):
return out_min + ((in_val - in_min) * (out_max - out_min) / (in_max - in_min))

pixels[0] = 0x000000
pixels[1] = 0x0000FF

prox_pitch = 8192
last_prox_pitch = prox_pitch
prox_cc = 0
last_prox_cc = prox_cc
prox_bright = 0
last_prox_bright = prox_bright

mode = True

while True:

if touch1.value: # CC mode
pixels[0] = 0xBB0000
pixels[1] = 0x0
mode = False

if touch2.value: # pitch bend mode
pixels[0] = 0x0
pixels[1] = 0x0000FF
mode = True

if mode:
prox_cc = int(map_range(apds.proximity, 0, 255, 0, 127))
if last_prox_cc is not prox_cc:
midi.send(ControlChange(CC_NUM, prox_cc ))
print("CC is", prox_cc)
last_prox_cc = prox_cc
else:
prox_pitch = int(map_range(apds.proximity, 0, 255, 8192, 16383))
if last_prox_pitch is not prox_pitch:
midi.send(PitchBend(prox_pitch))
print("Pitch bend is", prox_pitch)
last_prox_pitch = prox_pitch

prox_bright = map_range(apds.proximity, 0, 255, 0.01, 1.0)
pixels.brightness = prox_bright