changeset 440:8b46dbef7c47 Dev_main

Merge
author Brecht De Man <b.deman@qmul.ac.uk>
date Mon, 21 Dec 2015 15:02:43 +0100
parents 751fc4749b60 (current diff) dbd3e7f52766 (diff)
children 4866152611e6
files ape.js
diffstat 6 files changed, 74 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/ape.js	Mon Dec 21 12:10:17 2015 +0100
+++ b/ape.js	Mon Dec 21 15:02:43 2015 +0100
@@ -283,6 +283,12 @@
 	feedbackHolder.innerHTML = null;
 	sliderHolder.innerHTML = null;
 	
+	// Delete outside reference
+	var outsideReferenceHolder = document.getElementById('outside-reference');
+	if (outsideReferenceHolder != null) {
+		document.getElementById('interface-buttons').removeChild(outsideReferenceHolder);
+	}
+	
 	var interfaceObj = audioHolderObject.interfaces;
 	for (var k=0; k<interfaceObj.length; k++) {
 		// Create the div box to center align
--- a/core.js	Mon Dec 21 12:10:17 2015 +0100
+++ b/core.js	Mon Dec 21 15:02:43 2015 +0100
@@ -2858,7 +2858,7 @@
 		var failed = [];
 		for (var i in audioEngineContext.audioObjects)
 		{
-			if(audioEngineContext.audioObjects[i].metric.wasMoved == false)
+			if(audioEngineContext.audioObjects[i].metric.wasMoved == false && audioEngineContext.audioObjects[i].specification.type != 'outsidereference')
 			{
 				failed.push(audioEngineContext.audioObjects[i].id);
 			}
--- a/loudness.js	Mon Dec 21 12:10:17 2015 +0100
+++ b/loudness.js	Mon Dec 21 15:02:43 2015 +0100
@@ -8,6 +8,10 @@
 
 var interval_cal_loudness_event = null;
 
+if (typeof OfflineAudioContext == "undefined"){
+	var OfflineAudioContext = webkitOfflineAudioContext;
+}
+
 function calculateLoudness(buffer, timescale, target, offlineContext)
 {
 	// This function returns the EBU R 128 specification loudness model and sets the linear gain required to match -23 LUFS
@@ -50,8 +54,11 @@
 	KFilter.connect(HPFilter);
 	HPFilter.connect(offlineContext.destination);
 	processSource.start();
-	offlineContext.startRendering().then(function(renderedBuffer) {
+	offlineContext.oncomplete = function(renderedBuffer) {
 		// Have the renderedBuffer information, now continue processing
+		if (typeof renderedBuffer.renderedBuffer == 'object') {
+			renderedBuffer = renderedBuffer.renderedBuffer;
+		}
 		switch(timescale)
 		{
 		case "I":
@@ -95,10 +102,8 @@
 			var overallRelLoudness = calculateOverallLoudnessFromChannelBlocks(relgateEnergy);
 			buffer.lufs =  overallRelLoudness;
 		}
-	}).catch(function(err) {
-		console.log(err);
-		buffer.lufs = 1;
-	});
+	};
+	offlineContext.startRendering();
 }
 
 function calculateProcessedLoudness(buffer, winDur, overlap)
--- a/mushra.css	Mon Dec 21 12:10:17 2015 +0100
+++ b/mushra.css	Mon Dec 21 15:02:43 2015 +0100
@@ -61,6 +61,15 @@
 	margin-left: 50px;
 }
 
+div.outside-reference {
+	width:120px;
+	padding-left: 55px;
+	margin-left: 100px;
+	height:20px;
+	margin-bottom:5px;
+	background-color: rgb(100,200,100);
+}
+
 div.track-slider-playing {
 	background-color: #FFDDDD;
 }
--- a/mushra.js	Mon Dec 21 12:10:17 2015 +0100
+++ b/mushra.js	Mon Dec 21 15:02:43 2015 +0100
@@ -47,6 +47,7 @@
 	var playback = document.createElement("button");
 	playback.innerHTML = 'Stop';
 	playback.id = 'playback-button';
+	playback.style.float = 'left';
 	// onclick function. Check if it is playing or not, call the correct function in the
 	// audioEngine, change the button text to reflect the next state.
 	playback.onclick = function() {
@@ -62,6 +63,7 @@
 	submit.innerHTML = 'Submit';
 	submit.onclick = buttonSubmitClick;
 	submit.id = 'submit-button';
+	submit.style.float = 'left';
 	// Append the interface buttons into the interfaceButtons object.
 	interfaceButtons.appendChild(playback);
 	interfaceButtons.appendChild(submit);
@@ -116,6 +118,12 @@
 		document.getElementById("pageTitle").textContent = interfaceObj.title;
 	}
 	
+	// Delete outside reference
+	var outsideReferenceHolder = document.getElementById('outside-reference');
+	if (outsideReferenceHolder != null) {
+		document.getElementById('interface-buttons').removeChild(outsideReferenceHolder);
+	}
+	
 	var sliderBox = document.getElementById('slider-holder');
 	feedbackHolder.innerHTML = null;
 	sliderBox.innerHTML = null;
@@ -140,8 +148,12 @@
 		// Find URL of track
 		// In this jQuery loop, variable 'this' holds the current audioElement.
 		
-		// Now load each audio sample. First create the new track by passing the full URL
-		var trackURL = audioHolderObject.hostURL + element.url;
+		// Check if an outside reference
+		if (index == audioHolderObject.outsideReference)
+		{
+			return;
+		}
+		
 		var audioObject = audioEngineContext.newTrack(element);
 		
 		var node = interfaceContext.createCommentBox(audioObject);
@@ -168,6 +180,32 @@
 	var totalWidth = (numObj-1)*150+100;
 	var diff = (window.innerWidth - totalWidth)/2;
 	sliderBox.style.marginLeft = diff + 'px';
+	
+	// Construct outside reference;
+	if (audioHolderObject.outsideReference != null) {
+		var outsideReferenceHolder = document.createElement('div');
+		outsideReferenceHolder.id = 'outside-reference';
+		outsideReferenceHolder.className = 'outside-reference';
+		outsideReferenceHolderspan = document.createElement('span');
+		outsideReferenceHolderspan.textContent = 'Reference';
+		outsideReferenceHolder.appendChild(outsideReferenceHolderspan);
+		
+		var audioObject = audioEngineContext.newTrack(audioHolderObject.audioElements[audioHolderObject.outsideReference]);
+		
+		outsideReferenceHolder.onclick = function(event)
+		{
+			audioEngineContext.play(audioEngineContext.audioObjects.length-1);
+			$('.track-slider').removeClass('track-slider-playing');
+            $('.comment-div').removeClass('comment-box-playing');
+            if (event.currentTarget.nodeName == 'DIV') {
+            	$(event.currentTarget).addClass('track-slider-playing');
+            } else {
+            	$(event.currentTarget.parentElement).addClass('track-slider-playing');
+            }
+		};
+		
+		document.getElementById('interface-buttons').appendChild(outsideReferenceHolder);
+	}
 }
 
 function sliderObject(audioObject)
