Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

The Dark Side

The dark side of the Force is a pathway to many abilities some consider to be unnatural.

The Dark side is used by Obi-Wan Codenobi and The Wookie for use in live-coding audio-visual performances. Together they travel as The Rebel Scum.


The Dark Side uses the same GLSL language as The Force, but with the addition of being able to also live-coding Tidal Cycles in the same text buffer.

The GLSL will auto-compile.

Tidal will be executed by the typical shift+return for lines and ctrl+return or cmd+returnfor blocks.


The Dark Side is tele-matic and multi-user. The backend uses Google's Firebase under Firepad an extesion to the Ace Editor. This can be configured to run multiple users remotely (anywhere) or locally (same subnet).

Text Recording/Playback

Text edits are recorded and then able to be saved, JSON format, and played back in The Dark Side with an edits made to Sang Won Lee's livewriter.


Short paper on this software published at the 3rd International Conference on Live-Coding. That paper is here ShortPaper-TheDarkSide.pdf

Lots of testing this out here


  1. Install all things required for Tidal Cycles
  2. Install Node
  3. Download this repository
  4. From terminal or command line go to the downloaded repository, then
npm install
  1. Make a firebase account
  2. Follow directions here to grab your apiKey, etc. this information will replace the config dictionary in TheDarkSide/public/js/myFirebase.js Replace only what's required. NOTE: This is your private key information, anyone who has this will use your account, unless you additionally setup user authentications. Each collaborator will also need this information in their copy of their repository so that you're all pointing to the same place.


Starting and collaborating

From terminal in the repository, type

node index

Open a browser window, Chrome recommended.

Go to localhost:8000

A random hash, something like


will be append to the URL. This hash is your current firepad database. Share this hash with your collaborators, or use the same hash everytime to use The Dark Side. For example, bookmark this new URL.

Launch Settings


node index help

will give information and options for the program. For more details and the default settings see TheDarkSide/index.js

Running Locally

For local subnet firebase you'll need to change the config. TheDarkSide/public/js/myFirebase.js In local mode the apiKey can be anything.

var config = {
   apiKey: 'something',
   databaseURL: "ws://127.0.1:5000"

Note that the connection is websocket and that the ip only has two dots. This is very important. The above only works if it's one person. If you need several people on a local subnet, then things become more complicated. The following have worked based on where I am. You will need something similar.For example when I generate a wifi from my computer and others connect to it:

var config = {
   apiKey: 'something',
   databaseURL: "ws://lawsos2.local.:5000"

or, when we all join my wifi router at home

var config = {
   apiKey: 'something',
   databaseURL: "ws://lawsos2-mbp15.fios-router.home:5000"

Saving and Playing Text Recordings

The floppy drive icon at the bottom will save your performance to a JSON formatted .txt file.

To play back your file, use the file open icon and choose your file. Click the gear icon to open a semi-working playback control window.

Additionally helpful to know

  • Check The_Force contains several GLSL examples
  • Workshop Notes contains some hand-written information and a few more example shaders
  • ctrl+shift will toggle text visibility
  • backbuffer is a copy of the previous frame's frontbuffer



⛔️ DEPRECATED - no longer maintained







No releases published


No packages published