|
| 1 | +# SPDX-FileCopyrightText: 2021 John Park for Adafruit Industries |
| 2 | +# SPDX-License-Identifier: MIT |
| 3 | + |
| 4 | +#!/usr/bin/env python |
| 5 | + |
| 6 | +import time |
| 7 | +import board |
| 8 | +from adafruit_simplemath import map_range |
| 9 | +import adafruit_pcf8591.pcf8591 as PCF |
| 10 | +from adafruit_pcf8591.analog_in import AnalogIn |
| 11 | +from pythonosc import udp_client |
| 12 | + |
| 13 | + |
| 14 | +sender = udp_client.SimpleUDPClient("127.0.0.1", 4560) |
| 15 | +sender.send_message("/trigger/prophet", [43, 110, 1, 0.7]) |
| 16 | + |
| 17 | +i2c = board.I2C() |
| 18 | +pcf = PCF.PCF8591(i2c) |
| 19 | + |
| 20 | +pcf_in_0 = AnalogIn(pcf, PCF.A0) |
| 21 | +pcf_in_1 = AnalogIn(pcf, PCF.A1) |
| 22 | +pcf_in_2 = AnalogIn(pcf, PCF.A2) |
| 23 | +pcf_in_3 = AnalogIn(pcf, PCF.A3) |
| 24 | + |
| 25 | +try: |
| 26 | + while True: |
| 27 | + osc_0_val = int(255 - (pcf_in_0.value / 256)) # convert values to useful ranges |
| 28 | + osc_1_val = int(255 - (pcf_in_1.value / 256)) |
| 29 | + osc_2_val = int(255 - (pcf_in_2.value / 256)) |
| 30 | + osc_3_val = int(255 - (pcf_in_3.value / 256)) |
| 31 | + |
| 32 | + osc_note_val = int( |
| 33 | + map_range(osc_0_val, 0, 255, 43, 58) |
| 34 | + ) # map values to relevant ranges |
| 35 | + osc_cutoff_val = int(map_range(osc_1_val, 0, 255, 30, 110)) |
| 36 | + osc_sustain_val = map_range(osc_2_val, 0, 255, 0.2, 2) |
| 37 | + osc_gain_val = map_range(osc_3_val, 0, 255, 0, 1.0) |
| 38 | + |
| 39 | + # print((osc_note_val, osc_cutoff_val, osc_sustain_val, osc_gain_val)) # for plotter |
| 40 | + sender.send_message( |
| 41 | + "/trigger/prophet", |
| 42 | + [osc_note_val, osc_cutoff_val, osc_sustain_val, osc_gain_val], |
| 43 | + ) |
| 44 | + |
| 45 | + time.sleep(0.001) |
| 46 | + |
| 47 | +except KeyboardInterrupt: |
| 48 | + print("done") |
0 commit comments