annotate docs/SMC15/smc2015template.tex @ 1973:9a77192620ad

Edit to project Spec Doc
author Dave Moffat <me@davemoffat.com>
date Thu, 09 Apr 2015 16:30:08 +0100
parents 422a31f65e70
children b95d1ede4c91
rev   line source
me@1972 1 % -----------------------------------------------
me@1972 2 % Template for SMC 2012
me@1972 3 % adapted from the template for SMC 2011, which was adapted from that of SMC 2010
me@1972 4 % -----------------------------------------------
me@1972 5
me@1972 6 \documentclass{article}
me@1972 7 \usepackage{smc2015}
me@1972 8 \usepackage{times}
me@1972 9 \usepackage{ifpdf}
me@1972 10 \usepackage[english]{babel}
me@1972 11 \usepackage{cite}
me@1972 12
me@1972 13 %%%%%%%%%%%%%%%%%%%%%%%% Some useful packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
me@1972 14 %%%%%%%%%%%%%%%%%%%%%%%% See related documentation %%%%%%%%%%%%%%%%%%%%%%%%%%
me@1972 15 %\usepackage{amsmath} % popular packages from Am. Math. Soc. Please use the
me@1972 16 %\usepackage{amssymb} % related math environments (split, subequation, cases,
me@1972 17 %\usepackage{amsfonts}% multline, etc.)
me@1972 18 %\usepackage{bm} % Bold Math package, defines the command \bf{}
me@1972 19 %\usepackage{paralist}% extended list environments
me@1972 20 %%subfig.sty is the modern replacement for subfigure.sty. However, subfig.sty
me@1972 21 %%requires and automatically loads caption.sty which overrides class handling
me@1972 22 %%of captions. To prevent this problem, preload caption.sty with caption=false
me@1972 23 %\usepackage[caption=false]{caption}
me@1972 24 %\usepackage[font=footnotesize]{subfig}
me@1972 25
me@1972 26
me@1972 27 %user defined variables
me@1973 28 \def\papertitle{APE FOR WEB: A BROWSER-BASED EVALUATION TOOL FOR AUDIO} %?
me@1973 29 \def\firstauthor{Nicholas Jillings}
me@1973 30 \def\secondauthor{Brecht De Man}
me@1972 31 \def\thirdauthor{David Moffat}
me@1972 32 \def\fourthauthor{Joshua D. Reiss}
me@1972 33
me@1972 34 % adds the automatic
me@1972 35 % Saves a lot of ouptut space in PDF... after conversion with the distiller
me@1972 36 % Delete if you cannot get PS fonts working on your system.
me@1972 37
me@1972 38 % pdf-tex settings: detect automatically if run by latex or pdflatex
me@1972 39 \newif\ifpdf
me@1972 40 \ifx\pdfoutput\relax
me@1972 41 \else
me@1972 42 \ifcase\pdfoutput
me@1972 43 \pdffalse
me@1972 44 \else
me@1972 45 \pdftrue
me@1972 46 \fi
me@1972 47
me@1972 48 \ifpdf % compiling with pdflatex
me@1972 49 \usepackage[pdftex,
me@1972 50 pdftitle={\papertitle},
me@1972 51 pdfauthor={\firstauthor, \secondauthor, \thirdauthor},
me@1972 52 bookmarksnumbered, % use section numbers with bookmarks
me@1972 53 pdfstartview=XYZ % start with zoom=100% instead of full screen;
me@1972 54 % especially useful if working with a big screen :-)
me@1972 55 ]{hyperref}
me@1972 56 %\pdfcompresslevel=9
me@1972 57
me@1972 58 \usepackage[pdftex]{graphicx}
me@1972 59 % declare the path(s) where your graphic files are and their extensions so
me@1972 60 %you won't have to specify these with every instance of \includegraphics
me@1972 61 \graphicspath{{./figures/}}
me@1972 62 \DeclareGraphicsExtensions{.pdf,.jpeg,.png}
me@1972 63
me@1972 64 \usepackage[figure,table]{hypcap}
me@1972 65
me@1972 66 \else % compiling with latex
me@1972 67 \usepackage[dvips,
me@1972 68 bookmarksnumbered, % use section numbers with bookmarks
me@1972 69 pdfstartview=XYZ % start with zoom=100% instead of full screen
me@1972 70 ]{hyperref} % hyperrefs are active in the pdf file after conversion
me@1972 71
me@1972 72 \usepackage[dvips]{epsfig,graphicx}
me@1972 73 % declare the path(s) where your graphic files are and their extensions so
me@1972 74 %you won't have to specify these with every instance of \includegraphics
me@1972 75 \graphicspath{{./figures/}}
me@1972 76 \DeclareGraphicsExtensions{.eps}
me@1972 77
me@1972 78 \usepackage[figure,table]{hypcap}
me@1972 79 \fi
me@1972 80
me@1972 81 %setup the hyperref package - make the links black without a surrounding frame
me@1972 82 \hypersetup{
me@1972 83 colorlinks,%
me@1972 84 citecolor=black,%
me@1972 85 filecolor=black,%
me@1972 86 linkcolor=black,%
me@1972 87 urlcolor=black
me@1972 88 }
me@1972 89
me@1972 90
me@1972 91 % Title.
me@1972 92 % ------
me@1972 93 \title{\papertitle}
me@1972 94
me@1972 95 % Authors
me@1972 96 % Please note that submissions are NOT anonymous, therefore
me@1972 97 % authors' names have to be VISIBLE in your manuscript.
me@1972 98 %
me@1972 99 % Single address
me@1972 100 % To use with only one author or several with the same address
me@1972 101 % ---------------
me@1972 102 %\oneauthor
me@1972 103 % {\firstauthor} {Affiliation1 \\ %
me@1972 104 % {\tt \href{mailto:author1@smcnetwork.org}{author1@smcnetwork.org}}}
me@1972 105
me@1972 106 %Two addresses
me@1972 107 %--------------
me@1972 108 % \twoauthors
me@1972 109 % {\firstauthor} {Affiliation1 \\ %
me@1972 110 % {\tt \href{mailto:author1@smcnetwork.org}{author1@smcnetwork.org}}}
me@1972 111 % {\secondauthor} {Affiliation2 \\ %
me@1972 112 % {\tt \href{mailto:author2@smcnetwork.org}{author2@smcnetwork.org}}}
me@1972 113
me@1973 114
me@1973 115
me@1973 116 % FIX!!!
me@1972 117 \fourauthors
me@1972 118 {\firstauthor} {%Affiliation1 \\
me@1973 119 {\tt \href{mailto:b.deman@qmul.ac.uk}{n.g.r.jillings@se14.qmul.ac.uk, }}}
me@1972 120 {\secondauthor} {%Affiliation2\\ %
me@1973 121 {\tt \href{mailto:n.g.r.jillings@se14.qmul.ac.uk}{\{b.deman,}}}
me@1972 122 {\thirdauthor} {%Affiliation3\\ %
me@1973 123 {\tt \href{mailto:d.j.moffat@qmul.ac.uk}{d.j.moffat, }}}
me@1972 124 {\fourthauthor} {%Affiliation4\\ %
me@1973 125 {\tt \href{mailto:joshua.reiss@qmul.ac.uk}{joshua.reiss\}@qmul.ac.uk}}}
me@1972 126
me@1972 127 % ***************************************** the document starts here ***************
me@1972 128 \begin{document}
me@1972 129 %
me@1972 130 \capstartfalse
me@1972 131 \maketitle
me@1972 132 \capstarttrue
me@1972 133 %
me@1972 134 \begin{abstract}
me@1972 135 Place your abstract at the top left column on the first page.
me@1972 136 Please write about 150-200 words that specifically highlight the purpose of your work,
me@1972 137 its context, and provide a brief synopsis of your results.
me@1973 138 Avoid equations in this part.\\
me@1973 139 TOTAL PAPER: Minimum 4 pages, 6 preferred, max. 8 (6 for demos/posters)\\
me@1972 140 \end{abstract}
me@1972 141 %
me@1972 142
me@1972 143 \section{Introduction}\label{sec:introduction}
me@1972 144
me@1973 145 background (types of research where this type of perceptual evaluation of audio is relevant)\\
me@1973 146
me@1973 147 multiple stimulus perceptual evaluation (reference to Bech etc.)\\
me@1973 148
me@1973 149 prior work: \cite{deman2014b} in MATLAB, much less easy to deploy, and often stops working due to version updates \\
me@1973 150
me@1972 151 goal, what are we trying to do? \\
me@1972 152
me@1973 153 [Previously, due to limited functionality of HTML, ..., it was not possible to design this type of interfaces with such high quality audio... ]
me@1972 154
me@1972 155
me@1973 156 \section{Design considerations}\label{sec:designconsiderations}
me@1972 157
me@1973 158 We present a browser-based perceptual evaluation tool for audio that ... \\
me@1972 159
me@1973 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, ... \\
me@1973 161
me@1973 162
me@1973 163 \section{Implementation}\label{sec:implementation}
me@1973 164 %[Nick???]
me@1973 165
me@1973 166 %section on overall architecture\\
me@1973 167
me@1973 168 %section with overview of the structure of the input and output files, perhaps with graph or table
me@1973 169
me@1973 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.
me@1973 171
me@1973 172 \subsection{Architecture}\label{sec:architecture}
me@1973 173
me@1973 174 The web tool itself is split into several files to operate:
me@1973 175 \begin{itemize}
me@1973 176 \item apeTool.html: The main index file to load the scripts, this is the file the browser must request to load
me@1973 177 \item core.js: Contains functions and objects to manage the audio control, audio objects for testing and loading of files
me@1973 178 \item ape.js: Parses setup files to create the interface as instructed, following the same style chain as the MATLAB APE Tool.
me@1973 179 \end{itemize}
me@1973 180
me@1973 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
me@1973 182
me@1973 183 The ape.js file has only two main functions: loadInterface(xmlDoc) and 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.
me@1973 184
me@1973 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.
me@1973 186
me@1973 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.
me@1973 188
me@1973 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.
me@1973 190
me@1973 191 \subsection{Setup and Results Formats}\label{sec:setupresultsformats}
me@1973 192
me@1973 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.
me@1973 194
me@1973 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.
me@1973 196
me@1973 197 The pre- and post-test options allow for comments or questions to be presented before or after the test. These are automatically generated based upon the given setup XML and allow nearly any form of question and comment to be included in a window on its own. Questions are stored and presented in the response section labelled 'pretest' and 'posttest' along with the question ID and its response. Questions can be made optionally mandatory. Example questions may involve entering mixing experience or listening environment.
me@1973 198
me@1973 199 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.
me@1973 200
me@1973 201 Here is an example of the setup XML and the results XML:
me@1973 202 % Should we include an Example of the input and output XML structure??
me@1973 203
me@1973 204 \section{Applications}\label{sec:applications} %?
me@1973 205
me@1973 206 \subsection{Listening Environment Standardisation}
me@1973 207
me@1973 208
me@1973 209 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)\\
me@1973 210
me@1973 211
me@1973 212 \section{Conclusions and future work}\label{sec:conclusions}
me@1973 213
me@1973 214 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.
me@1973 215 Specifically, we discussed the use of the toolbox in the context of assessment of preference for different production practices, with identical source material.
me@1973 216 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
me@1973 217
me@1973 218 % future work
me@1973 219 Further work may include the development of other common test designs, such as [...], and [...]. In addition, [...].
me@1973 220
me@1973 221 ...
me@1973 222
me@1973 223 The source code of this tool can be found on \url{code.soundsoftware.ac.uk/projects/browserevaluationtool}.
me@1973 224
me@1973 225
me@1973 226 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
me@1973 227 %bibliography here
me@1973 228 \bibliography{smc2015template}
me@1973 229
me@1973 230
me@1973 231
me@1973 232 \end{document}
me@1973 233
me@1973 234
me@1973 235
me@1973 236 % RUBBISH
me@1972 237
me@1972 238 %\subsection{Equations}
me@1972 239 %Equations of importance,
me@1972 240 %or to which you refer later,
me@1972 241 %should be placed on separated lines and numbered.
me@1972 242 %The number should be on the right side, in parentheses.
me@1972 243 %\begin{equation}
me@1972 244 %E=mc^{2+\delta}.
me@1972 245 %\label{eq:Emc2}
me@1972 246 %\end{equation}
me@1972 247 %Refer to equations like so:
me@1972 248 %As (\ref{eq:Emc2}) shows,
me@1972 249 %I do not completely trust Special Relativity.
me@1972 250 %
me@1972 251 %\subsection{Figures, Tables and Captions}
me@1972 252 %\begin{table}[t]
me@1972 253 % \begin{center}
me@1972 254 % \begin{tabular}{|l|l|}
me@1972 255 % \hline
me@1972 256 % String value & Numeric value \\
me@1972 257 % \hline
me@1972 258 % Hej SMC & 2015 \\
me@1972 259 % \hline
me@1972 260 % \end{tabular}
me@1972 261 %\end{center}
me@1972 262 % \caption{Table captions should be placed below the table, exactly like this,
me@1972 263 % but using words different from these.}
me@1972 264 % \label{tab:example}
me@1972 265 %\end{table}
me@1972 266
me@1972 267 %\begin{figure}[t]
me@1972 268 %\figbox{
me@1972 269 %\subfloat[][]{\includegraphics[width=60mm]{figure}\label{fig:subfigex_a}}\\
me@1972 270 %\subfloat[][]{\includegraphics[width=80mm]{figure}\label{fig:subfigex_b}}
me@1972 271 %}
me@1972 272 %\caption{Here's an example using the subfig package.\label{fig:subfigex} }
me@1972 273 %\end{figure}
me@1972 274
me@1972 275
me@1973 276
me@1972 277
me@1972 278
me@1972 279 %\begin{acknowledgments}
me@1972 280 %You may acknowledge people, projects,
me@1972 281 %funding agencies, etc.
me@1972 282 %which can be included after the second-level heading
me@1972 283 %``Acknowledgments'' (with no numbering).
me@1972 284 %\end{acknowledgments}
me@1972 285