#osc #open-sound-control

app oscpad

OSC 'control panel' server with shared-state web controls

5 releases

Uses old Rust 2015

0.2.3 Oct 12, 2019
0.2.2 Oct 18, 2016
0.2.1 Oct 13, 2016
0.1.1 Mar 30, 2016
0.1.0 Jan 20, 2016

#537 in Audio

MIT license

515 lines


Configurable web controls with shared state, which send OSC messages. Overview/tutorial here

This is my 'getting to know you' project for elm and rust.

The idea is to have a simple way to configure a set of touch enabled buttons, sliders, and labels, which are presented on a web page. When the user manipulates the controls, websocket messages are sent to the server, which in turn sends out OSC messages to one or more target IP addresses. Incoming OSC messages can also change the control state, which is reflected in the clients. OSC is an easy protocol to support, good for 'internet of things' activities, such as robots, lamps, electronic instruments, etc.

Right now the controls are working for the most part. There is a label, button, slider, and sizer. There's an example project, echotest, which changes numbers in labels based on slider movement. There's also guisend, which reads a json control configuration file and sends it to oscpad, replacing whatever controls were there before.

Ultimately I'll make oscpad into a rust library as well as an application, for single-executable projects.

Some notes on elm compiling.

The elm build requires ambr, part of the amber cargo package. Install that with cargo install amber.

From the project directory, use ./build-elm.sh to build the elm and merge the js into stringDefaults.rs. Then do cargo build to get the rust server. Run the rust server with ./runit.sh. So to sum up:

0) cargo install amber
1) ./build-elm.sh
2) cargo build
3) ./runit.sh


~595K SLoC