3 changed files with 123 additions and 53 deletions
@ -1,45 +0,0 @@
|
||||
#!/usr/bin/python3 |
||||
# Import needed modules from osc4py3 |
||||
from osc4py3.as_eventloop import * |
||||
from osc4py3 import oscbuildparse |
||||
from osc4py3.oscmethod import * |
||||
import logging |
||||
from pprint import pprint |
||||
|
||||
logging.basicConfig(format='%(asctime)s - %(threadName)s ø %(name)s - ' |
||||
'%(levelname)s - %(message)s') |
||||
logger = logging.getLogger("osc") |
||||
logger.setLevel(logging.ERROR) |
||||
clientname="ledserver" |
||||
|
||||
|
||||
|
||||
def led_colour(value): |
||||
print("Setting colour to {}".format(value)) |
||||
|
||||
def led_brightness(value): |
||||
print("Setting brightness to {}".format(value)) |
||||
|
||||
def led_state(addr,value): |
||||
led=addr.split("/")[6] |
||||
pprint(value) |
||||
state=['off','on'] |
||||
print("Setting LED {} {}".format(led,state[int(value)])) |
||||
|
||||
# Start the system. |
||||
osc_startup(logger=logger) |
||||
server_address='127.0.0.1' |
||||
server_port='9000' |
||||
|
||||
osc_udp_server(server_address,server_port, clientname) |
||||
|
||||
osc_method("/track/2/fx/1/fxparam/1/value",led_colour) |
||||
osc_method("/track/2/fx/1/fxparam/2/value",led_brightness) |
||||
osc_method("/track/2/fx/1/fxparam/[!12]/value",led_state,argscheme=OSCARG_ADDRESS+OSCARG_DATAUNPACK) |
||||
|
||||
|
||||
finished=False |
||||
while not finished: |
||||
osc_process() |
||||
|
||||
|
||||
@ -0,0 +1,107 @@
|
||||
#!/usr/bin/python3 |
||||
# Import needed modules from osc4py3 |
||||
from osc4py3.as_eventloop import * |
||||
from osc4py3 import oscbuildparse |
||||
from osc4py3.oscmethod import * |
||||
import logging |
||||
from pprint import pprint |
||||
import argparse |
||||
import colorsys |
||||
|
||||
logging.basicConfig(format='%(asctime)s - %(threadName)s ø %(name)s - ' |
||||
'%(levelname)s - %(message)s') |
||||
log = logging.getLogger("osc") |
||||
log.setLevel(logging.INFO) |
||||
clientname="ledserver" |
||||
|
||||
def hsv2rgb(h,s,v): |
||||
return tuple(round(i*255) for i in colorsys.hsv_to_rgb(h,s,v)) |
||||
|
||||
def termrgb(rgb): |
||||
return "\033[38;2;{};{};{}m".format(rgb[0],rgb[1],rgb[2]) |
||||
def termendc(): |
||||
return '\033[0m' |
||||
def output_led_colour(rgb): |
||||
return termrgb(rgb)+"█"+termendc() |
||||
|
||||
|
||||
class LED: |
||||
brightness=0 |
||||
colour=[0,0,0] |
||||
hue=0 |
||||
state=True |
||||
pin=None |
||||
mode=["off","on"] |
||||
|
||||
|
||||
def __init__(self,pin): |
||||
self.pin=pin |
||||
|
||||
def set_brightness(self,value): |
||||
if abs(self.brightness-value) > .005: |
||||
self.brightness=value |
||||
print("Setting brightness for LED on pin {} to {}".format(self.pin, self.brightness)) |
||||
|
||||
def set_colour(self,value): |
||||
if abs(self.hue-value) > .01: |
||||
self.colour=hsv2rgb(value,1,1) |
||||
self.hue=value |
||||
log.info("Setting colour for LED on pin {} to {} ({})".format(self.pin,self.colour,output_led_colour(self.colour))) |
||||
|
||||
def set_state(self,value): |
||||
self.state=value |
||||
log.info("Turning LED {} {}".format(self.pin, self.mode[self.state])) |
||||
|
||||
def toggle_state(self,value): |
||||
if (value): |
||||
self.state=not self.state |
||||
log.info("Turning LED {} {}".format(self.pin, self.mode[self.state])) |
||||
|
||||
|
||||
def led_colour(value): |
||||
leds[0].set_colour(value) |
||||
|
||||
def led_brightness(value): |
||||
leds[0].set_brightness(value) |
||||
|
||||
def led_state(addr,value): |
||||
led=addr.split("/")[6] |
||||
leds[int(led)-3].toggle_state(bool(value)) |
||||
|
||||
parser = argparse.ArgumentParser(description='OSC listener for LEDs') |
||||
parser.add_argument('--listen',action='store',default='127.0.0.1:9000') |
||||
parser.add_argument('--debug-osc',action='store_true',default=False) |
||||
args=parser.parse_args() |
||||
|
||||
# Start the system. |
||||
log.info("Starting OSC...") |
||||
|
||||
|
||||
pprint(args) |
||||
|
||||
if args.debug_osc: |
||||
osc_startup(logger=log) |
||||
else: |
||||
osc_startup() |
||||
|
||||
|
||||
listen_address=args.listen.split(':')[0] |
||||
listen_port=args.listen.split(':')[1] |
||||
|
||||
osc_udp_server(listen_address,listen_port, clientname) |
||||
# Set up osc paths |
||||
log.info("Binding targets...") |
||||
osc_method("/track/2/fx/1/fxparam/1/value",led_colour) |
||||
osc_method("/track/2/fx/1/fxparam/2/value",led_brightness) |
||||
osc_method("/track/2/fx/1/fxparam/[!12]/value",led_state,argscheme=OSCARG_ADDRESS+OSCARG_DATAUNPACK) |
||||
|
||||
log.info("Creating LEDs...") |
||||
# Create LEDs |
||||
leds=[LED(i) for i in range(0,4)] |
||||
|
||||
finished=False |
||||
log.info("Starting loop") |
||||
while not finished: |
||||
osc_process() |
||||
|
||||
|
||||
Loading…
Reference in new issue