neume.js example - receive osc message

use: neume.js / node-osc-min.js

HTML

<script src="http://mohayonao.github.io/neume.js/build/neume.min.js"></script>
<script src="https://dl.dropboxusercontent.com/u/645229/cdn/osc-min.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script>
<button id="start">start</button>
<pre id="osc"></pre>

JavaScript

var Neume = neume(new AudioContext());

var Synth = new Neume(function($, freq, pos, mod) {
    var out;
    
    out = $("sin", { freq: mod, add: freq, mul: 2 });
    out = $("saw", { freq: out, mul: 0.15 });
    out = $("lpf", { freq: 1200, Q: 12 }, out);
    out = $("adsr", { a: 0.1, d: 0.25, s: 0.2, r: 2 }, out).release("+0.75").on("end", function(e) {
        this.stop(e.playbackTime);
    });
    out = $("pan2", { pos: pos }, out);
    
    return $("out", { bus: 1 }, out);
});

var Out = new Neume(function($) {
    var out;
    
    out = $("in", 1);
    out = $("comb", { gain: 0.5, fbGain: 0.65, delay: 0.05 }, out);
    out = $("comp", out);
    
    return out;
});

var socket  = new EventEmitter();
var emitter = new EventEmitter();

socket.on("osc", function(msg) {
    emitter.emit("osc", osc.fromBuffer(msg));
});

emitter.on("osc", function(msg) {
    var freq = msg.args[0].value;
    var pos  = msg.args[1].value;
    var mod  = msg.args[2].value;
    
    new Synth(freq, pos, mod).start();
    
    $("#osc").text(JSON.stringify(msg, null, 2));
});

var out = null, timerId = 0, count = 0;
$("#start").on("click", function() {
    if (out) {
        out.fadeOut("+0", 0.5);
        out = null;
        clearInterval(timerId);
        $(this).text("start").css("color", "black");
    } else {
        count = 0;
        out = new Out().fadeIn("+0", 0.5);
        timerId = setInterval(serverProcess, 500);
        $(this).text("stop").css("color", "red");
    }
});

function serverProcess() {
    if (Math.random() < [ 0.8, 0.2 ][count++ % 2]) {
        socket.emit("osc", _.sample(oscMsg));    
    }
}

function EventEmitter() {
    var callback = {};
    return {
        on: function(name, func) {
            callback[name] = func;
        },
        emit: function(name, msg) {
            callback[name](msg);
        }
    };
}

var oscMsg =...