1
0
Fork 0
baconscript/bacon/hog4.py

49 lines
1.5 KiB
Python

"""hog4.py: Class methods for Hog 4 representation."""
import logging
from time import sleep
from pythonosc import osc_message_builder
class HogNet:
"""Class definition of a hognet participant."""
# button state constants
buttonDOWN = 1
buttonUP = 0
def __init__(self, servers):
"""Init method."""
self.servers = servers
def button_press(self, device, path, delay=0.05):
"""Button presses are a pair of up/down OSC."""
self.send_message(device, path, self.buttonDOWN)
sleep(delay)
self.send_message(device, path, self.buttonUP)
def send_message(self, device, path, arg):
"""Send a simple OSC message with one argument."""
msg = osc_message_builder.OscMessageBuilder(address=path)
msg.add_arg(arg)
self.send(device, msg.build())
def send(self, device, msg):
"""Send python-osc messages."""
if device is None:
osc = list(self.servers.values())[0] # first configured server
else:
if device.nodeType().getText().lower() != 'h':
logging.error("ERROR: Only Hog type devices are supported.")
return
try:
osc = self.servers[device.number().value]
except KeyError:
logging.error("ERROR: Net# %d not found.",
device.number().value)
return
try:
osc.send(msg)
except OSError as exception:
logging.error(exception)