nickjillings@1342: /** nickjillings@1342: * WAET Blank Template nickjillings@1342: * Use this to start building your custom interface nickjillings@1342: */ nickjillings@1342: nickjillings@1342: // Once this is loaded and parsed, begin execution nickjillings@1342: loadInterface(); nickjillings@1342: nickjillings@1342: function loadInterface() { nicholas@2538: // Use this to do any one-time page / element construction. For instance, placing any stationary text objects, nicholas@2538: // holding div's, or setting up any nodes which are present for the entire test sequence n@2980: } nickjillings@1342: nicholas@2538: function loadTest(page) { nicholas@2538: // Called each time a new test page is to be build. The page specification node is the only item passed in nickjillings@1342: } nickjillings@1342: nicholas@2538: function interfaceObject() { nicholas@2538: // An example node, you can make this however you want for each audioElement. nicholas@2538: // However, every audioObject (audioEngineContext.audioObject) MUST have an interface object with the following nicholas@2538: // You attach them by calling audioObject.bindInterface( ) nicholas@2538: this.enable = function () { nicholas@2538: // This is used to tell the interface object that playback of this node is ready nicholas@2538: }; nicholas@2538: this.updateLoading = function (progress) { nicholas@2538: // progress is a value from 0 to 100 indicating the current download state of media files nicholas@2538: }; nicholas@2538: this.startPlayback = function () { nickjillings@1360: // Called when playback has begun nickjillings@1360: }; nicholas@2538: this.stopPlayback = function () { nickjillings@1360: // Called when playback has stopped. This gets called even if playback never started! nickjillings@1360: }; nicholas@2538: this.getValue = function () { nicholas@2538: // Return the current value of the object. If there is no value, return 0 nicholas@2538: }; nicholas@2538: this.getPresentedId = function () { nicholas@2538: // Return the presented ID of the object. For instance, the APE has sliders starting from 0. Whilst AB has alphabetical scale nicholas@2538: }; nicholas@2538: this.canMove = function () { nicholas@2538: // Return either true or false if the interface object can be moved. AB / Reference cannot, whilst sliders can and therefore have a continuous scale. nicholas@2538: // These are checked primarily if the interface check option 'fragmentMoved' is enabled. nicholas@2538: }; nicholas@2538: this.exportXMLDOM = function (audioObject) { nicholas@2538: // Called by the audioObject holding this element to export the interface node. nicholas@2538: // If there is no value node (such as outside reference), return null nicholas@2538: // If there are multiple value nodes (such as multiple scale / 2D scales), return an array of nodes with each value node having an 'interfaceName' attribute nicholas@2538: // Use storage.document.createElement('value'); to generate the XML node. nicholas@2538: nicholas@2538: }; nicholas@2538: this.error = function () { nickjillings@2113: // If there is an error with the audioObject, this will be called to indicate a failure n@2980: }; n@2980: } nickjillings@1342: nicholas@2538: function resizeWindow(event) { nicholas@2538: // Called on every window resize event, use this to scale your page properly nickjillings@1342: } nickjillings@1342: nicholas@2538: function pageXMLSave(store, pageSpecification) { nicholas@2538: // MANDATORY nicholas@2538: // Saves a specific test page nicholas@2538: // You can use this space to add any extra nodes to your XML saves nicholas@2538: // Get the current information in store (remember to appendChild your data to it) nicholas@2538: // pageSpecification is the current page node configuration nicholas@2538: // To create new XML nodes, use storage.document.createElement(); nicholas@2538: }