annotate 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
rev   line source
rc-web@49 1 ////////////////////////////////////////////
rc-web@49 2 // magic square sequencer
rc-web@49 3 ////////////////////////////////////////////
rc-web@49 4 // var score = require('./score');
rc-web@49 5 // var c = require('./chronometer');
rc-web@49 6 var nodescore = require('./nodescore');
rc-web@49 7 var sio = nodescore.sio
rc-web@49 8 var io = nodescore.io
rc-web@49 9
rc-web@49 10
rc-web@49 11 // var mm = score.mm
rc-web@49 12 var sequencerState = 0;
rc-web@49 13
rc-web@49 14
rc-web@49 15
rc-web@49 16 io.sockets.on('connection', function (socket) {
rc-web@49 17
rc-web@49 18 // var srcsqr = score.srcsqr
rc-web@49 19 var srcsqr = []
rc-web@49 20 srcsqr[0] = [22,21,24,25,06,07];
rc-web@49 21 srcsqr[1] = [20,23,27,26,05,04];
rc-web@49 22 srcsqr[2] = [03,00,17,16,35,34];
rc-web@49 23 srcsqr[3] = [01,02,19,18,33,32];
rc-web@49 24
rc-web@49 25 // var seqA = score.seqA
rc-web@49 26 // var seqB = score.seqB
rc-web@49 27 // var seqC = score.seqC
rc-web@49 28 // var seqD = score.seqD
rc-web@49 29
rc-web@49 30 var seqA = { metrobeat:0, voice:1, name: "A", counter: 0, mm: 60, beatsinbar: 4, durations: srcsqr[0], units: [1,2,3,1,2,4]};
rc-web@49 31 var seqB = { metrobeat:0, voice:2, name: "B", counter: 0, mm: 120, beatsinbar: 4, durations: srcsqr[1], units: [3,2,1,1,2,3]};
rc-web@49 32 var seqC = { metrobeat:0, voice:3, name: "C", counter: 0, mm: 90, beatsinbar: 4, durations: srcsqr[2], units: [4,5,6,5,4,2]};
rc-web@49 33 var seqD = { metrobeat:0, voice:4, name: "D", counter: 0, mm: 105, beatsinbar: 4, durations: srcsqr[3], units: [2,3,4,2,3,1]};
rc-web@49 34
rc-web@49 35
rc-web@49 36 var countdowntick = function(seq){
rc-web@49 37 // var tempoms = Math.floor(60000/seq.mm)
rc-web@49 38 var tempoms = Math.floor(60000/seq.mm)
rc-web@49 39 //console.log(tempoms)
rc-web@49 40 var timemultiplier=1
rc-web@49 41 var outcount = 4; var incount=4;
rc-web@49 42 var time = ((seq.durations[seq.counter]+1) *timemultiplier) + 30000 + (outcount*tempoms);
rc-web@49 43 var time = Math.floor(time)
rc-web@49 44 var ztime = time;
rc-web@49 45 var totaltime = Math.floor(time/tempoms)
rc-web@49 46 var unit = seq.units[seq.counter];
rc-web@49 47
rc-web@49 48 // initiate first page here
rc-web@49 49 socket.broadcast.emit("pageFlipfromserver", seq.voice, unit, time, seq.mm,seq.counter);
rc-web@49 50 socket.emit("pageFlipfromserver", seq.voice, unit, time, seq.mm,seq.counter);
rc-web@49 51
rc-web@49 52 function sequenCer() {
rc-web@49 53 // console.log(ztime)
rc-web@49 54 if (ztime >= 0 ){
rc-web@49 55
rc-web@49 56 // basic unit is still the second/1000ms - change this to tempoms? no i dont think so
rc-web@49 57 // count in and count out
rc-web@49 58 ////////////////////////////////////////////
rc-web@49 59
rc-web@49 60 var counter = Math.floor(ztime/tempoms)
rc-web@49 61 //console.log(counter)
rc-web@49 62 if (counter >= 0 ){
rc-web@49 63 socket.broadcast.emit('counterText', seq.voice, seq.counter, counter);
rc-web@49 64 socket.emit('counterText', seq.voice, seq.counter, counter);
rc-web@49 65
rc-web@49 66 if (counter <= outcount ) {
rc-web@49 67 socket.broadcast.emit('countinFromServer', seq.voice, counter, "","stop in: ", "red", "transparent");
rc-web@49 68 }
rc-web@49 69
rc-web@49 70 if (counter > (totaltime)-incount && counter <= totaltime ) {
rc-web@49 71 socket.broadcast.emit('countinFromServer', seq.voice, counter-(totaltime-incount), "","play in: ", "green","transparent");
rc-web@49 72 socket.emit('countinFromServer', seq.voice, counter-(totaltime-incount), "","play in: ", "green","transparent");
rc-web@49 73
rc-web@49 74 }
rc-web@49 75
rc-web@49 76 if (counter == (totaltime)-incount ) {
rc-web@49 77 socket.broadcast.emit('countinFromServer', seq.voice, "+", "","playing.. ", "green","transparent");
rc-web@49 78 socket.emit('countinFromServer', seq.voice, "+", "","playing.. ", "green","transparent");
rc-web@49 79 }
rc-web@49 80
rc-web@49 81 // remove displayed number with " " at end of both countin/out
rc-web@49 82
rc-web@49 83 if (counter == 0 ) {
rc-web@49 84 socket.broadcast.emit('countinFromServer', seq.voice, "", "","", "green","transparent");
rc-web@49 85 socket.broadcast.emit('counterText', seq.voice, seq.counter, "");
rc-web@49 86 socket.emit('counterText', seq.voice, seq.counter, "");
rc-web@49 87 }
rc-web@49 88 }
rc-web@49 89
rc-web@49 90 // on each beat do:
rc-web@49 91
rc-web@49 92 // push out the pulse to metronome
rc-web@49 93 seq.metrobeat = (seq.metrobeat+1)%seq.beatsinbar ;
rc-web@49 94 socket.broadcast.emit('metroPulse', tempoms, seq.voice,seq.metrobeat);
rc-web@49 95 socket.emit('metroPulse', tempoms, seq.voice,seq.metrobeat);
rc-web@49 96 }
rc-web@49 97
rc-web@49 98 // flip the page
rc-web@49 99 if (counter == 0){
rc-web@49 100
rc-web@49 101 seq.counter = (seq.counter + 1) % seq.durations.length
rc-web@49 102 socket.broadcast.emit("pageFlipfromserver", seq.voice, unit, time, seq.mm,seq.counter);
rc-web@49 103 //delete tockTock;
rc-web@49 104 step(seq);
rc-web@49 105 }
rc-web@49 106
rc-web@49 107 // decrement the time
rc-web@49 108 ztime -= tempoms
rc-web@49 109 }
rc-web@49 110
rc-web@49 111 var pulse = setInterval(sequenCer, tempoms);
rc-web@49 112
rc-web@49 113 socket.on('stopSeq', function () {
rc-web@49 114 //donaldduck = mickeymouse + 7
rc-web@49 115 sequenCer.clearInterval
rc-web@49 116 console.log("sequencer stopping...")
rc-web@49 117 // grrr why wont this clearInterval work
rc-web@49 118 sequencerState = 0
rc-web@49 119 clearInterval(pulse)
rc-web@49 120 stopChr();
rc-web@49 121 });
rc-web@49 122
rc-web@49 123 };
rc-web@49 124
rc-web@49 125 step = function (seq) {
rc-web@49 126 //clearInterval(seq.boo);
rc-web@49 127 //clearInterval(countdowntick);
rc-web@49 128 countdowntick(seq)
rc-web@49 129 sequencerState=1;
rc-web@49 130 };
rc-web@49 131
rc-web@49 132 startMss = function () {
rc-web@49 133 step(seqA);step(seqB); step(seqC); step(seqD);
rc-web@49 134 ztime =-1;
rc-web@49 135 }
rc-web@49 136
rc-web@49 137 exports.startMss = startMss;
rc-web@49 138 });
rc-web@49 139
rc-web@49 140
rc-web@49 141