Skip to content
@Deep-Symmetry

Deep Symmetry

Sharing and supporting electronic music through open-source software and performances

Deep Symmetry

Our open-source projects are organized here on GitHub. They fall into a few distinct categories:

  • afterglow is a Clojure live-coding environment for creating and running light shows with DMX and ArtNet fixtures. It led to…

  • dysentery, another Clojure project for exploring how to integrate performances with Pioneer DJ modular music performance gear. Its primary value is the language-independent protocol analysis documentation we published, and which has been used by multiple projects to create such integrations in a variety of programming languages. Our own implementation is:

  • beat-link, for which we dropped down from Clojure to Java to make it more accessible to by other developers in the JVM ecosystem. Although we find Clojure to be much faster and more expressive and safe as a development language, not all developers are familiar with it, so slowing down to offer this as a pure Java library made it easier for Java, Kotlin, and other JVM communities to use. Publishing this library led someone to ask us to create:

  • beat-link-trigger, a Clojure integration environment for shows using beat-link. Initially a demonstration of how one could send MIDI events in response to DJ actions and in sync with beats, it has grown into far more, and is our primary focus today, providing an on-ramp to performing musicians and their tech crews, who are not primarily software developers, to explore what is possible. Using Clojure means users can extend the program using the full power of the language that was used to create it, without having to fork the project or learn how to use a development environment. Code entered using the GUI is compiled and loaded with the same power and privileges as any other code in the project, and new dependencies can be downloaded and activated at runtime.

Over time these main projects spawned sub-projects, split out so that people who only needed parts of the functionality could use them separately. See this page for descriptions of them.

Star History

Here is one way to see how many people have been discovering the projects over time. To avoid hammering the GitHub API, this is a static image, but if you click on it you can see an up-to-date version (you may need to supply your own GitHub API token if you do it frequently):

Star History Chart

We have not had time to perform shows since 2016, so we aren't using afterglow any longer, but it is still the repository people are most excited about.

Most of the time we used to spend performing has been devoted to beat-link-trigger and the related repositories that underpin it, which many interesting artists are using to synchronize visuals and lighting with DJ performances.

Component Projects

As mentioned above, you can learn about the pieces that make up these main projects and which you might find useful on their own here.

Pinned

  1. afterglow afterglow Public

    A live-coding lighting controller, building on the Open Lighting Architecture with Clojure and bits of Overtone.

    Clojure 411 23

  2. beat-link-trigger beat-link-trigger Public

    Trigger events and automate shows in response to events on Pioneer CDJs

    Clojure 390 34

  3. beat-link beat-link Public

    Java library for synchronizing and communicating with Pioneer DJ Link equipment

    Java 190 21

  4. carabiner carabiner Public

    A loose connector for interacting with Ableton Link

    C 149 14

  5. crate-digger crate-digger Public

    Java library for fetching and parsing rekordbox exports and track analysis files.

    Java 123 16

  6. bytefield-svg bytefield-svg Public

    Node module that generates byte field diagrams in SVG format

    Clojure 116 18

Repositories

Showing 10 of 24 repositories

Top languages

Loading…

Most used topics

Loading…