annotate docs/SMC15/smc2015template.tex @ 1706:263884be0481

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