Skip to content

triss/duplex-nexus-osc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Duplex Nexus OSC

Duplex Nexus OSC allows Nexus UI control surfaces to be constructed via OSC with out the hassle of writing any JavaScript or HTML.

In contrast to the OSC servers provided for Nexus UI it also broadcasts the current state of its widget to all users connected to the system allowing interfaces that multiple users can interact with at the same time to be built.

Installing the server

  1. Install node.js.

  2. Download and unpack this repository archive.

    Or clone the repsoitory using git:

    git clone https://github.com/triss/duplex-nexus-osc.git

  3. Move in to the folder you just created:

    cd duplex-nexus-osc

  4. Install dependancies with node's package manager:

    npm install

Starting the Duplex Nexus OSC server

Launch the server from the folder you just unpacked with node:

node nxserver.js

Viewing your Nexus UI

Point as many web browsers as you like at, clients can be added and removed at will:

http://<your-servers-ip-addresss>:8080

Interacting with Duplex Nexus OSC via OSC

Adding/updating/deleting widgets via OSC

Duplex Nexus OSC responds to the following OSC messages:

Message Params Example
\nexus\create name type x y w h \nexus\create mySlider slider 0 0 25 100
\nexus\update name property value \nexus\update mySlider value 0.5
\nexus\delete name \nexus\delete mySlider
\nexus\osc_client ip port \nexus\osc_client "127.0.0.1" 9999

Valid Nexus widgets types include: dial, position, keyboard, button, toggle, slider, multislider, matrix, select, tilt, pixels, colors, joints, comment, message, number, and multitouch.

The properties that can be updated for each of the widget types are documented in the Nexus API.

Recieving messages from Nexus OSC

Nexus UI sends back data about the state of the UI in messages as follows.

/<name>/<property> <value>

Some examples might be:

/mySlider/value 0.5
/mySlider/dial 0.5
/myPosition/x 0.133
/myPosition/y 0.77
/myColor/r 127
/myColor/g 10
/myColor/b 10

SuperCollider

Installing the Extension

Copy SuperCollider\NexusWidgetsExtension folder to SuperColliders Extension folder (Select File -> Open user suport directory in the SC IDE if you don't know where this is and then the Extension folder within that if you don't know where this is).

Using the Extension

Start the server and connect clients as described above.

Here's a very simple example to get you started:

(
// create a Sine oscilator synth with amp and freq as paramaters
a = { |freq=200 amp=0.5| SinOsc.ar(freq) * amp }.play;

// create an NxPosition (XY) widget on the default Duplex Nexus OSC server
// by default widgets fill 100% of the screen
z = NxPosition();
z.action = { |nx| 
    a.set(
        \freq, \freq.asSpec.map(nx.x), 
        \amp, nx.y
    )
}
)

See the classes with Nx as there prefix in SuperColliders help system for more info.

About

Build multi-user control surfaces via OSC

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published