diff --git a/.gitignore b/.gitignore index 7ffa479..e981fea 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *~ .DS_Store -.vagrant \ No newline at end of file +.vagrant +/app/node_modules \ No newline at end of file diff --git a/Vagrantfile b/Vagrantfile index 1b64730..6b2c999 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -2,6 +2,7 @@ Vagrant::Config.run do |config| config.vm.box = "base" config.vm.forward_port 3000, 3000 + config.vm.forward_port 43000,43000,{ :protocol => "udp"} config.vm.share_folder "app", "/home/vagrant/app", "app" @@ -21,4 +22,6 @@ Vagrant::Config.run do |config| } } end + # Do a few things after setup + config.vm.provision :shell, :path => "postsetup.sh" end diff --git a/app/package.json b/app/package.json index a25ee94..7eb792b 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { - "name": "YOUR-PROJECT-NAME-HERE", - "description": "YOUR PROJECT DESCRIPTION HERE", + "name": "Peekable-Server", + "description": "Server for Peekable", "author": "YOUR NAME ", "version": "0.0.1", "dependencies": { diff --git a/app/server.js b/app/server.js index 38287f5..6f029a9 100644 --- a/app/server.js +++ b/app/server.js @@ -2,7 +2,8 @@ var connect = require('connect') , express = require('express') , io = require('socket.io') - , port = (process.env.PORT || 3000); + , port = (process.env.PORT || 3000) + , dgram = require("dgram"); //Setup Express var server = express.createServer(); @@ -16,6 +17,21 @@ server.configure(function(){ server.use(server.router); }); +var udpsock = dgram.createSocket("udp4"); + +// udpsock.on("message", function (msg, rinfo) { +// console.log("server got: " + msg + " from " + +// rinfo.address + ":" + rinfo.port); +// }); + +udpsock.on("listening", function () { + var address = udpsock.address(); + console.log("server listening " + + address.address + ":" + address.port); +}); + +udpsock.bind(43000); + //setup the errors server.error(function(err, req, res, next){ if (err instanceof NotFound) { @@ -41,9 +57,22 @@ server.listen( port); var io = io.listen(server); io.sockets.on('connection', function(socket){ console.log('Client Connected'); + udpsock.on("message", function (msg, rinfo) { + + var string = msg.toString().replace(/(\u0000)/gm,""); + var cleanString = string.slice(0,string.length-1); + var decodedString = JSON.parse(cleanString); + + //console.log("server got: " + decodedString.volume + " from " + + //rinfo.address + ":" + rinfo.port); + // socket.broadcast.emit('server_message',dat); + socket.emit('server_message', decodedString); + }); socket.on('message', function(data){ socket.broadcast.emit('server_message',data); socket.emit('server_message',data); + + }); socket.on('disconnect', function(){ console.log('Client Disconnected.'); diff --git a/app/static/js/script.js b/app/static/js/script.js index f607810..8734544 100644 --- a/app/static/js/script.js +++ b/app/static/js/script.js @@ -10,6 +10,7 @@ $(document).ready(function() { }); socket.on('server_message', function(data){ - $('#receiver').append('
  • ' + data + '
  • '); + $('#receiver').append('
  • ' + data + '
  • '); + console.log(data); }); }); \ No newline at end of file diff --git a/livesets/peekableTestSet Project/Ableton Project Info/AProject.ico b/livesets/peekableTestSet Project/Ableton Project Info/AProject.ico new file mode 100644 index 0000000..65c776e Binary files /dev/null and b/livesets/peekableTestSet Project/Ableton Project Info/AProject.ico differ diff --git a/livesets/peekableTestSet Project/Ableton Project Info/Project8_1.cfg b/livesets/peekableTestSet Project/Ableton Project Info/Project8_1.cfg new file mode 100644 index 0000000..e68235b Binary files /dev/null and b/livesets/peekableTestSet Project/Ableton Project Info/Project8_1.cfg differ diff --git a/livesets/peekableTestSet Project/Desktop.ini b/livesets/peekableTestSet Project/Desktop.ini new file mode 100644 index 0000000..c2c3d6c --- /dev/null +++ b/livesets/peekableTestSet Project/Desktop.ini @@ -0,0 +1,5 @@ +[.ShellClassInfo] +ConfirmFileOp=0 +NoSharing=0 +IconFile=Ableton Project Info/AProject.ico +IconIndex=0 diff --git a/livesets/peekableTestSet Project/peekableTestSet.als b/livesets/peekableTestSet Project/peekableTestSet.als new file mode 100644 index 0000000..05b102e Binary files /dev/null and b/livesets/peekableTestSet Project/peekableTestSet.als differ diff --git a/plugin/liveAPI_feed.js b/plugin/liveAPI_feed.js new file mode 100644 index 0000000..83e6f02 --- /dev/null +++ b/plugin/liveAPI_feed.js @@ -0,0 +1,92 @@ +autowatch = 1; +outlets = 1; + +var api = new LiveAPI(test_callback, "live_set"); + + +function bang() +{ + +var all = new Dict(); +all.name = "super"; +var groups = api.children; + + for (var i = 0; i < groups.length-1; i++){ + var g = getSetGroup(groups[i]); + all.set(groups[i],g); + } +} + + +function getSetGroup(groupPath){ + + var group = new Dict; + + var childrenCount = api.getcount(groupPath); + + for (var i = 0; i < childrenCount; i++){ + + var child = new Dict; + + api.goto("live_set "+groupPath+" "+i); + + var info = api.info; + var id = "id"+api.id; + var props = extractProperties(info); + + for (var j = 0; j < props.length; j++){ + var prop = props[j]; + var value = api.get(prop); + child.set(prop, value); + + } + group.set(id, child); + } + + api.goto("live_set"); + return group; + +} + +function extractProperties(infoString){ + + var extracts = []; + + extract(infoString); + + function extract(string){ + var position = -1; + position = string.search("property"); + if (position == -1 ){ + return; + } + else { + var newString = string.slice(position+9, string.length); + var newLine = newString.search("\n"); + var foundProperty = newString.slice(0, newLine); + var onlyProperty = foundProperty.slice(0, foundProperty.search(" ")); + extracts.push(onlyProperty); + extract(newString); + } + } + return extracts; +} + +function jsobj_to_dict(o) { + var d = new Dict; + for (var key in o) { + var value = o[key]; + + if (!(typeof value === "string" || typeof value === "number")) { + value = jsobj_to_dict(value); + } + d.set(key, value); + } + return d; +} + + + +function test_callback(args){ +} + \ No newline at end of file diff --git a/plugin/replaceNewline.js b/plugin/replaceNewline.js new file mode 100644 index 0000000..7002e0f --- /dev/null +++ b/plugin/replaceNewline.js @@ -0,0 +1,5 @@ +function replace(str) { + var result = ""; + result = str.replace(/(\r\n|\n|\r|\t|\s)/gm,""); + outlet(0, result) +} \ No newline at end of file diff --git a/plugin/toPeekable.amxd b/plugin/toPeekable.amxd new file mode 100644 index 0000000..50fb18a Binary files /dev/null and b/plugin/toPeekable.amxd differ diff --git a/postsetup.sh b/postsetup.sh new file mode 100644 index 0000000..1145c8e --- /dev/null +++ b/postsetup.sh @@ -0,0 +1,2 @@ +apt-get install mc -y +su vagrant -c 'cd ~/app;npm install' \ No newline at end of file