Afterglow 0.2.5-SNAPSHOT
Released under the Eclipse Public License
A live-coding environment for light shows, built on the Open Lighting Architecture, using bits of Overtone.
Installation
To install, add the following dependency to your project or build file:
[afterglow "0.2.5-SNAPSHOT"]
Namespaces
afterglow.beyond
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.
Public variables and functions:
afterglow.channels
Functions for modeling DMX channels
afterglow.controllers
Provides shared services for all controller implementations.
Public variables and functions:
- activate-cue!
- active-bindings
- add-active-binding
- add-beat-feedback!
- add-control-held-feedback-overlay
- add-cue-feedback!
- add-cue-fn!
- add-overlay
- auto-bind
- beat-refresh-interval
- bind-to-show
- bind-to-show-impl
- cancel-auto-bind
- clear-beat-feedback!
- clear-cue!
- clear-cue-feedback!
- clear-cue-fn!
- clear-saved-cue-vars!
- create-overlay-state
- cue-at
- cue-grid
- cue-vars-saved-at
- deactivate
- deactivate-all
- grid-dimensions
- grid-height
- grid-width
- identify
- IGridController
- IOverlay
- maximum-bpm
- minimum-bpm
- overlay-handled?
- pool
- recognizers
- remove-active-binding
- report-cue-ending
- run-overlays
- save-cue-vars!
- set-cue!
- starting-vars-for-velocity
- value-for-velocity
afterglow.controllers.ableton-push
Allows the Ableton Push to be used as a control surface for Afterglow. Its features are described in the Developer Guide.
Public variables and functions:
- add-button-held-feedback-overlay
- auto-bind
- bind-to-show
- button-state
- clear-display-line
- clear-interface
- color-button-colors
- control-buttons
- deactivate
- in-mode?
- make-gauge
- make-pan-gauge
- monochrome-button-states
- off-color
- port-filter
- set-button-state
- set-display-line
- set-pad-color
- set-pad-color-approximate
- set-pad-velocity
- set-second-pad-color
- set-top-pad-state
- show-labels
- sign-velocity
- special-symbols
- top-pad-state
- touch-strip-mode-default
- touch-strip-mode-hue
- touch-strip-mode-level
- touch-strip-mode-pan
- velocity-for-color
- write-display-text
afterglow.controllers.ableton-push-2
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:
- add-button-held-feedback-overlay
- amber-color
- build-touch-strip-mode
- button-cell-margin
- button-cell-width
- calculate-text-width
- clear-all-touch-strip-leds
- clear-display
- clear-interface
- control-buttons
- create-graphics
- cue-grid-updates
- deactivate
- default-track-color
- dim
- dim-amber-color
- dim-green-color
- dim-red-color
- dim-white-color
- draw-attributed-variable-value
- draw-beat-mark
- draw-boolean-gauge
- draw-bottom-button-label
- draw-circular-gauge
- draw-cue-variable-gauge
- draw-cue-variable-gauges
- draw-cue-variable-names
- draw-cue-variable-value
- draw-cue-visualizer
- draw-encoder-button-label
- draw-gauge
- draw-hue-gauge
- draw-null-gauge
- draw-pan-gauge
- draw-saturation-gauge
- empty-grid-pads
- empty-top-pads
- encoder-label-underline-height
- fit-string
- font-for-cue-variable-emphasis
- font-for-cue-variable-values
- font-for-encoder-button-label
- font-for-metronome-values
- fonts-loaded
- get-display-font
- green-color
- grid-update-chunk-size
- in-mode?
- load-fonts
- master-background
- master-content
- metronome-background
- metronome-content
- no-effects-active-color
- off-color
- port-filter
- record-interface
- red-color
- send-sysex
- set-button-color
- set-cc-led-color
- set-encoder-pad-color
- set-graphics-color
- set-pad-color
- set-top-pad-color
- set-touch-strip-mode
- show-labels
- sign-velocity
- stop-indicator
- string-width
- touch-strip-mode-default
- touch-strip-mode-flags
- touch-strip-mode-hue
- touch-strip-mode-level
- touch-strip-mode-pan
- touch-strip-mode-sysex
- update-cue-grid-chunk
- white-color
afterglow.controllers.color
Provides support for adjusting components of a show variable containing a color using any MIDI controller.
Public variables and functions:
afterglow.controllers.launchpad-mini
Allows the Novation Launchpad Mini and Launchpad S to be used as control surfaces for Afterglow.
Public variables and functions:
- add-button-held-feedback-overlay
- button-active-color
- button-available-color
- button-dimmed-color
- button-off-color
- clear-interface
- control-buttons
- cue-held-color
- cue-running-color
- deactivate
- note-buttons
- set-control-button-color
- set-note-button-color
- set-pad-color
- shift-active-color
- shift-available-color
- show-round-buttons
- stop-active-color
- stop-available-color
- tempo-synced-beat-color
- tempo-synced-off-beat-color
- tempo-unsynced-beat-color
- tempo-unsynced-off-beat-color
afterglow.controllers.launchpad-mk2
Allows the Novation Launchpad Mk2 to be used as a control surface for Afterglow.
Public variables and functions:
- add-button-held-feedback-overlay
- button-active-color
- button-available-color
- button-off-color
- clear-interface
- control-buttons
- deactivate
- note-buttons
- set-led-color
- set-pad-color
- show-round-buttons
- stop-active-color
- stop-available-color
- tempo-synced-beat-color
- tempo-synced-off-beat-color
- tempo-unsynced-beat-color
- tempo-unsynced-off-beat-color
afterglow.controllers.launchpad-pro
Allows the Novation Launchpad Pro to be used as a control surface for Afterglow.
Public variables and functions:
- add-button-held-feedback-overlay
- auto-bind
- bind-to-show
- button-active-color
- button-available-color
- button-off-color
- clear-interface
- click-synced-beat-color
- click-synced-off-beat-color
- click-unsynced-beat-color
- click-unsynced-off-beat-color
- control-buttons
- deactivate
- led-color-values
- port-filter
- set-led-color
- set-pad-color
- show-labels
- stop-active-color
- stop-available-color
afterglow.controllers.tempo
Provides support for easily implementing tap-tempo and shift buttons on any MIDI controller.
afterglow.core
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:
afterglow.dj-link
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.
Public variables and functions:
afterglow.effects
Support functions for building the effects pipeline.
Public variables and functions:
afterglow.effects.channel
Effects pipeline functions for working with individual DMX channels.
Public variables and functions:
- apply-channel-value
- build-channel-assigner
- build-fixed-channel-effect
- build-head-function-assigner
- build-head-function-assigners
- build-head-parameter-function-assigner
- build-head-parameter-function-assigners
- build-raw-channel-assigners
- channel-effect
- find-heads-with-function
- function-effect
- function-percentage-to-dmx
- function-value-scaler
- raw-channel-effect
afterglow.effects.color
Effects pipeline functions for working with color assignments to fixtures and heads.
Public variables and functions:
afterglow.effects.cues
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.
Public variables and functions:
- add-midi-control-to-cue-mapping
- add-midi-to-cue-mapping
- apply-merging-var-map
- code-cue
- color-fn-from-cue-var
- color-fn-from-param
- compound-cues-effect
- cue
- current-cue-color
- find-cue-variable-keyword
- function-cue
- get-cue-variable
- remove-midi-control-to-cue-mapping
- remove-midi-to-cue-mapping
- set-cue-variable!
- snapshot-cue-variables
afterglow.effects.dimmer
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.
Public variables and functions:
afterglow.effects.fun
A collection of neat effects that are both useful in shows, and examples of how to create such things.
Public variables and functions:
- adjust-strobe
- aim-fan
- bloom
- color-cycle-chase
- confetti
- default-color-cycle
- default-down-beat-color
- default-other-beat-color
- default-pinstripe-colors
- default-sparkle-color
- dimmer-sparkle
- iris-out-color-cycle-chase
- metronome-effect
- pinstripes
- random-beat-number-param
- sparkle
- strobe
- strobe-2
- transition-during-down-beat
- twirl
- wipe-right-color-cycle-chase
afterglow.effects.movement
Effects pipeline functions for working with direction assignments to fixtures and heads.
Public variables and functions:
afterglow.effects.oscillators
Provide a variety of waveforms at frequencies related to the show metronome to facilitate building visually and musically pleasing effects.
Public variables and functions:
afterglow.effects.params
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.
Public variables and functions:
- bind-keyword-param
- bind-keyword-param*
- build-aim-param
- build-aim-transformer
- build-color-param
- build-direction-param
- build-direction-param-from-pan-tilt
- build-direction-transformer
- build-pan-tilt-param
- build-param-formula
- build-spatial-param
- build-step-param
- build-variable-param
- check-type
- frame-dynamic-param?
- interpret-color
- IParam
- param?
- resolve-param
- resolve-unless-frame-dynamic
- validate-optional-param-type
- validate-param-type
- vector-from-pan-tilt
afterglow.effects.show-variable
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:
afterglow.examples
Show some simple ways to use Afterglow, and hopefully inspire exploration.
Public variables and functions:
- add-osc-cue-binding
- add-osc-var-binding
- add-pan-tilt-controls
- add-xyz-controls
- build-cross-scene
- build-group-cue-elements
- build-ratio-param
- can-can
- ceiling
- circle-chain
- crossover-chase
- dimmer-sweep
- fiat-lux
- global-color-effect
- global-dimmer-effect
- group-end-keys
- house-rear-wall
- ipad-address
- laser-show
- left-wall
- light-groups
- make-ambient-cues
- make-color-cue
- make-cues
- make-dimmer-cue
- make-main-color-dimmer-cues
- make-movement-cues
- make-sawtooth-dimmer-cue
- make-sine-dimmer-cue
- make-square-dimmer-cue
- make-strobe-cue
- make-strobe-cue-2
- make-torrent-cues
- make-triangle-dimmer-cue
- mapped-sparkle-test
- osc-client
- osc-cue-bindings
- osc-demo
- osc-shutdown
- osc-var-bindings
- patch-lighting-rig
- rig-height
- right-wall
- sample-show
- sparkle-test
- stage-wall
- step-param
- torrent-8
- try-laser-cues
- use-sample-show
- var-binder
- white
- x-phase
afterglow.fixtures.american-dj
Definitions for fixtures provided by American DJ.
Public variables and functions:
afterglow.fixtures.blizzard
Definitions for fixtures provided by Blizzard Lighting.
Public variables and functions:
afterglow.fixtures.chauvet
Models for fixtures provided by Chauvet Lighting.
afterglow.fixtures.qxf
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:
afterglow.init
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:
afterglow.midi
Handles MIDI communication, including syncing a show metronome to MIDI clock pulses.
Public variables and functions:
- abs-tolerance
- add-aftertouch-mapping
- add-control-mapping
- add-device-mapping
- add-disconnected-device-handler!
- add-global-handler!
- add-new-device-handler!
- add-note-mapping
- add-sysex-mapping
- bpm-to-interval
- cm4j-device?
- cm4j-installed?
- create-tempo-tap-handler
- current-clock-sources
- current-traktor-beat-phase-sources
- describe-device-filter
- dev-tolerance
- filter-devices
- find-midi-in
- find-midi-out
- IClockSync
- identify-mapping
- interval-to-bpm
- mac?
- midi-port-filter
- mmj-device?
- mmj-installed?
- open-inputs-if-needed!
- open-outputs-if-needed!
- remove-aftertouch-mapping
- remove-control-mapping
- remove-device-mapping
- remove-disconnected-device-handler!
- remove-global-handler!
- remove-new-device-handler!
- remove-note-mapping
- remove-sysex-mapping
- same-device?
- scan-interval
- scan-midi-environment
- std-dev
- sync-to-midi-clock
- watch-for
afterglow.rhythm
Functions to help work with musical time, evolved from the original version in Overtone.
Public variables and functions:
afterglow.show
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.
Public variables and functions:
- active-effect-keys
- add-effect!
- add-effect-from-cue-grid!
- add-empty-buffer-fn!
- add-frame-fn!
- add-midi-control-metronome-align-bar-mapping
- add-midi-control-metronome-align-phrase-mapping
- add-midi-control-metronome-reset-mapping
- add-midi-control-to-master-mapping
- add-midi-control-to-var-mapping
- add-send-buffer-fn!
- add-variable-set-fn!
- address-map
- all-fixtures
- blackout-show
- blackout-universe
- clear-cue!
- clear-effects!
- clear-empty-buffer-fn!
- clear-frame-fn!
- clear-send-buffer-fn!
- clear-variable-set-fn!
- current-load
- default-refresh-interval
- end-effect!
- find-cue-grid-active-effect
- find-effect
- fixtures-named
- get-cue-effect
- get-variable
- ola-failure-description
- patch-fixture!
- patch-fixture-group!
- profile-show
- register-grid-controller
- register-show
- remove-fixture!
- remove-midi-control-metronome-mapping
- remove-midi-control-to-master-mapping
- remove-midi-control-to-var-mapping
- resolution-order
- running?
- set-cue!
- set-extension-resolution-order!
- set-variable!
- show
- shows
- start!
- stop!
- stop-all!
- sync-status
- sync-to-external-clock
- unregister-grid-controller
- unregister-show
afterglow.show-context
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:
afterglow.shows.sallie
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 there way into a more central place.
Public variables and functions:
afterglow.transform
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.
Public variables and functions:
- aim-to-dmx
- angle-to-dmx-value
- build-distance-measure
- calculate-bounds
- degrees
- direction-to-dmx
- distance-from-legal-dmx-value
- feet
- find-closest-legal-dmx-value-for-angle
- inches
- interpret-rotation
- invert-direction
- max-distance
- show-head-positions
- transform-fixture-euler
- transform-fixture-relative
- transform-fixture-rotation-matrix
- two-pi
afterglow.version
Allows the runtime environment to determine the project name and version which built it.
afterglow.web.routes.show-control
Public variables and functions:
- build-sync-select
- clients
- cue-view
- effect-save-button-changes
- effect-save-button-states
- effect-time-formatter
- get-ui-updates
- hundredths
- link-controller
- load-update
- macro-record-file
- metronome-bpm-delta-for-event
- metronome-changes
- metronome-delta-for-event
- metronome-states
- post-ui-event
- show-page
- status-update
- sync-menu-changes
- unlink-controller
- update-known-controllers
- update-known-dj-link-sync-sources
- update-known-midi-sync-sources
afterglow.web.routes.web-repl
Provides a web interface for interacting with the Clojure environment.
Public variables and functions:
afterglow.web.session
Manages the session store for Afterglow’s web interface
Public variables and functions: