var express = require('express'); // Get the module var app = express(); // Create express by calling the prototype in var express var http = require('http').Server(app); var io = require('socket.io')(http); var port = (process.env.PORT || 5000); var bpm = 120; var stepPos = 0; var metronome = null; metronome = setInterval(function(){ io.sockets.emit('metronome', getStepPos()); }, (60000 / bpm)/4); http.listen(port, function() { console.log('Listening on port: '+port); }); app.use(express.static(__dirname + '/public')); app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); io.on('connection', function(socket){ io.sockets.emit('updateUserCount', Object.keys(io.engine.clients).length); socket.on('disconnect', function(){ io.sockets.emit('updateUserCount', Object.keys(io.engine.clients).length); }); console.log('a user connected'); socket.on('bpm', function(newBpm){ bpm = newBpm; clearInterval(metronome); metronome = generateMetronome(bpm, metronome); io.sockets.emit('setBpmSlider', bpm); }); io.sockets.emit('setBpmSlider', bpm); socket.on('playSound', function(data){ socket.broadcast.emit('playExternalSound', data); }); }); /* setInterval(function(){ io.sockets.emit('rand', Math.floor(Math.random() * 3)); setTimeout(function(){ io.sockets.emit('rand', 1); }, speed/2); }, speed); */ function generateMetronome(newBpm, oldMetronome){ clearInterval(oldMetronome); oldMetronome = null; return setInterval(function(){ io.sockets.emit('metronome', getStepPos()); }, (60000 / newBpm)/4); } function getStepPos(){ if(stepPos >= 16){ stepPos = 0; } return stepPos++; }