OSC Elate

Control Resolume in your browser with OSC
Works like a midi controller
  • Instead of midi, this tool uses OSC to control Resolume from a browser
  • Connects browser to Resolume
  • Trigger multiple events with one click
Build your own interfaces
  • OSC Elate is the foundation for you to build the interface you've imagined
  • Customize your controls
  • Does anything a website can do
Controls more than VJ shows
  • Think of all the ways you could use Resolume with a custom interface
  • Use as interface for LED art
  • Build interactive intallations

Getting Started

Node.js must be installed on your computer for OSC Elate to work.

Download Node from Nodejs.org and follow their installation instructions.

Confirm Node.js is installed by typing

node -v

in Terminal to get the version number. If you get a version number, your ready to use OSC Elate!

Launching OSC Elate

Every time OSC Elate is used, a node connection must be made. Go to Terminal and open the directory of your project.

cd /Users/ExampleUser/Documents/OSC-Elate-Project/

node index.js

A successful message will look like this:
Listening for OSC over UDP. Host: 192.168.0.9, Port: 57121 To start the demo, go to http://localhost:8081 in your web browser.

Your project is now live and ready to use at http://localhost:8081. Open Resolume, and OSC Elate will control your Resolume project in your browser interface.

Interface Examples

These interfaces will control your Resolume projects when launched through http://localhost:8081

Layer 1
Layer 2
Layer 3
Controls Layer 1

OSC Documentation

Name of effect
Name of function
Click for Code
Trigger effect
function playlayer1clip1() { if(isReady) { console.log("Sending OSC message: Play layer 1 clip 1") oscPort.send({ address: "/composition/layers/1/clips/1/connect", args: [ { type: "f", value: 1 } ] }); } }
function playlayer1clip2() { if(isReady) { console.log("Sending OSC message: Play layer 1 clip 2") oscPort.send({ address: "/composition/layers/1/clips/2/connect", args: [ { type: "f", value: 1 } ] }); } }
function playlayer1clip3() { if(isReady) { console.log("Sending OSC message: Play layer 1 clip 3") oscPort.send({ address: "/composition/layers/1/clips/3/connect", args: [ { type: "f", value: 1 } ] }); } }
function stoplayer1() { if(isReady) { console.log("Sending OSC message: Stop Layer 1 Step 1of2") oscPort.send({ address: "/composition/layers/1/clear", args: [ { type: "f", value: 1 } ] }); } if(isReady) { console.log("Sending OSC message: Stop Layer 1 Step 2of2") oscPort.send({ address: "/composition/layers/1/clear", args: [ { type: "f", value: 0, DelayNode: 10 } ] }); } }
function nextlayer1() { if(isReady) { console.log("Sending OSC message: Next clip in Layer 1") oscPort.send({ address: "/composition/layers/1/connectnextclip", args: [ { type: "f", value: 1 } ] }); } }
function previouslayer1() { if(isReady) { console.log("Sending OSC message: Previous clip in Layer 1 Step 1of2") oscPort.send({ address: "/composition/layers/1/connectprevclip", args: [ { type: "f", value: 1 } ] }); } if(isReady) { console.log("Sending OSC message: Previous clip in Layer 1 Step 2of2") oscPort.send({ address: "/composition/layers/1/connectprevclip", args: [ { type: "f", value: 1 } ] }); } }
function playlayer2clip1() { if(isReady) { console.log("Sending OSC message: Play layer 2 clip 1") oscPort.send({ address: "/composition/layers/2/clips/1/connect", args: [ { type: "f", value: 1 } ] }); } }
function playlayer2clip2() { if(isReady) { console.log("Sending OSC message: Play layer 2 clip 2") oscPort.send({ address: "/composition/layers/2/clips/2/connect", args: [ { type: "f", value: 1 } ] }); } }
function playlayer2clip3() { if(isReady) { console.log("Sending OSC message: Play layer 2 clip 3") oscPort.send({ address: "/composition/layers/2/clips/3/connect", args: [ { type: "f", value: 1 } ] }); } }
function stoplayer2() { if(isReady) { console.log("Sending OSC message: Stop Layer 2 Step 1of2") oscPort.send({ address: "/composition/layers/2/clear", args: [ { type: "f", value: 1 } ] }); } if(isReady) { console.log("Sending OSC message: Stop Layer 2 Step 2of2") oscPort.send({ address: "/composition/layers/2/clear", args: [ { type: "f", value: 0, DelayNode: 10 } ] }); } }
function nextlayer2() { if(isReady) { console.log("Sending OSC message: Next clip in Layer 2") oscPort.send({ address: "/composition/layers/2/connectnextclip", args: [ { type: "f", value: 1 } ] }); } }
function previouslayer2() { if(isReady) { console.log("Sending OSC message: Previous clip in Layer 2 Step 1of2") oscPort.send({ address: "/composition/layers/2/connectprevclip", args: [ { type: "f", value: 1 } ] }); } if(isReady) { console.log("Sending OSC message: Previous clip in Layer 2 Step 2of2") oscPort.send({ address: "/composition/layers/2/connectprevclip", args: [ { type: "f", value: 1 } ] }); } }
Bottle your own lightning
Made by Chance Corbeil