# HG changeset patch # User Nicholas Jillings # Date 1453816376 0 # Node ID a9eb4f6443d8822406631bfdd03598da9529c5b6 # Parent 89ad0630d860c8f2d52b7e2f9731c40b056313bf Interfaces have startPlayback and stopPlayback methods to clean up code management. Looping playbacks now have a 2s cross-fade. diff -r 89ad0630d860 -r a9eb4f6443d8 core.js --- a/core.js Tue Jan 26 11:32:11 2016 +0000 +++ b/core.js Tue Jan 26 13:52:56 2016 +0000 @@ -1060,24 +1060,24 @@ interfaceContext.playhead.setTimePerPixel(this.audioObjects[id]); } if (this.loopPlayback) { + var setTime = audioContext.currentTime+2; for (var i=0; i(5) Inaudible - + diff -r 89ad0630d860 -r a9eb4f6443d8 interfaces/AB.js --- a/interfaces/AB.js Tue Jan 26 11:32:11 2016 +0000 +++ b/interfaces/AB.js Tue Jan 26 13:52:56 2016 +0000 @@ -208,10 +208,8 @@ }; this.playback.onclick = function(event) { - $('.comparitor-button').text('Listen'); var id = event.currentTarget.parentElement.getAttribute('track-id'); audioEngineContext.play(id); - $(event.currentTarget).text('Playing'); }; this.enable = function() @@ -233,6 +231,15 @@ this.playback.textContent = "Listen"; } }; + this.startPlayback = function() + { + $('.comparitor-button').text('Listen'); + $(this.playback).text('Playing'); + }; + this.stopPlayback = function() + { + $(this.playback).text('Listen'); + }; this.exportXMLDOM = function(audioObject) { var node = storage.document.createElement('value'); diff -r 89ad0630d860 -r a9eb4f6443d8 interfaces/ape.js --- a/interfaces/ape.js Tue Jan 26 11:32:11 2016 +0000 +++ b/interfaces/ape.js Tue Jan 26 13:52:56 2016 +0000 @@ -409,16 +409,6 @@ var id = Number(obj.attributes['trackIndex'].value); //audioEngineContext.metric.sliderPlayed(id); audioEngineContext.play(id); - // Currently playing track red, rest green - - $('.track-slider').removeClass('track-slider-playing'); - var name = ".track-slider-"+obj.getAttribute("trackindex"); - $(name).addClass('track-slider-playing'); - $('.comment-div').removeClass('comment-box-playing'); - $('#comment-div-'+id).addClass('comment-box-playing'); - var outsideReference = document.getElementById('outside-reference'); - if (outsideReference != undefined) - $(outsideReference).removeClass('track-slider-playing'); } interfaceContext.releaseObject(); }); @@ -617,6 +607,23 @@ this.trackSliderObjects[0].children[0].textContent = this.parent.id; } }; + this.startPlayback = function() + { + $('.track-slider').removeClass('track-slider-playing'); + var name = ".track-slider-"+this.parent.id; + $(name).addClass('track-slider-playing'); + $('.comment-div').removeClass('comment-box-playing'); + $('#comment-div-'+this.parent.id).addClass('comment-box-playing'); + var outsideReference = document.getElementById('outside-reference'); + if (outsideReference != undefined) + $(outsideReference).removeClass('track-slider-playing'); + }; + this.stopPlayback = function() + { + var name = ".track-slider-"+this.parent.id; + $(name).removeClass('track-slider-playing'); + $('#comment-div-'+this.parent.id).removeClass('comment-box-playing'); + }; this.exportXMLDOM = function(audioObject) { // Called by the audioObject holding this element. Must be present var obj = []; @@ -683,6 +690,16 @@ this.outsideReferenceHolder[0].children[0].textContent = "Play Reference"; } }; + this.startPlayback = function() + { + $('.track-slider').removeClass('track-slider-playing'); + $(this.outsideReferenceHolder).addClass('track-slider-playing'); + $('.comment-div').removeClass('comment-box-playing'); + }; + this.stopPlayback = function() + { + $(this.outsideReferenceHolder).removeClass('track-slider-playing'); + }; this.exportXMLDOM = function(audioObject) { return null; diff -r 89ad0630d860 -r a9eb4f6443d8 interfaces/blank.js --- a/interfaces/blank.js Tue Jan 26 11:32:11 2016 +0000 +++ b/interfaces/blank.js Tue Jan 26 13:52:56 2016 +0000 @@ -29,6 +29,14 @@ { // progress is a value from 0 to 100 indicating the current download state of media files }; + this.startPlayback = function() + { + // Called when playback has begun + }; + this.stopPlayback = function() + { + // Called when playback has stopped. This gets called even if playback never started! + }; this.getValue = function() { // Return the current value of the object. If there is no value, return 0 diff -r 89ad0630d860 -r a9eb4f6443d8 interfaces/discrete.js --- a/interfaces/discrete.js Tue Jan 26 11:32:11 2016 +0000 +++ b/interfaces/discrete.js Tue Jan 26 13:52:56 2016 +0000 @@ -275,12 +275,6 @@ var id = Number(event.currentTarget.value); //audioEngineContext.metric.sliderPlayed(id); 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.resize = function(event) { @@ -308,6 +302,23 @@ { // progress is a value from 0 to 100 indicating the current download state of media files }; + + this.startPlayback = function() + { + // Called by audioObject when playback begins + $(".track-slider").removeClass('track-slider-playing'); + $(this.holder).addClass('track-slider-playing'); + var outsideReference = document.getElementById('outside-reference'); + if (outsideReference != null) { + $(outsideReference).removeClass('track-slider-playing'); + } + } + this.stopPlayback = function() + { + // Called by audioObject when playback stops + $(this.holder).removeClass('track-slider-playing'); + } + this.getValue = function() { // Return the current value of the object. If there is no value, return -1 diff -r 89ad0630d860 -r a9eb4f6443d8 interfaces/horizontal-sliders.js --- a/interfaces/horizontal-sliders.js Tue Jan 26 11:32:11 2016 +0000 +++ b/interfaces/horizontal-sliders.js Tue Jan 26 13:52:56 2016 +0000 @@ -266,12 +266,6 @@ var id = Number(event.currentTarget.value); //audioEngineContext.metric.sliderPlayed(id); 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.resize = function(event) { @@ -289,6 +283,21 @@ { // progress is a value from 0 to 100 indicating the current download state of media files }; + this.startPlayback = function() + { + // Called when playback has begun + $(".track-slider").removeClass('track-slider-playing'); + $(this.holder).addClass('track-slider-playing'); + var outsideReference = document.getElementById('outside-reference'); + if (outsideReference != null) { + $(outsideReference).removeClass('track-slider-playing'); + } + }; + this.stopPlayback = function() + { + // Called when playback has stopped. This gets called even if playback never started! + $(this.holder).removeClass('track-slider-playing'); + }; this.getValue = function() { // Return the current value of the object. If there is no value, return 0 @@ -316,6 +325,69 @@ }; }; +function outsideReferenceDOM(audioObject,index,inject) +{ + this.parent = audioObject; + this.outsideReferenceHolder = document.createElement('button'); + this.outsideReferenceHolder.id = 'outside-reference'; + this.outsideReferenceHolder.className = 'outside-reference'; + this.outsideReferenceHolder.setAttribute('track-id',index); + this.outsideReferenceHolder.textContent = "Play Reference"; + this.outsideReferenceHolder.disabled = true; + + this.outsideReferenceHolder.onclick = function(event) + { + audioEngineContext.play(event.currentTarget.getAttribute('track-id')); + }; + inject.appendChild(this.outsideReferenceHolder); + this.enable = function() + { + if (this.parent.state == 1) + { + this.outsideReferenceHolder.disabled = false; + } + }; + this.updateLoading = function(progress) + { + if (progress != 100) + { + progress = String(progress); + progress = progress.split('.')[0]; + this.outsideReferenceHolder[0].children[0].textContent = progress+'%'; + } else { + this.outsideReferenceHolder[0].children[0].textContent = "Play Reference"; + } + }; + this.startPlayback = function() + { + // Called when playback has begun + $('.track-slider').removeClass('track-slider-playing'); + $('.comment-div').removeClass('comment-box-playing'); + $(this.outsideReferenceHolder).addClass('track-slider-playing'); + }; + this.stopPlayback = function() + { + // Called when playback has stopped. This gets called even if playback never started! + $(this.outsideReferenceHolder).removeClass('track-slider-playing'); + }; + this.exportXMLDOM = function(audioObject) + { + return null; + }; + this.getValue = function() + { + return 0; + }; + this.getPresentedId = function() + { + return 'reference'; + }; + this.canMove = function() + { + return false; + }; +} + function resizeWindow(event) { // Called on every window resize event, use this to scale your page properly diff -r 89ad0630d860 -r a9eb4f6443d8 interfaces/mushra.js --- a/interfaces/mushra.js Tue Jan 26 11:32:11 2016 +0000 +++ b/interfaces/mushra.js Tue Jan 26 13:52:56 2016 +0000 @@ -295,6 +295,21 @@ node.textContent = this.slider.value; return node; }; + this.startPlayback = function() + { + // Called when playback has begun + $(".track-slider").removeClass('track-slider-playing'); + $(this.holder).addClass('track-slider-playing'); + var outsideReference = document.getElementById('outside-reference'); + if (outsideReference != null) { + $(outsideReference).removeClass('track-slider-playing'); + } + }; + this.stopPlayback = function() + { + // Called when playback has stopped. This gets called even if playback never started! + $(this.holder).removeClass('track-slider-playing'); + }; this.getValue = function() { return this.slider.value; }; @@ -338,9 +353,6 @@ this.outsideReferenceHolder.onclick = function(event) { audioEngineContext.play(event.currentTarget.getAttribute('track-id')); - $('.track-slider').removeClass('track-slider-playing'); - $('.comment-div').removeClass('comment-box-playing'); - $(event.currentTarget).addClass('track-slider-playing'); }; inject.appendChild(this.outsideReferenceHolder); this.enable = function() @@ -361,6 +373,18 @@ this.outsideReferenceHolder[0].children[0].textContent = "Play Reference"; } }; + this.startPlayback = function() + { + // Called when playback has begun + $('.track-slider').removeClass('track-slider-playing'); + $('.comment-div').removeClass('comment-box-playing'); + $(this.outsideReferenceHolder).addClass('track-slider-playing'); + }; + this.stopPlayback = function() + { + // Called when playback has stopped. This gets called even if playback never started! + $(this.outsideReferenceHolder).removeClass('track-slider-playing'); + }; this.exportXMLDOM = function(audioObject) { return null;