diff nodescore.js @ 49:ddb09f0a67fd

begining of attempt at modularisation
author tzara <rc-web@kiben.net>
date Sat, 13 Oct 2012 00:17:52 +0000
parents 8fc7155aa3ac
children a0ae699ac444
line wrap: on
line diff
--- a/nodescore.js	Wed Sep 12 09:50:37 2012 +0100
+++ b/nodescore.js	Sat Oct 13 00:17:52 2012 +0000
@@ -7,10 +7,13 @@
 
 ////////////////////////////////////////////
 */
+
 var sio = require('socket.io')
 , http = require('http')
+, ch = require('./chronometer')
 , fs = require('fs')
 , static = require('node-static');
+
 // run webserver serving static html
 ////////////////////////////////////////////
 var clientFiles = new static.Server('./www');
@@ -24,7 +27,6 @@
 
 httpServer.listen(8889);
 
-
 var pinging=0
 console.log("ping set to 0")
 
@@ -32,11 +34,12 @@
 // connect to websockets 
 ////////////////////////////////////////////
 
-var io = sio.listen(httpServer)
+io = sio.listen(httpServer)
 , nicknames = {};
 
-io.set('log level', 3); // reduce logging
+//var sequencer = require('./sequencer')
 
+io.set('log level', 1); // reduce logging
 io.sockets.on('connection', function (socket) {
 
     socket.on('nickname', function (nick, fn) {
@@ -77,89 +80,122 @@
     function stopMetro () {
 	metroState=0;
     };
-    
-    ////////////////////////////////////////////
-    // Chronometer
-    ////////////////////////////////////////////
 
-    // number padding: 0 to 00
+var chronstate=0;
 
-    function pad(number) { return (number < 10 ? '0' : '') + number }
-    
-    // the chronometer initial states
-    var chronstate = 0; var zecsec = 0; var seconds = 0; 
-    var mins = 0; var hours = 0;
-    
-    var dater
-    function dateTime() { 
-	dater = setInterval( function () {
-	    var datetime= new Date(); 
-	    var now=datetime.toString()
-	    socket.broadcast.emit("dateTime", now);
- 	    socket.emit("dateTime", now);
-	}, 1000)}
-   
-    clearInterval(dater);
-    dateTime()
-    
-    function chronometer() {
-	
-	if (chronstate==1){
-	    zecsec += 1;       // set tenths of a second
-	    if(zecsec > 9) { zecsec = 0; seconds += 1;}
-	    if(seconds > 59) { seconds = 0;mins += 1;}
-	    if(mins > 59) { mins = 0; hours += 1; }
-	    var chron = pad(hours) +":"+pad(mins)+ ':'+ pad(seconds)+ ":"+ zecsec
-	    setTimeout(function(){chronometer()}, 100);
-	    socket.broadcast.emit('chronFromServer', chron)
-	    socket.emit('chronFromServer', chron)
-	}
+
+
+    xdatetime =  setInterval(function () {
+	d =  ch.xdateTime()
+	socket.broadcast.emit('dateTime', d)
+	socket.emit('dateTime', d)
+    }, 1000)
+
+
+    socket.on('startSeq', function () { startChr();}); 
+    // if not already started start the chronometer    
+    function startChr() { if (chronstate !== 1) { 
+	chronstate = 1; 
+	chronCtrl(1,100);
+	step(seqA);step(seqB); step(seqC); step(seqD);	    
+} 
+			}
+
+
+    socket.on('stopWatch', function (state) { stopWatch(state);}); 
+    // if not already started start the chronometer    
+    function stopWatch(state) { if (chronstate !== 1) {
+	if (state==1){
+	    chronstate = 1; 
+	    chronCtrl(1,100);}
     }
 
-    socket.on('startChr', function () { startChr();}); 
-    // if not already started start the chronometer    
-    function startChr() { if (chronstate !== 1) { 
-	chronstate = 1; chronometer();} 
-			}
+	if (state==0){
+	    chronstate = 0; 
+	    clearInterval(xstopwatch);
+	}
+
+	if (state==2){
+	    chronstate = 0; 
+	    c=ch.zeroChron()
+	    socket.broadcast.emit('chronFromServer', c)
+	    socket.emit('chronFromServer', c)
+	}
+    } 
+
+
+
+    function chronCtrl (state,interval){
+	console.log("=========================== chronstate=" + chronstate)
+	if (state==1){
+	    xstopwatch =  setInterval(function () {
+		c =  ch.chronometer(interval/100)
+		//cz =  ch.chronometer(interval/100)
+		socket.broadcast.emit('chronFromServer', c)
+		socket.emit('chronFromServer', c)
+	    }, interval)
+
+    }
+	if (state==0) {
+	    clearInterval(xstopwatch);
+	     }	
+    }
+
+
+    // stop the chronometer   
+    socket.on('stopChr', function () { stopChr();});    
+    function stopChr() {console.log("stop chron................................................")
+			chronCtrl(0)
+			chronstate=0
+		       }  
     
-    socket.on('stopChr', function () { stopChr();} );    
-    function stopChr() {  chronstate = 0; }  
-    // stop the chronometer
-   
+    function pad(number) { return (number < 10 ? '0' : '') + number }
+
     socket.on('resetChr', function () { resetChr();});
     function resetChr() {//clearInterval();
-			   chronstate = 0;
-			   zecsec = 0; seconds = 0; 
-			    mins = 0; hours = 0; 
-			    chronstate = 0; 
-			   var chron = pad(hours) +":"+pad(mins)+ ':'+ pad(seconds)+ ":"+ zecsec
-			   // send 0.0.0 values to display
-			   socket.broadcast.emit('chronFromServer', chron)
-			   socket.emit('chronFromServer', chron)
-			}
-   
+	chronstate = 0;
+	zecsec = 0; seconds = 0; 
+	mins = 0; hours = 0; 
+	chronstate = 0; 
+	var chron = pad(hours) +":"+pad(mins)+ ':'+ pad(seconds)+ ":"+ zecsec
+	// send 0.0.0 values to display
+	socket.broadcast.emit('chronFromServer', chron)
+	socket.emit('chronFromServer', chron)
+    }
+
     ////////////////////////////////////////////
     // magic square sequencer
     ////////////////////////////////////////////
+//    var score = require('./score');
+//    var c = require('./chronometer');
 
+//    var mm = score.mm
     var sequencerState = 0;
-
+  
+    
+  //  var srcsqr = score.srcsqr
     var srcsqr = []
     srcsqr[0] = [22,21,24,25,06,07];
     srcsqr[1] = [20,23,27,26,05,04];
     srcsqr[2] = [03,00,17,16,35,34];
     srcsqr[3] = [01,02,19,18,33,32];
 
+//    var seqA = score.seqA
+//    var seqB = score.seqB
+//    var seqC = score.seqC
+//    var seqD = score.seqD
+
     var seqA = { metrobeat:0, voice:1, name: "A", counter: 0, mm: 60, beatsinbar: 4, durations: srcsqr[0], units: [1,2,3,1,2,4]};
     var seqB = { metrobeat:0, voice:2, name: "B", counter: 0, mm: 120, beatsinbar: 4, durations: srcsqr[1], units: [3,2,1,1,2,3]};
     var seqC = { metrobeat:0, voice:3, name: "C", counter: 0, mm: 90, beatsinbar: 4, durations: srcsqr[2], units: [4,5,6,5,4,2]};
     var seqD = { metrobeat:0, voice:4, name: "D", counter: 0, mm: 105, beatsinbar: 4, durations: srcsqr[3], units: [2,3,4,2,3,1]};
-    
+  
+
+  
      var countdowntick = function(seq){
-
 	// var tempoms = Math.floor(60000/seq.mm)
 	 var tempoms = Math.floor(60000/seq.mm)
-	 console.log(tempoms)
+	 //console.log(tempoms)
 	 var timemultiplier=1
 	 var outcount = 4; var incount=4;
 	 var time = ((seq.durations[seq.counter]+1) *timemultiplier) + 30000 + (outcount*tempoms);
@@ -212,6 +248,7 @@
 				
 		 // on each beat do:
 		 
+
 		 // push out the pulse to metronome	
 		 seq.metrobeat = (seq.metrobeat+1)%seq.beatsinbar ;
      		 socket.broadcast.emit('metroPulse', tempoms, seq.voice,seq.metrobeat); 
@@ -220,7 +257,6 @@
 	     
 	     // flip the page 
 	     if (counter == 0){
-
 		 seq.counter = (seq.counter + 1) % seq.durations.length	    		
 		socket.broadcast.emit("pageFlipfromserver", seq.voice, unit, time, seq.mm,seq.counter);
 		 //delete tockTock;	
@@ -243,29 +279,14 @@
 	     stopChr();
 	 });
      };
-    
-    ////////////////
-    
-    socket.on('startSeq', function () { 
-	if (sequencerState == 0) { 
-	    console.log("sequencer starting...")	    
-	    startChr();
 
-//////////////////////////////////////////////////////////////////
-
-	    step(seqA);step(seqB); step(seqC); step(seqD);	    
-	    ztime =-1;
-	}
-	else console.log("sequencer already started...")
-    });
-    
     step = function (seq) {
 	//clearInterval(seq.boo);
 	//clearInterval(countdowntick);
 	countdowntick(seq)
 	sequencerState=1;
     };
-    
+  
     socket.on('resetSeq', function () { 
 	console.log("reset")
 	resetChr();		
@@ -337,4 +358,9 @@
 	socket.broadcast.emit('nicknames', nicknames);
     });
 
+
 });
+
+exports.io = io;
+exports.sio = sio;
+exports.httpServer = httpServer;
\ No newline at end of file