Provides the ability to communicate with Pangolin’s Beyond laser show software, including synchronizing it with Afterglow’s BPM and beat grid, and triggering cues. This initial implementation assumes that sending small UDP datagrams is fast enough that it can be done on the caller’s thread. If this turns out not to be true, it can be changed to use a core.async channel the way that ola-clojure does.


(beyond-server address port)

Creates a representation of the UDP PangoScript server running in Beyond at the specified address and port. The value returned can then be used with the other functions in this namespace to interact with that laser show.


(bind-to-show server show)(bind-to-show server show resync-interval)

Causes the BPM of the laser show being run by the specified Beyond Talk server to be synced with the main metronome of the specified show. When sync is started, the beats will be synced as well, and they will be resynced periodically to correct for potential drift. The default resync interval is ten seconds, but it can be set to a different value by passing a resync interval, in milliseconds, as a third argument.

Also hooks this Beyond server instance into the supplied show’s rendering loop, so that the laser-related effects and assigners provided by this namespace can participate, even though they do not result in DMX values being sent to the show universes.

To undo a binding established by this function, simply call it again to bind to another show, or with a nil show to unbind entirely.


(cue-effect server page number)

An effect which causes a laser cue to run as long as it is active. The number of the grid page and the number of the cue within that page are passed as arguments (and cannot be dynamic parameters).


(laser-color-effect server color)

An effect which sets the Beyond RGBA cue color override to match the color parameter passed in, and sets it back to normal when ended.


(restore-laser-color server)

Sets Beyond’s Live Control RGBA cue color override to allow the affected cue to show its normal colors.


(resync-to-beat server)

Schedules a message to the laser show being run by the specified Beyond server to let it know when the beat after next takes place in its synchronized show. Has no effect if the server is not synced.


(send-command server command)

Sends a PangoScript command to the specified Beyond Talk server.


(set-laser-color server c)

Sets Beyond’s Live Control RGBA cue color override to match the supplied color value.