Mercurial > hg > nodescore
comparison nodescore.js @ 54:66bf613fb818
pre clean up push - moved vars into scoreB.js - called up with requirejs
added requirejs dep
author | tzara <rc-web@kiben.net> |
---|---|
date | Wed, 19 Dec 2012 13:36:19 +0000 |
parents | a0ae699ac444 |
children | 474c1ad1e811 |
comparison
equal
deleted
inserted
replaced
53:a0ae699ac444 | 54:66bf613fb818 |
---|---|
11 var sio = require('socket.io') | 11 var sio = require('socket.io') |
12 , http = require('http') | 12 , http = require('http') |
13 , ch = require('chronometer') | 13 , ch = require('chronometer') |
14 , fs = require('fs') | 14 , fs = require('fs') |
15 , static = require('node-static'); | 15 , static = require('node-static'); |
16 | |
17 var requirejs = require('requirejs'); | |
18 | |
19 requirejs.config({ | |
20 //Pass the top-level main.js/index.js require | |
21 //function to requirejs so that node modules | |
22 //are loaded relative to the top-level JS file. | |
23 nodeRequire: require, | |
24 findNestedDependencies: true | |
25 | |
26 }); | |
16 | 27 |
17 // run webserver serving static html | 28 // run webserver serving static html |
18 //////////////////////////////////////////// | 29 //////////////////////////////////////////// |
19 var clientFiles = new static.Server('/usr/share/nodescore/www'); | 30 var clientFiles = new static.Server('/usr/share/nodescore/www'); |
20 var httpServer = http.createServer( | 31 var httpServer = http.createServer( |
27 | 38 |
28 httpServer.listen(8889); | 39 httpServer.listen(8889); |
29 | 40 |
30 var pinging=0 | 41 var pinging=0 |
31 console.log("ping set to 0") | 42 console.log("ping set to 0") |
43 | |
44 //requirejs(['socketsstuff'],function(socketsstuff) {}); | |
45 | |
32 | 46 |
33 //////////////////////////////////////////// | 47 //////////////////////////////////////////// |
34 // connect to websockets | 48 // connect to websockets |
35 //////////////////////////////////////////// | 49 //////////////////////////////////////////// |
36 | 50 |
69 | 83 |
70 var fs = require('fs'), str = msg; | 84 var fs = require('fs'), str = msg; |
71 fs.write( id, timestring+" " + socket.nickname + ": "+ msg+"\n", null, 'utf8', function(){}); | 85 fs.write( id, timestring+" " + socket.nickname + ": "+ msg+"\n", null, 'utf8', function(){}); |
72 }); | 86 }); |
73 }); | 87 }); |
74 | 88 |
89 // /* | |
75 //////////////////////////////////////////// | 90 //////////////////////////////////////////// |
76 // metronome | 91 // chronometer + sequencer controls (all this should be modularised) |
77 //////////////////////////////////////////// | 92 //////////////////////////////////////////// |
78 | 93 |
79 socket.on('metroStop', stopMetro) | 94 socket.on('stopWatch', function (state) { stopWatch(state);}); |
80 function stopMetro () { | 95 socket.on('stopChr', function () { stopChr();}); |
81 metroState=0; | 96 socket.on('resetChr', function () { resetChr();}); |
82 }; | 97 socket.on('startSeq', function () { startChr();}); |
83 | 98 var chronstate=0; |
84 var chronstate=0; | 99 |
85 | 100 // send the date/time every second |
86 | |
87 | 101 |
88 xdatetime = setInterval(function () { | 102 xdatetime = setInterval(function () { |
89 d = ch.xdateTime() | 103 d = ch.xdateTime() |
90 socket.broadcast.emit('dateTime', d) | 104 socket.broadcast.emit('dateTime', d) |
91 socket.emit('dateTime', d) | 105 socket.emit('dateTime', d) |
92 }, 1000) | 106 }, 1000) |
93 | 107 |
94 | 108 |
95 socket.on('startSeq', function () { startChr();}); | 109 // if not already started start the chronometer and sequencer |
96 // if not already started start the chronometer | 110 function startChr(socket) { if (chronstate !== 1) { |
97 function startChr() { if (chronstate !== 1) { | |
98 chronstate = 1; | 111 chronstate = 1; |
99 chronCtrl(1,100); | 112 chronCtrl(1,100); |
100 step(seqA);step(seqB); step(seqC); step(seqD); | 113 step(seqA);step(seqB); step(seqC); step(seqD); |
101 } | 114 } |
102 } | 115 } |
103 | 116 |
104 | |
105 socket.on('stopWatch', function (state) { stopWatch(state);}); | |
106 // if not already started start the chronometer | 117 // if not already started start the chronometer |
107 function stopWatch(state) { if (chronstate !== 1) { | 118 function stopWatch(state) { if (chronstate !== 1) { |
108 if (state==1){ | 119 if (state==1){ |
109 chronstate = 1; | 120 chronstate = 1; |
110 chronCtrl(1,100);} | 121 chronCtrl(1,100);} |
111 } | 122 } |
112 | 123 |
113 if (state==0){ | 124 // if get 0 then stop the chron |
114 chronstate = 0; | 125 if (state==0){ |
115 clearInterval(xstopwatch); | 126 chronstate = 0; |
116 } | 127 clearInterval(xstopwatch); |
117 | 128 } |
118 if (state==2){ | 129 // if get 2 then reset the chron |
119 chronstate = 0; | 130 if (state==2){ |
120 c=ch.zeroChron() | 131 chronstate = 0; |
121 socket.broadcast.emit('chronFromServer', c) | 132 c=ch.zeroChron() |
122 socket.emit('chronFromServer', c) | 133 socket.broadcast.emit('chronFromServer', c) |
123 } | 134 socket.emit('chronFromServer', c) |
124 } | 135 } |
125 | 136 } |
126 | 137 |
138 | |
139 ////////////////////////////// | |
140 // /* this should be moved to its own file chronometer.js | |
127 | 141 |
128 function chronCtrl (state,interval){ | 142 function chronCtrl (state,interval){ |
129 console.log("=========================== chronstate=" + chronstate) | 143 console.log("=========================== chronstate=" + chronstate) |
130 if (state==1){ | 144 if (state==1){ |
131 var date = new Date() | 145 var date = new Date() |
132 var starttime = new Date().getTime() / 1000; | 146 var starttime = new Date().getTime() / 1000; |
133 //var interval = 1020 - date.getMilliseconds(); | 147 //var interval = 1020 - date.getMilliseconds(); |
134 xstopwatch = setInterval(function () { | 148 xstopwatch = setInterval(function () { |
135 var nowtime = new Date().getTime() / 1000; | 149 var nowtime = new Date().getTime() / 1000; |
136 now = nowtime-starttime | 150 now = nowtime-starttime |
137 hours = parseInt( now / 3600 ) % 24; | 151 hours = parseInt( now / 3600 ) % 24; |
138 minutes = parseInt( now / 60 ) % 60; | 152 minutes = parseInt( now / 60 ) % 60; |
139 seconds = parseInt(now % 60); | 153 seconds = parseInt(now % 60); |
140 milliseconds = Math.floor((now-seconds)*10)%60; | 154 milliseconds = Math.floor((now-seconds)*10)%60; |
141 | 155 time = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds) + "."+milliseconds; |
142 time = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds) + "."+milliseconds; | 156 //console.log(time) |
143 console.log(time) | |
144 socket.broadcast.emit('chronFromServer', time) | 157 socket.broadcast.emit('chronFromServer', time) |
145 socket.emit('chronFromServer', time) | 158 socket.emit('chronFromServer', time) |
146 }, 200) | 159 }, 100) |
147 } | 160 } |
148 if (state==0) { | 161 if (state==0) { |
149 clearInterval(xstopwatch); | 162 clearInterval(xstopwatch); |
150 } | 163 } |
151 } | 164 } |
152 | 165 //*/ |
153 | 166 |
154 // stop the chronometer | 167 // stop the chronometer |
155 socket.on('stopChr', function () { stopChr();}); | 168 |
156 function stopChr() {console.log("stop chron................................................") | 169 function stopChr() {console.log("stop chron................................................") |
157 chronCtrl(0) | 170 chronCtrl(0) |
158 chronstate=0 | 171 chronstate=0 |
159 } | 172 } |
160 | 173 |
161 function pad(number) { return (number < 10 ? '0' : '') + number } | 174 function pad(number) { return (number < 10 ? '0' : '') + number } |
162 | |
163 socket.on('resetChr', function () { resetChr();}); | |
164 function resetChr() {//clearInterval(); | 175 function resetChr() {//clearInterval(); |
165 chronstate = 0; | 176 chronstate = 0; |
166 zecsec = 0; seconds = 0; | 177 zecsec = 0; seconds = 0; |
167 mins = 0; hours = 0; | 178 mins = 0; hours = 0; |
168 chronstate = 0; | 179 chronstate = 0; |
170 // send 0.0.0 values to display | 181 // send 0.0.0 values to display |
171 socket.broadcast.emit('chronFromServer', chron) | 182 socket.broadcast.emit('chronFromServer', chron) |
172 socket.emit('chronFromServer', chron) | 183 socket.emit('chronFromServer', chron) |
173 } | 184 } |
174 | 185 |
186 | |
175 //////////////////////////////////////////// | 187 //////////////////////////////////////////// |
176 // magic square sequencer | 188 // magic square sequencer (this should be modularised) |
177 //////////////////////////////////////////// | 189 //////////////////////////////////////////// |
178 // var score = require('./score'); | 190 |
179 // var c = require('/usr/share/nodescore/www/m/js/chronometer'); | 191 // all the variables this sequencer needs are in scoreB.js |
180 | 192 |
181 // var mm = score.mm | 193 requirejs(['scoreB'],function(scoreB) {}); |
194 | |
182 var sequencerState = 0; | 195 var sequencerState = 0; |
183 | 196 var countdowntick = function(seq){ |
184 | 197 |
185 // var srcsqr = score.srcsqr | 198 // var tempoms = Math.floor(60000/seq.mm) |
186 var srcsqr = [] | |
187 srcsqr[0] = [22,21,24,25,06,07]; | |
188 srcsqr[1] = [20,23,27,26,05,04]; | |
189 srcsqr[2] = [03,00,17,16,35,34]; | |
190 srcsqr[3] = [01,02,19,18,33,32]; | |
191 | |
192 // var seqA = score.seqA | |
193 // var seqB = score.seqB | |
194 // var seqC = score.seqC | |
195 // var seqD = score.seqD | |
196 | |
197 var seqA = { metrobeat:0, voice:1, name: "A", counter: 0, mm: 60, beatsinbar: 4, durations: srcsqr[0], units: [1,2,3,1,2,4]}; | |
198 var seqB = { metrobeat:0, voice:2, name: "B", counter: 0, mm: 120, beatsinbar: 4, durations: srcsqr[1], units: [3,2,1,1,2,3]}; | |
199 var seqC = { metrobeat:0, voice:3, name: "C", counter: 0, mm: 90, beatsinbar: 4, durations: srcsqr[2], units: [4,5,6,5,4,2]}; | |
200 var seqD = { metrobeat:0, voice:4, name: "D", counter: 0, mm: 105, beatsinbar: 4, durations: srcsqr[3], units: [2,3,4,2,3,1]}; | |
201 | |
202 | |
203 | |
204 var countdowntick = function(seq){ | |
205 // var tempoms = Math.floor(60000/seq.mm) | |
206 var tempoms = Math.floor(60000/seq.mm) | 199 var tempoms = Math.floor(60000/seq.mm) |
207 //console.log(tempoms) | 200 |
208 var timemultiplier=1 | 201 var timemultiplier=1000 |
209 var outcount = 4; var incount=4; | 202 var outcount = 4; var incount=4; |
210 var time = ((seq.durations[seq.counter]+1) *timemultiplier) + 30000 + (outcount*tempoms); | 203 var time = ((seq.durations[seq.counter]+1) *timemultiplier) + 30000 + (outcount*tempoms); |
211 var time = Math.floor(time) | 204 var time = Math.floor(time) |
212 var ztime = time; | 205 var ztime = time; |
213 var totaltime = Math.floor(time/tempoms) | 206 var totaltime = Math.floor(time/tempoms) |
214 var unit = seq.units[seq.counter]; | 207 var unit = seq.units[seq.counter]; |
215 | 208 var voice = seq.voice; |
209 console.log(time) | |
216 // initiate first page here | 210 // initiate first page here |
217 socket.broadcast.emit("pageFlipfromserver", seq.voice, unit, time, seq.mm,seq.counter); | 211 socket.broadcast.emit("pageFlipfromserver", voice, unit, time, seq.mm,seq.counter); |
218 socket.emit("pageFlipfromserver", seq.voice, unit, time, seq.mm,seq.counter); | 212 socket.emit("pageFlipfromserver", voice, unit, time, seq.mm,seq.counter); |
219 | 213 |
220 function sequenCer() { | 214 function sequenCer() { |
221 // console.log(ztime) | 215 // console.log(ztime) |
222 if (ztime >= 0 ){ | 216 if (ztime >= 0 ){ |
223 | 217 |
224 // basic unit is still the second/1000ms - change this to tempoms? no i dont think so | 218 // basic unit is still the second/1000ms - change this to tempoms? no i dont think so |
225 // count in and count out | 219 // count in and count out |
226 //////////////////////////////////////////// | 220 //////////////////////////////////////////// |
227 | 221 |
228 var counter = Math.floor(ztime/tempoms) | 222 var counter = Math.floor(ztime/tempoms) |
229 //console.log(counter) | 223 //console.log(counter) |
230 if (counter >= 0 ){ | 224 if (counter >= 0 ){ |
231 socket.broadcast.emit('counterText', seq.voice, seq.counter, counter); | 225 socket.broadcast.emit('counterText', voice, seq.counter, counter); |
232 socket.emit('counterText', seq.voice, seq.counter, counter); | 226 socket.emit('counterText', voice, seq.counter, counter); |
233 | 227 |
234 if (counter <= outcount ) { | 228 if (counter <= outcount ) { |
235 socket.broadcast.emit('countinFromServer', seq.voice, counter, "","stop in: ", "red", "transparent"); | 229 socket.broadcast.emit('countinFromServer', voice, counter, "","stop in: ", "red", "transparent"); |
236 } | 230 } |
237 | 231 |
238 if (counter > (totaltime)-incount && counter <= totaltime ) { | 232 if (counter > (totaltime)-incount && counter <= totaltime ) { |
239 socket.broadcast.emit('countinFromServer', seq.voice, counter-(totaltime-incount), "","play in: ", "green","transparent"); | 233 socket.broadcast.emit('countinFromServer', voice, counter-(totaltime-incount), "","play in: ", "green","transparent"); |
240 socket.emit('countinFromServer', seq.voice, counter-(totaltime-incount), "","play in: ", "green","transparent"); | 234 socket.emit('countinFromServer', voice, counter-(totaltime-incount), "","play in: ", "green","transparent"); |
241 | |
242 } | 235 } |
243 | 236 |
244 if (counter == (totaltime)-incount ) { | 237 if (counter == (totaltime)-incount ) { |
245 socket.broadcast.emit('countinFromServer', seq.voice, "+", "","playing.. ", "green","transparent"); | 238 socket.broadcast.emit('countinFromServer', voice, "+", "","playing.. ", "green","transparent"); |
246 socket.emit('countinFromServer', seq.voice, "+", "","playing.. ", "green","transparent"); | 239 socket.emit('countinFromServer', voice, "+", "","playing.. ", "green","transparent"); |
247 } | 240 } |
248 | 241 |
249 // remove displayed number with " " at end of both countin/out | 242 // remove displayed number with " " at end of both countin/out |
250 | 243 |
251 if (counter == 0 ) { | 244 if (counter == 0 ) { |
252 socket.broadcast.emit('countinFromServer', seq.voice, "", "","", "green","transparent"); | 245 socket.broadcast.emit('countinFromServer', voice, "", "","", "green","transparent"); |
253 socket.broadcast.emit('counterText', seq.voice, seq.counter, ""); | 246 socket.broadcast.emit('counterText', voice, seq.counter, ""); |
254 socket.emit('counterText', seq.voice, seq.counter, ""); | 247 socket.emit('counterText', voice, seq.counter, ""); |
255 } | 248 } |
256 } | 249 } |
257 | 250 |
258 // on each beat do: | 251 // on each beat do: |
259 | 252 |
260 | 253 |
261 // push out the pulse to metronome | 254 // push out the pulse to metronome |
262 seq.metrobeat = (seq.metrobeat+1)%seq.beatsinbar ; | 255 seq.metrobeat = (seq.metrobeat+1)%seq.beatsinbar ; |
263 socket.broadcast.emit('metroPulse', tempoms, seq.voice,seq.metrobeat); | 256 socket.broadcast.emit('metroPulse', tempoms, voice,seq.metrobeat); |
264 socket.emit('metroPulse', tempoms, seq.voice,seq.metrobeat); | 257 socket.emit('metroPulse', tempoms, voice,seq.metrobeat); |
265 } | 258 } |
266 | 259 |
267 // flip the page | 260 // flip the page |
268 if (counter == 0){ | 261 if (counter == 0){ |
269 seq.counter = (seq.counter + 1) % seq.durations.length | 262 seq.counter = (seq.counter + 1) % seq.durations.length |
270 socket.broadcast.emit("pageFlipfromserver", seq.voice, unit, time, seq.mm,seq.counter); | 263 socket.broadcast.emit("pageFlipfromserver", voice, unit, time, seq.mm,seq.counter); |
271 //delete tockTock; | 264 //delete tockTock; |
272 step(seq); | 265 step(seq); |
273 } | 266 } |
274 | 267 |
275 // decrement the time | 268 // decrement the time |
289 }); | 282 }); |
290 }; | 283 }; |
291 | 284 |
292 step = function (seq) { | 285 step = function (seq) { |
293 //clearInterval(seq.boo); | 286 //clearInterval(seq.boo); |
294 //clearInterval(countdowntick); | 287 clearInterval(countdowntick); |
295 countdowntick(seq) | 288 countdowntick(seq) |
296 sequencerState=1; | 289 sequencerState=1; |
297 }; | 290 }; |
298 | 291 |
299 socket.on('resetSeq', function () { | 292 socket.on('resetSeq', function () { |
367 socket.broadcast.emit('nicknames', nicknames); | 360 socket.broadcast.emit('nicknames', nicknames); |
368 }); | 361 }); |
369 | 362 |
370 | 363 |
371 }); | 364 }); |
372 | 365 //}); |
373 exports.io = io; | 366 //exports.io = io; |
374 exports.sio = sio; | 367 //exports.sio = sio; |
368 exports.socket= io.sockets; | |
375 exports.httpServer = httpServer; | 369 exports.httpServer = httpServer; |