{{ '{{' }} c.label {{ '}}' }}
-{{ '{{' }} c.full_label {{ '}}' }}
+{{ '{{' }} c.prelabel {{ '}}' }}
# HG changeset patch # User cavaliet # Date 1413820951 -7200 # Node ID a7abfcfd7959ca6a53fc66a025376dc179914262 # Parent 33002744dbbd5c92ba2f437f6e0d9165d764ca4c real time with piano roll and new category management diff -r 33002744dbbd -r a7abfcfd7959 annot-server/static/js/pianoroll.js --- a/annot-server/static/js/pianoroll.js Mon Oct 20 15:00:19 2014 +0200 +++ b/annot-server/static/js/pianoroll.js Mon Oct 20 18:02:31 2014 +0200 @@ -23,6 +23,9 @@ var drawPianoNotes = false; var drawHorizontalLines = false; var drawVerticalLines = true; +// Timecode method +var timePageLoaded = Date.now(); +var offsetMusic = false; //create an new instance of a pixi stage @@ -100,53 +103,53 @@ renderer.render(stage); } function moveContainerMore() { - container1.x -= 10*(pixelsPerSecond1/manualFramerate); - container2.x -= 10*(pixelsPerSecond2/manualFramerate); + container1.x -= 50*(pixelsPerSecond1/manualFramerate); + container2.x -= 50*(pixelsPerSecond2/manualFramerate); renderer.render(stage); } function moveContainerRight() { - container1.x += 10*(pixelsPerSecond1/manualFramerate); - container2.x += 10*(pixelsPerSecond2/manualFramerate); + container1.x += 50*(pixelsPerSecond1/manualFramerate); + container2.x += 50*(pixelsPerSecond2/manualFramerate); renderer.render(stage); } -function addBunny(data){ - var timeFromZero = data.content[1]; +function addNoteInContainer(note, startTime, duration, velocity, pixelsPerSecond, container, prHeight){ + //console.log("coucou 1", note, timeFromZero, ts, velocity, pixelsPerSecond, container, prHeight); + var beginX = (offsetMusic + startTime) * pixelsPerSecond / 1000; + var width = duration * pixelsPerSecond / 1000; + // We draw the rectangle + var graphics = new PIXI.Graphics(); + graphics.beginFill(noteColor, (velocity / 128)); + var y = (128-note) * prHeight / 128; // (128-note) because y = 0 is for note = 128 and y = 128 for note = 0 + graphics.drawRect(beginX, Math.floor(y - (noteHeight/2) + ((prHeight / 128)/2)), width, noteHeight); + graphics.endFill(); + container.addChild(graphics); +} + +function addNotes(data){ + if(!offsetMusic){ + // get difference between the current note timecode and my zero to set the difference between the canvas's zero and the music's zero + // in order to place in real time + var now = Date.now(); + var timeBetweenNowAndStart = now - timePageLoaded; + offsetMusic = timeBetweenNowAndStart - data.content[1]; + //console.log("start: ", timePageLoaded, ", now: ", now, ", timeBetweenNowAndStart = ", timeBetweenNowAndStart, ", offsetMusic = ", offsetMusic); + } var note = data.content[3]; var velocity = data.content[4]; if(velocity===0){ if(note in noteDict){ // We close the note in container one - /*var beginTime = new Date(noteDict[note].ts).getTime(); - var beginDelta = beginTime - zeroTime; - var durationDelta = new Date(data.ts).getTime() - beginTime; - var beginX = beginDelta * pixelsPerSecond1 / 1000; - var width = durationDelta * pixelsPerSecond1 / 1000;*/ - var beginX = noteDict[note].ts * pixelsPerSecond1 / 1000; - var width = (timeFromZero - noteDict[note].ts) * pixelsPerSecond1 / 1000; - // We draw the rectangle - var graphics = new PIXI.Graphics(); - graphics.beginFill(noteColor, (noteDict[note].velocity / 128)); - var y = (128-note) * prHeight1 / 128; // (128-note) because y = 0 is for note = 128 and y = 128 for note = 0 - graphics.drawRect(beginX, Math.floor(y - (noteHeight/2) + ((prHeight1 / 128)/2)), width, noteHeight); - graphics.endFill(); - container1.addChild(graphics); - // container 2 - beginX = noteDict[note].ts * pixelsPerSecond2 / 1000; - width = (timeFromZero - noteDict[note].ts) * pixelsPerSecond2 / 1000; - // We draw the rectangle - graphics = new PIXI.Graphics(); - graphics.beginFill(noteColor, (noteDict[note].velocity / 128)); - y = (128-note) * prHeight2 / 128; // (128-note) because y = 0 is for note = 128 and y = 128 for note = 0 - graphics.drawRect(beginX, Math.floor(y - (noteHeight/2) + ((prHeight2 / 128)/2)), width, noteHeight); - graphics.endFill(); - container2.addChild(graphics); + //console.log("coucou 2", data); + var duration = data.content[1] - noteDict[note].ts; + addNoteInContainer(note, noteDict[note].ts, duration, noteDict[note].velocity, pixelsPerSecond1, container1, prHeight1); + addNoteInContainer(note, noteDict[note].ts, duration, noteDict[note].velocity, pixelsPerSecond2, container2, prHeight2); // delete entry delete noteDict[note]; } } else{ - noteDict[note] = {ts: timeFromZero, velocity:velocity}; + noteDict[note] = {ts: data.content[1], velocity:velocity}; } } @@ -201,7 +204,7 @@ if(logger){ log("Got message: " + e.data); } - addBunny(JSON.parse(e.data)); + addNotes(JSON.parse(e.data)); } } }; @@ -242,7 +245,6 @@ t.x = x + 2; t.y = 2; container2.addChild(t); - } addLine(); var moveInterval = window.setInterval(moveContainer, 1000/manualFramerate); diff -r 33002744dbbd -r a7abfcfd7959 client/app/annotationclient.html --- a/client/app/annotationclient.html Mon Oct 20 15:00:19 2014 +0200 +++ b/client/app/annotationclient.html Mon Oct 20 18:02:31 2014 +0200 @@ -52,7 +52,7 @@
{{ '{{' }} c.label {{ '}}' }}
-{{ '{{' }} c.full_label {{ '}}' }}
+{{ '{{' }} c.prelabel {{ '}}' }}