@@ -223,6 +261,10 @@
 		audioEngineContext.play(id);
 		$(".track-slider").removeClass('track-slider-playing');
 		$(event.currentTarget.parentElement).addClass('track-slider-playing');
+		var outsideReference = document.getElementById('outside-reference');
+		if (outsideReference != null) {
+			$(outsideReference).removeClass('track-slider-playing');
+		}
 	};
 	
 	this.enable = function() {
--- a/pythonServer.py	Mon Dec 21 12:10:17 2015 +0100
+++ b/pythonServer.py	Mon Dec 21 15:02:43 2015 +0100
@@ -24,9 +24,9 @@
 	curSaveIndex += 1;
 	curFileName = 'test-'+str(curSaveIndex)+'.xml'
 
-print "Next save - " + curFileName
 pseudo_index = curSaveIndex % len(pseudo_files)
-print "Next test in pseudo-random queue - " + pseudo_files[pseudo_index]
+
+print 'URL: http://localhost:8000/index.html'
 
 def send404(s):
 	s.send_response(404)
@@ -34,6 +34,8 @@
 	s.end_headers()
 	
 def processFile(s):
+	s.path = s.path.rsplit('?')
+	s.path = s.path[0]
 	s.path = s.path[1:len(s.path)]
 	st = s.path.rsplit(',')
 	lenSt = len(st)