Mercurial > hg > nodescore
view sequencer.js @ 49:ddb09f0a67fd
begining of attempt at modularisation
author | tzara <rc-web@kiben.net> |
---|---|
date | Sat, 13 Oct 2012 00:17:52 +0000 |
parents | |
children | 66bf613fb818 |
line wrap: on
line source
//////////////////////////////////////////// // magic square sequencer //////////////////////////////////////////// // var score = require('./score'); // var c = require('./chronometer'); var nodescore = require('./nodescore'); var sio = nodescore.sio var io = nodescore.io // var mm = score.mm var sequencerState = 0; io.sockets.on('connection', function (socket) { // 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) var timemultiplier=1 var outcount = 4; var incount=4; var time = ((seq.durations[seq.counter]+1) *timemultiplier) + 30000 + (outcount*tempoms); var time = Math.floor(time) var ztime = time; var totaltime = Math.floor(time/tempoms) var unit = seq.units[seq.counter]; // initiate first page here socket.broadcast.emit("pageFlipfromserver", seq.voice, unit, time, seq.mm,seq.counter); socket.emit("pageFlipfromserver", seq.voice, unit, time, seq.mm,seq.counter); function sequenCer() { // console.log(ztime) if (ztime >= 0 ){ // basic unit is still the second/1000ms - change this to tempoms? no i dont think so // count in and count out //////////////////////////////////////////// var counter = Math.floor(ztime/tempoms) //console.log(counter) if (counter >= 0 ){ socket.broadcast.emit('counterText', seq.voice, seq.counter, counter); socket.emit('counterText', seq.voice, seq.counter, counter); if (counter <= outcount ) { socket.broadcast.emit('countinFromServer', seq.voice, counter, "","stop in: ", "red", "transparent"); } if (counter > (totaltime)-incount && counter <= totaltime ) { socket.broadcast.emit('countinFromServer', seq.voice, counter-(totaltime-incount), "","play in: ", "green","transparent"); socket.emit('countinFromServer', seq.voice, counter-(totaltime-incount), "","play in: ", "green","transparent"); } if (counter == (totaltime)-incount ) { socket.broadcast.emit('countinFromServer', seq.voice, "+", "","playing.. ", "green","transparent"); socket.emit('countinFromServer', seq.voice, "+", "","playing.. ", "green","transparent"); } // remove displayed number with " " at end of both countin/out if (counter == 0 ) { socket.broadcast.emit('countinFromServer', seq.voice, "", "","", "green","transparent"); socket.broadcast.emit('counterText', seq.voice, seq.counter, ""); socket.emit('counterText', seq.voice, seq.counter, ""); } } // 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); socket.emit('metroPulse', tempoms, seq.voice,seq.metrobeat); } // 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; step(seq); } // decrement the time ztime -= tempoms } var pulse = setInterval(sequenCer, tempoms); socket.on('stopSeq', function () { //donaldduck = mickeymouse + 7 sequenCer.clearInterval console.log("sequencer stopping...") // grrr why wont this clearInterval work sequencerState = 0 clearInterval(pulse) stopChr(); }); }; step = function (seq) { //clearInterval(seq.boo); //clearInterval(countdowntick); countdowntick(seq) sequencerState=1; }; startMss = function () { step(seqA);step(seqB); step(seqC); step(seqD); ztime =-1; } exports.startMss = startMss; });