annotate docs/SMC15/smc2015template.tex @ 704:d24dc7fd97ae

Written parts for Implementation. Small correction to project.xml (no more sampleRateExplicit tag).
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Wed, 08 Apr 2015 10:57:43 +0100
parents abed44552e79
children bd361cb50735
rev   line source
BrechtDeMan@697 1 % -----------------------------------------------
BrechtDeMan@697 2 % Template for SMC 2012
BrechtDeMan@697 3 % adapted from the template for SMC 2011, which was adapted from that of SMC 2010
BrechtDeMan@697 4 % -----------------------------------------------
BrechtDeMan@697 5
BrechtDeMan@697 6 \documentclass{article}
BrechtDeMan@697 7 \usepackage{smc2015}
BrechtDeMan@697 8 \usepackage{times}
BrechtDeMan@697 9 \usepackage{ifpdf}
BrechtDeMan@697 10 \usepackage[english]{babel}
BrechtDeMan@697 11 \usepackage{cite}
BrechtDeMan@697 12
BrechtDeMan@697 13 %%%%%%%%%%%%%%%%%%%%%%%% Some useful packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
BrechtDeMan@697 14 %%%%%%%%%%%%%%%%%%%%%%%% See related documentation %%%%%%%%%%%%%%%%%%%%%%%%%%
BrechtDeMan@697 15 %\usepackage{amsmath} % popular packages from Am. Math. Soc. Please use the
BrechtDeMan@697 16 %\usepackage{amssymb} % related math environments (split, subequation, cases,
BrechtDeMan@697 17 %\usepackage{amsfonts}% multline, etc.)
BrechtDeMan@697 18 %\usepackage{bm} % Bold Math package, defines the command \bf{}
BrechtDeMan@697 19 %\usepackage{paralist}% extended list environments
BrechtDeMan@697 20 %%subfig.sty is the modern replacement for subfigure.sty. However, subfig.sty
BrechtDeMan@697 21 %%requires and automatically loads caption.sty which overrides class handling
BrechtDeMan@697 22 %%of captions. To prevent this problem, preload caption.sty with caption=false
BrechtDeMan@697 23 %\usepackage[caption=false]{caption}
BrechtDeMan@697 24 %\usepackage[font=footnotesize]{subfig}
BrechtDeMan@697 25
BrechtDeMan@697 26
BrechtDeMan@697 27 %user defined variables
BrechtDeMan@702 28 \def\papertitle{APE FOR WEB: A BROWSER-BASED EVALUATION TOOL FOR AUDIO} %?
BrechtDeMan@702 29 \def\firstauthor{Nicholas Jillings}
BrechtDeMan@702 30 \def\secondauthor{Brecht De Man}
BrechtDeMan@697 31 \def\thirdauthor{David Moffat}
BrechtDeMan@697 32 \def\fourthauthor{Joshua D. Reiss}
BrechtDeMan@697 33
BrechtDeMan@697 34 % adds the automatic
BrechtDeMan@697 35 % Saves a lot of ouptut space in PDF... after conversion with the distiller
BrechtDeMan@697 36 % Delete if you cannot get PS fonts working on your system.
BrechtDeMan@697 37
BrechtDeMan@697 38 % pdf-tex settings: detect automatically if run by latex or pdflatex
BrechtDeMan@697 39 \newif\ifpdf
BrechtDeMan@697 40 \ifx\pdfoutput\relax
BrechtDeMan@697 41 \else
BrechtDeMan@697 42 \ifcase\pdfoutput
BrechtDeMan@697 43 \pdffalse
BrechtDeMan@697 44 \else
BrechtDeMan@697 45 \pdftrue
BrechtDeMan@697 46 \fi
BrechtDeMan@697 47
BrechtDeMan@697 48 \ifpdf % compiling with pdflatex
BrechtDeMan@697 49 \usepackage[pdftex,
BrechtDeMan@697 50 pdftitle={\papertitle},
BrechtDeMan@697 51 pdfauthor={\firstauthor, \secondauthor, \thirdauthor},
BrechtDeMan@697 52 bookmarksnumbered, % use section numbers with bookmarks
BrechtDeMan@697 53 pdfstartview=XYZ % start with zoom=100% instead of full screen;
BrechtDeMan@697 54 % especially useful if working with a big screen :-)
BrechtDeMan@697 55 ]{hyperref}
BrechtDeMan@697 56 %\pdfcompresslevel=9
BrechtDeMan@697 57
BrechtDeMan@697 58 \usepackage[pdftex]{graphicx}
BrechtDeMan@697 59 % declare the path(s) where your graphic files are and their extensions so
BrechtDeMan@697 60 %you won't have to specify these with every instance of \includegraphics
BrechtDeMan@697 61 \graphicspath{{./figures/}}
BrechtDeMan@697 62 \DeclareGraphicsExtensions{.pdf,.jpeg,.png}
BrechtDeMan@697 63
BrechtDeMan@697 64 \usepackage[figure,table]{hypcap}
BrechtDeMan@697 65
BrechtDeMan@697 66 \else % compiling with latex
BrechtDeMan@697 67 \usepackage[dvips,
BrechtDeMan@697 68 bookmarksnumbered, % use section numbers with bookmarks
BrechtDeMan@697 69 pdfstartview=XYZ % start with zoom=100% instead of full screen
BrechtDeMan@697 70 ]{hyperref} % hyperrefs are active in the pdf file after conversion
BrechtDeMan@697 71
BrechtDeMan@697 72 \usepackage[dvips]{epsfig,graphicx}
BrechtDeMan@697 73 % declare the path(s) where your graphic files are and their extensions so
BrechtDeMan@697 74 %you won't have to specify these with every instance of \includegraphics
BrechtDeMan@697 75 \graphicspath{{./figures/}}
BrechtDeMan@697 76 \DeclareGraphicsExtensions{.eps}
BrechtDeMan@697 77
BrechtDeMan@697 78 \usepackage[figure,table]{hypcap}
BrechtDeMan@697 79 \fi
BrechtDeMan@697 80
BrechtDeMan@697 81 %setup the hyperref package - make the links black without a surrounding frame
BrechtDeMan@697 82 \hypersetup{
BrechtDeMan@697 83 colorlinks,%
BrechtDeMan@697 84 citecolor=black,%
BrechtDeMan@697 85 filecolor=black,%
BrechtDeMan@697 86 linkcolor=black,%
BrechtDeMan@697 87 urlcolor=black
BrechtDeMan@697 88 }
BrechtDeMan@697 89
BrechtDeMan@697 90
BrechtDeMan@697 91 % Title.
BrechtDeMan@697 92 % ------
BrechtDeMan@697 93 \title{\papertitle}
BrechtDeMan@697 94
BrechtDeMan@697 95 % Authors
BrechtDeMan@697 96 % Please note that submissions are NOT anonymous, therefore
BrechtDeMan@697 97 % authors' names have to be VISIBLE in your manuscript.
BrechtDeMan@697 98 %
BrechtDeMan@697 99 % Single address
BrechtDeMan@697 100 % To use with only one author or several with the same address
BrechtDeMan@697 101 % ---------------
BrechtDeMan@697 102 %\oneauthor
BrechtDeMan@697 103 % {\firstauthor} {Affiliation1 \\ %
BrechtDeMan@697 104 % {\tt \href{mailto:author1@smcnetwork.org}{author1@smcnetwork.org}}}
BrechtDeMan@697 105
BrechtDeMan@697 106 %Two addresses
BrechtDeMan@697 107 %--------------
BrechtDeMan@697 108 % \twoauthors
BrechtDeMan@697 109 % {\firstauthor} {Affiliation1 \\ %
BrechtDeMan@697 110 % {\tt \href{mailto:author1@smcnetwork.org}{author1@smcnetwork.org}}}
BrechtDeMan@697 111 % {\secondauthor} {Affiliation2 \\ %
BrechtDeMan@697 112 % {\tt \href{mailto:author2@smcnetwork.org}{author2@smcnetwork.org}}}
BrechtDeMan@697 113
BrechtDeMan@702 114
BrechtDeMan@702 115
BrechtDeMan@702 116 % FIX!!!
BrechtDeMan@697 117 \fourauthors
BrechtDeMan@697 118 {\firstauthor} {%Affiliation1 \\
BrechtDeMan@702 119 {\tt \href{mailto:b.deman@qmul.ac.uk}{n.g.r.jillings@se14.qmul.ac.uk, }}}
BrechtDeMan@697 120 {\secondauthor} {%Affiliation2\\ %
BrechtDeMan@702 121 {\tt \href{mailto:n.g.r.jillings@se14.qmul.ac.uk}{\{b.deman,}}}
BrechtDeMan@697 122 {\thirdauthor} {%Affiliation3\\ %
BrechtDeMan@702 123 {\tt \href{mailto:d.j.moffat@qmul.ac.uk}{d.j.moffat, }}}
BrechtDeMan@697 124 {\fourthauthor} {%Affiliation4\\ %
BrechtDeMan@702 125 {\tt \href{mailto:joshua.reiss@qmul.ac.uk}{joshua.reiss\}@qmul.ac.uk}}}
BrechtDeMan@697 126
BrechtDeMan@697 127 % ***************************************** the document starts here ***************
BrechtDeMan@697 128 \begin{document}
BrechtDeMan@697 129 %
BrechtDeMan@697 130 \capstartfalse
BrechtDeMan@697 131 \maketitle
BrechtDeMan@697 132 \capstarttrue
BrechtDeMan@697 133 %
BrechtDeMan@697 134 \begin{abstract}
BrechtDeMan@697 135 Place your abstract at the top left column on the first page.
BrechtDeMan@697 136 Please write about 150-200 words that specifically highlight the purpose of your work,
BrechtDeMan@697 137 its context, and provide a brief synopsis of your results.
BrechtDeMan@702 138 Avoid equations in this part.\\
BrechtDeMan@702 139 TOTAL PAPER: Minimum 4 pages, 6 preferred, max. 8 (6 for demos/posters)\\
BrechtDeMan@697 140 \end{abstract}
BrechtDeMan@697 141 %
BrechtDeMan@697 142
BrechtDeMan@697 143 \section{Introduction}\label{sec:introduction}
BrechtDeMan@697 144
BrechtDeMan@702 145 background (types of research where this type of perceptual evaluation of audio is relevant)\\
BrechtDeMan@702 146
BrechtDeMan@702 147 multiple stimulus perceptual evaluation (reference to Bech etc.)\\
BrechtDeMan@702 148
BrechtDeMan@702 149 prior work: \cite{deman2014b} in MATLAB, much less easy to deploy, and often stops working due to version updates \\
BrechtDeMan@702 150
BrechtDeMan@697 151 goal, what are we trying to do? \\
BrechtDeMan@697 152
BrechtDeMan@702 153 [Previously, due to limited functionality of HTML, ..., it was not possible to design this type of interfaces with such high quality audio... ]
BrechtDeMan@697 154
BrechtDeMan@697 155
BrechtDeMan@702 156 \section{Design considerations}\label{sec:designconsiderations}
BrechtDeMan@697 157
BrechtDeMan@702 158 We present a browser-based perceptual evaluation tool for audio that ... \\
BrechtDeMan@697 159
BrechtDeMan@702 160 see \cite{deman2014b}: requirements informed by research on music production (see my work and that of others' in the group), such as randomisation, playback of high quality audio, some degree of flexibility in terms of configuration, ... \\
BrechtDeMan@702 161
BrechtDeMan@702 162
BrechtDeMan@702 163 \section{Implementation}\label{sec:implementation}
n@704 164 %[Nick???]
BrechtDeMan@702 165
n@704 166 %section on overall architecture\\
BrechtDeMan@702 167
n@704 168 %section with overview of the structure of the input and output files, perhaps with graph or table
BrechtDeMan@702 169
n@704 170 The tool runs entirely inside the browser through the new HTML5 Web Audio API. The API is supported by most major web browsers (except Internet Explorer) and allows for constructing a chain of audio processing elements to produce a high quality, real time signal process to manipulate audio streams. The API supports multi-channel processing and has an accurate playback timer for precise scheduled playback control. The web audio API is controlled through the browser JavaScript and is therefore highly controllable. The Web Audio API processing is all controlled in a separate thread to the main JavaScript thread, meaning there is no blocking due to real time processing.
n@704 171
n@704 172 \subsection{Architecture}\label{sec:architecture}
n@704 173
n@704 174 The web tool itself is split into several files to operate:
n@704 175 \begin{itemize}
n@704 176 \item apeTool.html: The main index file to load the scripts, this is the file the browser must request to load
n@704 177 \item core.js: Contains functions and objects to manage the audio control, audio objects for testing and loading of files
n@704 178 \item ape.js: Parses setup files to create the interface as instructed, following the same style chain as the MATLAB APE Tool.
n@704 179 \end{itemize}
n@704 180
n@704 181 The HTML file loads the core.js file with it along with a few other ancillary files (such as the jQuery javascript extensions), the browser JavaScript begins to execute the on page instructions, which gives the URL of the test setup XML document (outlined in the next section). The core.js parses this document and executes the function in ape.js to build the web page with the given audio files. The reason for separating these two files is to allow for further interface designs (such as Mushra or A-B tests) to be used, which would still require the same underlying core functions outlined in core.js
n@704 182
n@704 183 The ape.js file has only two main functions: \texttt{loadInterface(xmlDoc)} and \texttt{interfaceXMLSave()}. The first function is called to build the interface once the setup document has been loaded. This includes creating the slider interface to rate the tracks and creating the comment boxes bellow. The bars in the slider ranking at the top of the page are randomly spaced. It also instructs the audio engine in the core.js to create the audio objects. The audio objects are custom built audio nodes built on the web audio API. They consist of a bufferSourceNode (a node which holds a buffer of audio samples for playback) and a gainNode. These are then connected to the audioEngine (itself a custom web audio node) containing a gainNode (where the various audio Objects connect to) for summation before passing the output to the destination Node, a fixed node created where the browser then passes the audio information to the system sound device.
n@704 184
n@704 185 When an audioObject is created, the URL of the audio sample to load is given to it. This is downloaded into the browser asynchronously using the XMLHttpRequest object. This allows for downloading of any file into the JavaScript environment for further processing. It is particularly useful for the web audio API because it supports downloading of files in their binary form, allowing a perfect copy. Once the asynchronous download is complete, the file is then decoded using the web audio API offline decoder. This uses the browser available decoding schemes to decode the audio files into raw float32 arrays, which are in-turn passed to the relevant audioObject bufferSourceNode for playback.
n@704 186
n@704 187 Browsers support various audio file formats and are not consistent in any format. One sure format that all browsers support is the WAV format. Although not a compact, web friendly format, most transport systems are of a high enough bandwidth this should not be a problem. However one problem is that of sample rate. On loading, the browser uses the sample rate assigned by the system sound device. The browser does not have the ability to request a different sound rate. Therefore the default operation when an audio file is loaded with a different sample rate to that of the system is to convert the sample rate. To provide a check for this, the desired sample rate can be supplied with the setup XML and checked against. If the sample rates do not match, a browser alert window is shown asking for the sample rate to be correctly adjusted. This happens before any loading or decoding of audio files. Only once the sample rates match will the system actually fetch any files, keeping down requests for the larger files until they are actually needed.
n@704 188
n@704 189 During playback, the playback nodes loop indefinitely until playback is stopped. The gain nodes in the audioObjects enable dynamic muting of nodes. When a bar in the sliding ranking is clicked, the audio engine mutes all audioObjects and un-mutes the clicked one. Therefore, if the audio samples are perfectly aligned up and of the same sample length, they will remain perfectly aligned with each other.
n@704 190
n@704 191 \subsection{Setup and Results Formats}\label{sec:setupresultsformats}
n@704 192
n@704 193 Setup and the results both use the common XML document format to outline the various parameters. The setup file contains all the information needed to initialise a test session. Several Nodes can be defined to outline the audio samples to use, questions to be asked and any pre- or post-test questions or instructions. Having one document to modify allows for quick manipulation in a 'human readable' form to create new tests, or adjust current ones, without needing to edit which web files.
n@704 194
n@704 195 The results file is dynamically generated by the interface upon clicking the submit button. There will be checks, depending on the setup file, to ensure that all tracks have been evaluated and their positions in the slider moved. The XML returned contains a node per audioObject and contains its rating in the slider and any comments written in its associated comment box. The rating returned is normalised to be within a integer range of 0 to 100. This normalises the pixel representation of different browser windows. If a window for instance is only 1280 wide, reporting its pixel position is not representative to a display with a width of 1920.
n@704 196
n@704 197 The results will also contain information collected by any defined pre/post questions. These are referenced against the setup XML by using the same ID as well as printing in the same question, so readable responses can be obtained. Future development will also evolve to include any session data, such as the browser the tool was used in, how long the test took and any other metrics. Currently the results files are downloaded on the user side of the browser as a .xml file to be manually returned. However the end goal is to allow the XML files to be submitted over the web to a receiving server to store them, allowing for automated collection.
n@704 198
n@704 199 Here is an example of the setup XML and the results XML:
n@704 200 % Should we include an Example of the input and output XML structure??
BrechtDeMan@702 201
BrechtDeMan@702 202 \section{Applications}\label{sec:applications} %?
BrechtDeMan@702 203
BrechtDeMan@702 204 discussion of use of this toolbox (possibly based on a quick mock test using my research data, to be repeated with a large number of participants and more data later)\\
BrechtDeMan@702 205
BrechtDeMan@702 206
BrechtDeMan@702 207 \section{Conclusions and future work}\label{sec:conclusions}
BrechtDeMan@702 208
BrechtDeMan@702 209 In this paper we have presented an approach to creating a browser-based listening test environment that can be used for a variety of types of perceptual evaluation of audio.
BrechtDeMan@702 210 Specifically, we discussed the use of the toolbox in the context of assessment of preference for different production practices, with identical source material.
BrechtDeMan@702 211 The purpose of this paper is to outline the design of this tool, to describe our implementation using basic HTML5 functionality, and to discuss design challenges and limitations of our approach. % or something
BrechtDeMan@702 212
BrechtDeMan@702 213 % future work
BrechtDeMan@702 214 Further work may include the development of other common test designs, such as [...], and [...]. In addition, [...].
BrechtDeMan@702 215
BrechtDeMan@702 216 ...
BrechtDeMan@702 217
BrechtDeMan@702 218 The source code of this tool can be found on \url{code.soundsoftware.ac.uk/projects/browserevaluationtool}.
BrechtDeMan@702 219
BrechtDeMan@702 220
BrechtDeMan@702 221 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
BrechtDeMan@702 222 %bibliography here
BrechtDeMan@702 223 \bibliography{smc2015template}
BrechtDeMan@702 224
BrechtDeMan@702 225
BrechtDeMan@702 226
BrechtDeMan@702 227 \end{document}
BrechtDeMan@702 228
BrechtDeMan@702 229
BrechtDeMan@702 230
BrechtDeMan@702 231 % RUBBISH
BrechtDeMan@697 232
BrechtDeMan@697 233 %\subsection{Equations}
BrechtDeMan@697 234 %Equations of importance,
BrechtDeMan@697 235 %or to which you refer later,
BrechtDeMan@697 236 %should be placed on separated lines and numbered.
BrechtDeMan@697 237 %The number should be on the right side, in parentheses.
BrechtDeMan@697 238 %\begin{equation}
BrechtDeMan@697 239 %E=mc^{2+\delta}.
BrechtDeMan@697 240 %\label{eq:Emc2}
BrechtDeMan@697 241 %\end{equation}
BrechtDeMan@697 242 %Refer to equations like so:
BrechtDeMan@697 243 %As (\ref{eq:Emc2}) shows,
BrechtDeMan@697 244 %I do not completely trust Special Relativity.
BrechtDeMan@697 245 %
BrechtDeMan@697 246 %\subsection{Figures, Tables and Captions}
BrechtDeMan@697 247 %\begin{table}[t]
BrechtDeMan@697 248 % \begin{center}
BrechtDeMan@697 249 % \begin{tabular}{|l|l|}
BrechtDeMan@697 250 % \hline
BrechtDeMan@697 251 % String value & Numeric value \\
BrechtDeMan@697 252 % \hline
BrechtDeMan@697 253 % Hej SMC & 2015 \\
BrechtDeMan@697 254 % \hline
BrechtDeMan@697 255 % \end{tabular}
BrechtDeMan@697 256 %\end{center}
BrechtDeMan@697 257 % \caption{Table captions should be placed below the table, exactly like this,
BrechtDeMan@697 258 % but using words different from these.}
BrechtDeMan@697 259 % \label{tab:example}
BrechtDeMan@697 260 %\end{table}
BrechtDeMan@697 261
BrechtDeMan@697 262 %\begin{figure}[t]
BrechtDeMan@697 263 %\figbox{
BrechtDeMan@697 264 %\subfloat[][]{\includegraphics[width=60mm]{figure}\label{fig:subfigex_a}}\\
BrechtDeMan@697 265 %\subfloat[][]{\includegraphics[width=80mm]{figure}\label{fig:subfigex_b}}
BrechtDeMan@697 266 %}
BrechtDeMan@697 267 %\caption{Here's an example using the subfig package.\label{fig:subfigex} }
BrechtDeMan@697 268 %\end{figure}
BrechtDeMan@697 269
BrechtDeMan@697 270
BrechtDeMan@702 271
BrechtDeMan@697 272
BrechtDeMan@697 273
BrechtDeMan@697 274 %\begin{acknowledgments}
BrechtDeMan@697 275 %You may acknowledge people, projects,
BrechtDeMan@697 276 %funding agencies, etc.
BrechtDeMan@697 277 %which can be included after the second-level heading
BrechtDeMan@697 278 %``Acknowledgments'' (with no numbering).
BrechtDeMan@697 279 %\end{acknowledgments}
BrechtDeMan@697 280