def GlobalThread(): t1 = 0 t2 = 0 port = dmx.select_port() while (1 == 1): t1 = time.time() GlobalPacket = 512 * [0] for i in range(len(Tracks)): if (Tracks[i][6] == True): for j in range(0, 511): GlobalPacket[j] = GlobalPacket[j] + Tracks[i][4][j] for i in range(len(GlobalPacket)): GlobalPacket[i] = int(GlobalPacket[i]) if (GlobalPacket[i] > 255): GlobalPacket[i] = 255 elif (GlobalPacket[i] < 0): GlobalPacket[i] = 0 pass #print(GlobalPacket[0:21]) for i in range(0, 511): port[i] = GlobalPacket[i] if (GlobalWindow != None): GlobalWindow.update() port.render() t2 = time.time() time.sleep(((1 / GlobalFPS) - (t2 - t1)) * (((1 / GlobalFPS) - (t2 - t1)) > 0)) pass
def __init__(self): self.refreshRate = 80 self.window = None self.shouldUpdate = True self.updateThread = threading.Thread(target=self.update) self.updateID = -1 if os.name == 'nt': self.port = 0 * [512] pass else: self.port = dmx.select_port(0) pass # other (unix)
import pyenttec as dmx from time import sleep port = dmx.select_port() port.blackout() port.render() port.close
def main(config_file): # initialize control streams with open(config_file) as config_file: config = yaml.safe_load(config_file) log_level = log.DEBUG if config['debug'] else log.INFO log.basicConfig(level=log_level) log.info("Opening DMX port.") try: dmx_port = dmx.select_port() except dmx.EnttecPortOpenError as err: log.error(err) quit() log.info("Opened DMX port.") control_queue = Queue() config["receive host"] = socket.gethostbyname(socket.gethostname()) log.info("Using local IP address {}".format(config["receive host"])) osc_controller = OSCController(config, control_queue) # which italian hot rod you like? fixture_choice = config['fixture'] if fixture_choice == 'comet': fixture = Comet(int(config['dmx_addr'])) setup_controls = setup_comet_controls control_map = comet_control_map log.info("Controlling a Comet.") elif fixture_choice == 'venus': fixture = Venus(int(config['dmx_addr'])) setup_controls = setup_venus_controls control_map = venus_control_map log.info("Controlling the Venus.") elif fixture_choice == 'lumasphere': fixture = Lumasphere(int(config['dmx_addr'])) control_map, setup_controls = build_lumasphere_controls() log.info("Controlling the Lumasphere.") else: log.error("Unknown fixture type: {}".format(fixture_choice)) return setup_controls(osc_controller) def process_control_event(timeout): """Drain the control queue and apply the action.""" try: (control, value) = control_queue.get(timeout=timeout) except Empty: pass else: # if we got a UI event, process it try: control_map[control](fixture, value) except KeyError: raise ControlError("Unknown control: '{}'".format(control)) log.info("Starting OSC server.") osc_thread = threading.Thread(target=osc_controller.receiver.serve_forever) osc_thread.start() def render_action(frame_number, frame_time, fixture): fixture.render(dmx_port.dmx_frame) dmx_port.render() try: run_show(render_action=render_action, control_action=process_control_event, update_action=lambda timestep: fixture.update(timestep), retrieve_show_state=lambda: fixture, quit_check=lambda: False, update_interval=int(config['update_interval']), report_framerate=config['debug']) finally: log.info("Closing OSCServer.") osc_controller.receiver.close() log.info("Waiting for server thread to finish.") osc_thread.join() log.info("Done.")
def run(func): global port port = pyenttec.select_port() func()
modeTime = 30 # seconds unityControlsLevels = False mode = 0 levels = [0, 0, 0, 0] midi = mido.open_output('IAC Driver Bus 1') ser = None for port in list_ports.comports(): if 'usbmodem' in port.device: ser = serial.Serial(port.device, 115200) if ser == None: print("\nCOULD NOT FIND SERIAL\n") dmx = pyenttec.select_port() controller = None if psmove.count_connected() > 0: controller = psmove.PSMove(0) debugChannel = 0 lastModeSwitchTime = 0 def pressureToValue(pressure): normalized = (pressure - MIN_PRESSURE) / (MAX_PRESSURE - MIN_PRESSURE) normalized = min(1, max(0, normalized)) return normalized * 127
#will need active dmx connection to see results, but not for debugging #stage directions are from lightboard PoV import pyenttec as dmx port = dmx.select_port('/dev/tty.usbserial-ENVWHQLD') ##################################################################### #center lights ##################################################################### port.dmx_frame[0] = 0 #pink DC port.dmx_frame[3] = 0 #rectangle C port.dmx_frame[5] = 0 #pink!! UC port.dmx_frame[24] = 0 #C bright wash port.dmx_frame[4] = 0 #CL wash port.dmx_frame[14] = 0 #CL same as 4 port.dmx_frame[19] = 0 #pinkish CL port.dmx_frame[27] = 0 #CL wash port.dmx_frame[29] = 0 #CL wash (broad) port.dmx_frame[35] = 255 #CR faint rectangle ##################################################################### #right ##################################################################### port.dmx_frame[1] = 0 #UR corner wash port.dmx_frame[6] = 0 #UR wash port.dmx_frame[15] = 0 #rectangle UR port.dmx_frame[16] = 0 #UR port.dmx_frame[22] = 255 #pink UR corner wash ##################################################################### #left
def ignore_all_but_1(value): return value if value == 1.0 else None if __name__ == '__main__': # fire it up! import os import pyenttec as dmx import time import threading import socket try: enttec = dmx.select_port() except dmx.EnttecPortOpenError as err: print(err) quit() # initialize control streams with open('config.yaml') as config_file: config = yaml.safe_load(config_file) config["receive host"] = socket.gethostbyname(socket.gethostname()) print("Using local IP address {}".format(config["receive host"])) cont = OSCController(config) rfus = RFUBackend(enttec, cont, config["debug"])