Afterglow 0.2.6-SNAPSHOT-55-0xe345

Released under the Eclipse Public License 2.0

A live-coding environment for light shows, built on the Open Lighting Architecture, using bits of Overtone.


To install, add the following dependency to your project or build file:

[afterglow "0.2.6-SNAPSHOT-55-0xe345"]



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.


Provides synchronization with Ableton Link on the local network, using the lib-carabiner library.


Functions for modeling DMX channels


Provides shared services for all controller implementations.


Allows the Ableton Push to be used as a control surface for Afterglow. Its features are described in the Developer Guide.


Allows the Ableton Push 2 to be used as a control surface for Afterglow. Its features are described in the Developer Guide.

Public variables and functions:


Provides support for adjusting components of a show variable containing a color using any MIDI controller.

Public variables and functions:


Allows the Novation Launchpad Mini and Launchpad S to be used as control surfaces for Afterglow.


Allows the Novation Launchpad Mk2 to be used as a control surface for Afterglow.


Allows the Novation Launchpad Pro to be used as a control surface for Afterglow.


Provides support for easily implementing tap-tempo and shift buttons on any MIDI controller.


This is the main class for running Afterglow as a self-contained JAR application. When you are learning and experimenting in your REPL, the main namespace you want to be using is afterglow.examples


Public variables and functions:

Provides synchronization with equipment sending Pioneer Pro DJ Link packets on the local network, such as Pioneer Nexus mixers and players, using the beat-link library.


Support functions for building the effects pipeline.

Effects pipeline functions for working with individual DMX channels.


Effects pipeline functions for working with color assignments to fixtures and heads.


Cues provide a user interface for controlling effects, by associating them with cells in a cue grid so they can be easily triggered and monitored, either through a physical grid controller, or the web show control interface. They also provide a way of binding cue variables to effect parameters, which can enable controller interfaces to adjust them, and of tying those variables to velocity and pressure sensitivity on physical grid controllers which have such capabilities.


Effects pipeline functions for working with dimmer channels for fixtures and heads. Dimmer effects are always tied to a master chain, which can scale back the maximum allowable value for that dimmer channel, as a percentage. Unless otherwise specified, the dimmer cue will be attached to the show grand master, but you can create other masters to adjust the brightness of groups of fixtures, perhaps because they are intrinsically brighter, or to adjust the balance of lighting for artistic reasons. Secondary masters can be chained to each other, and are always chained to the show grand master, so turning that down will dim the entire show; setting it to zero will black out the show.

A collection of neat effects that are both useful in shows, and examples of how to create such things.


Effects pipeline functions for working with direction assignments to fixtures and heads.


Provide a variety of waveforms at frequencies related to the show metronome to facilitate building visually and musically pleasing effects.


A general mechanism for passing dynamic parameters to effect functions and assigners allowing for dynamic values to be computed either when an effect creates its assigners, or when the assigners are resolving DMX values. Parameters can be calculated based on the show metronome snapshot, show variables (which can be bound to OSC and MIDI mappings), and other, not-yet-imagined things.

Virtual effects which set a value in a show variable while they are running. Pair well with conditional-effect to modify the behavior of scenes based on the activation of other cues.

Public variables and functions:


Show some simple ways to use Afterglow, and hopefully inspire exploration.


Utility functions common to fixture definitions.


Definitions for fixtures provided by American DJ.

Public variables and functions:


Definitions for fixtures provided by Blizzard Lighting.


Models for fixtures provided by Chauvet Lighting.


Functions to work with Fixture Definition Files from the QLC+ open-source lighting controller project. While these do not contain all of the information Afterglow needs to fully control a fixture with its geometric reasoning, they can form a good starting point and save you a lot of tedious capability translation. You can find the available .qxf files on Github.

Public variables and functions:


This namespace is the context in which any init-files specified on the command line will be loaded during startup, in case they forget to establish their own namespaces.

Public variables and functions:


    Handles MIDI communication, including syncing a show metronome to MIDI clock pulses.


    Functions to help work with musical time, evolved from the original version in Overtone.

    Encapsulates a synchronized light show, executing a varying collection of effects with output to a number of DMX universes. Assumes control of the assigned universes, so only one show at a time should be assigned a given universe. Of course, you can stack as many effects as you’d like in that show.

    Establishes a notion of the current show using the dynamic var *show*, to save having to pass it as a parameter to dozens of functions in the Afterglow API. This needs to be bound to a value for many Afterglow functions to work.

    Public variables and functions:


    Cues for shows Chris wants to run for Rhett. Useful as an example of how a small show run by someone unfamiliar with Afterglow was organized after a few years of not working with it.


    Cues for Sallie’s birthday/housewarming party. Useful as an example of how an actual small show was put together early in Afterglow’s development, and also as a source of effects that may want to make their way into a more central place.

    Cues for Joey and Courtney’s wedding reception. Useful as an example of how an actual small show was put together using a subset of the Deep Symmetry lighting rig, and perhaps as a source of effects that may want to make their way to a more central place


    Functions for modeling light position and rotation. If you want to make use of Afterglow’s spatial reasoning capabilities, you need to tell it, when patching a fixture, the location and orientation of that fixture.


    Utility functions that are likely to be widely useful


    Allows the runtime environment to determine the project name and version which built it.

    Public variables and functions:


    Public variables and functions:


    Public variables and functions:



    Public variables and functions:



    Provides a web interface for interacting with the Clojure environment.


    Manages the session store for Afterglow’s web interface

    Public variables and functions: