Live-Code GLSL and Tidal Cycles
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
public
.gitignore
ghciSuperDirt
index.js
localFirebase.js
package-lock.json
package.json
readme.md

readme.md

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.

Multi-Language

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.

Multi-User

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.

Publication

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 https://vimeo.com/album/4688973

Installation

  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.

Usage

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

/#-Ke-ob9Bx4oBoKwR867q

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

Using

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

Sources