scar-mix-server/receiver/receiver.js

170 lines
3.8 KiB
JavaScript

//// socket.io client
var socket = require('socket.io-client')('https://choir.run');
//var socket = require('socket.io-client')('http://192.168.1.105:8080');
//// osc.js configuration (UDP)
var osc = require("osc");
//// NOTE: apps cannot share port.. (pd & sc)
// --> for puredata
// tx: 57000
// rx: 57001
var udp_pd = new osc.UDPPort({
localAddress: '0.0.0.0',
//NOTE: '127.0.0.1' doesn't work!! for comm. between different machines
localPort: 57001,
remoteAddress: '0.0.0.0',
remotePort: 57000,
metadata: true
});
// --> for supercollider
// tx: 57120
// rx: 57121
var udp_sc = new osc.UDPPort({
localAddress: '0.0.0.0',
//NOTE: '127.0.0.1' doesn't work!! for comm. between different machines
localPort: 57121,
remoteAddress: '0.0.0.0',
remotePort: 57120,
metadata: true
});
//firstly establish/prepare osc conn. - supercollider & puredata
Promise.all([
new Promise(function(resolve, reject) {
udp_pd.on("ready", function() {
resolve(0);
console.log('udp_pd ready..');
});
}),
new Promise(function(resolve, reject) {
udp_sc.on("ready", function() {
resolve(0);
console.log('udp_sc ready..');
});
}),
]).then(function(results) {
//
socket.on('connect', function() {
console.log("[osc-receiver] i'm connected.");
});
// //
// socket.on('sound', function(msg) {
//
// //DEBUG
// //console.log('sound :');
// console.log(msg);
//
// //// simply relaying messages to apps.
//
// // to puredata
// udp_pd.send({
// address: "/sound",
// args: [{
// type: "f",
// value: msg.id
// }, {
// type: "f",
// value: msg.key
// }]
// });
//
// // to supercollider
// udp_sc.send({
// address: "/sound",
// args: [{
// type: "f",
// value: msg.id
// }, {
// type: "f",
// value: msg.key
// }]
// });
//
// });
//
//
socket.on('pan', function(msg) {
//DEBUG
//console.log('pan :');
console.log(msg);
//// simply relaying messages to apps.
// to puredata
udp_pd.send({
address: "/pan",
args: [{
type: "f",
value: msg.width
}, {
type: "f",
value: msg.speed
}]
});
// // to supercollider
// udp_sc.send({
// address: "/pan",
// args: [{
// type: "f",
// value: msg.width
// }, {
// type: "f",
// value: msg.speed
// }]
// });
});
//
socket.on('disconnect', function() {
console.log("[osc-receiver] i'm disconnected.");
});
});
// //message handler
// udp_sc.on("message", function(oscmsg, timetag, info) {
// console.log("[udp] got osc message:", oscmsg);
//
// //EX)
// // //method [1] : just relay as a whole
// // io.emit('osc-msg', oscmsg); //broadcast
//
// //EX)
// // //method [2] : each fields
// // io.emit('osc-address', oscmsg.address); //broadcast
// // io.emit('osc-type', oscmsg.type); //broadcast
// // io.emit('osc-args', oscmsg.args); //broadcast
// // io.emit('osc-value0', oscmsg.args[0].value); //broadcast
//
// //just grab i need.. note!
// io.emit('sing-note', oscmsg.address); //broadcast
// });
//osc.js - start service
udp_pd.open();
udp_pd.on("ready", function() {
console.log(
"[udp] ready (udp_pd) : \n" +
"\tlistening on --> " + udp_pd.options.localAddress + ":" + udp_pd.options.localPort + "\n" +
"\tspeaking to -> " + udp_pd.options.remoteAddress + ":" + udp_pd.options.remotePort + "\n"
);
});
udp_sc.open();
udp_sc.on("ready", function() {
console.log(
"[udp] ready (udp_sc) : \n" +
"\tlistening on --> " + udp_sc.options.localAddress + ":" + udp_sc.options.localPort + "\n" +
"\tspeaking to -> " + udp_sc.options.remoteAddress + ":" + udp_sc.options.remotePort + "\n"
);
});