annotate docs/Instructions/Instructions.tex @ 1402:1de4c0257fa4

Updated demo project, with some added explanations, and no enforced sampling rate. Shows bugs though, at least in this branch.
author Brecht De Man <b.deman@qmul.ac.uk>
date Tue, 08 Dec 2015 12:18:06 +0100
parents
children 2bbf813c0e61
rev   line source
b@1402 1 \documentclass[11pt, oneside]{article} % use "amsart" instead of "article" for AMSLaTeX format
b@1402 2 \usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots.
b@1402 3 \geometry{letterpaper} % ... or a4paper or a5paper or ...
b@1402 4 %\geometry{landscape} % Activate for rotated page geometry
b@1402 5 \usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent
b@1402 6 \usepackage{graphicx} % Use pdf, png, jpg, or eps§ with pdflatex; use eps in DVI mode
b@1402 7 % TeX will automatically convert eps --> pdf in pdflatex
b@1402 8
b@1402 9 \usepackage{listings} % Source code
b@1402 10 \usepackage{amssymb}
b@1402 11 \usepackage{cite}
b@1402 12 \usepackage{hyperref} % Hyperlinks
b@1402 13 \usepackage[nottoc,numbib]{tocbibind} % 'References' in TOC
b@1402 14
b@1402 15 \graphicspath{{img/}} % Relative path where the images are stored.
b@1402 16
b@1402 17 \title{Instructions for \\ Web Audio Evaluation Tool}
b@1402 18 \author{Nicholas Jillings, Brecht De Man and David Moffat}
b@1402 19 \date{7 December 2015} % Activate to display a given date or no date
b@1402 20
b@1402 21 \begin{document}
b@1402 22 \maketitle
b@1402 23
b@1402 24 These instructions are about use of the Web Audio Evaluation Tool \cite{waet} on Windows and Mac OS X platforms.
b@1402 25 % TO DO: Linux
b@1402 26
b@1402 27 \tableofcontents
b@1402 28
b@1402 29 \clearpage
b@1402 30
b@1402 31 \section{Installation}
b@1402 32 Download the folder (\url{https://code.soundsoftware.ac.uk/hg/webaudioevaluationtool/archive/tip.zip}) and unzip in a location of your choice.
b@1402 33
b@1402 34 \subsection{Contents}
b@1402 35 The folder should contain the following elements: \\
b@1402 36
b@1402 37 \textbf{Main folder:}
b@1402 38 \begin{itemize}
b@1402 39 \item \texttt{analyse.html}: analysis and diagnostics of a set of result XML files
b@1402 40 \item \texttt{ape.css, core.css, graphics.css, mushra.css, structure.css}: style files (edit to change appearance)
b@1402 41 \item \texttt{ape.js}: JavaScript file for APE-style interface \cite{ape}
b@1402 42 \item \texttt{mushra.js}: JavaScript file for MUSHRA-style interface \cite{mushra}
b@1402 43 \item \texttt{CITING.txt, LICENSE.txt, README.txt}: text files with, respectively, the citation which we ask to include in any work where this tool or any portion thereof is used, modified or otherwise; the license under which the software is shared; and a general readme file.
b@1402 44 \item \texttt{core.js}: JavaScript file with core functionality
b@1402 45 \item \texttt{index.html}: webpage where interface should appear (includes link to test configuration XML)
b@1402 46 \item \texttt{jquery-2.1.4.js}: jQuery JavaScript Library
b@1402 47 \item \texttt{pythonServer.py}: webserver for running tests locally
b@1402 48 \item \texttt{pythonServer-legacy.py}: webserver with limited functionality (no automatic storing of output XML files)
b@1402 49 \item \texttt{save.php}: PHP script to store result XML files to web server\\
b@1402 50 \end{itemize}
b@1402 51 \textbf{Documentation (./docs/)}
b@1402 52 \begin{itemize}
b@1402 53 \item Instructions: PDF and \LaTeX source of these instructions
b@1402 54 \item Project Specification Document (\LaTeX/PDF)
b@1402 55 \item Results Specification Document (\LaTeX/PDF)
b@1402 56 \item SMC15: PDF and \LaTeX source of corresponding SMC2015 publication \cite{waet}
b@1402 57 \item WAC2016: PDF and \LaTeX source of corresponding WAC2016 publication\\
b@1402 58 \end{itemize}
b@1402 59 \textbf{Example project (./example\_eval/)}
b@1402 60 \begin{itemize}
b@1402 61 \item An example of what the set up XML should look like, with example audio files 0.wav-10.wav which are short recordings at 44.1kHz, 16bit of a woman saying the corresponding number (useful for testing randomisation and general familiarisation with the interface).\\
b@1402 62 \end{itemize}
b@1402 63 \textbf{Output files (./saves/)}
b@1402 64 \begin{itemize}
b@1402 65 \item The output XML files of tests will be stored here by default by the \texttt{pythonServer.py} script.\\
b@1402 66 \end{itemize}
b@1402 67 \textbf{Auxiliary scripts (./scripts/)}
b@1402 68 \begin{itemize}
b@1402 69 \item Helpful Python scripts for extraction and visualisation of data.\\
b@1402 70 \end{itemize}
b@1402 71 \textbf{Test creation tool (./test\_create/)}
b@1402 72 \begin{itemize}
b@1402 73 \item Webpage for easily setting up your own test without having to delve into the XML.\\
b@1402 74 \end{itemize}
b@1402 75
b@1402 76 \subsection{Browser}
b@1402 77 As Microsoft Internet Explorer doesn't support the Web Audio API\footnote{\url{http://caniuse.com/\#feat=audio-api}}, you will need another browser like Google Chrome, Safari or Firefox (all three are tested and confirmed to work).
b@1402 78
b@1402 79 The tool is platform-independent and works in any browser that supports the Web Audio API. It does not require any specific, proprietary software. However, in case the tool is hosted locally (i.e. you are not hosting it on an actual webserver) you will need Python (2.7), which is a free programming language - see the next paragraph.
b@1402 80
b@1402 81
b@1402 82 \clearpage
b@1402 83
b@1402 84 \section{Test setup}
b@1402 85
b@1402 86 \subsection{Sample rate}
b@1402 87 Depending on how the experiment is set up, audio is resampled automatically (the Web Audio default) or the sample rate is enforced. In the latter case, you will need to make sure that the sample rate of the system is equal to the sample rate of these audio files. For this reason, all audio files in the experiment will have to have the same sample rate.
b@1402 88
b@1402 89 Always make sure that all other digital equipment in the playback chain (clock, audio interface, digital-to-analog converter, ...) is set to this same sample rate.
b@1402 90
b@1402 91 Note that upon changing the sampling rate, the browser will have to be restarted for the change to take effect.
b@1402 92
b@1402 93 \subsubsection{Mac OS X}
b@1402 94 To change the sample rate in Mac OS X, go to \textbf{Applications/Utilities/Audio MIDI Setup} or find this application with Spotlight (see Figure \ref{fig:audiomidisetup}). Then select the output of the audio interface you are using and change the `Format' to the appropriate number. Also make sure the bit depth and channel count are as desired.
b@1402 95 If you are using an external audio interface, you may have to go to the preference pane of that device to change the sample rate.
b@1402 96
b@1402 97 Also make sure left and right channel gains are equal, as some applications alter this without changing it back, leading to a predominantly louder left or right channel. See Figure \ref{fig:audiomidisetup} for an example where the channel gains are different.
b@1402 98
b@1402 99 \begin{figure}[tb]
b@1402 100 \centering
b@1402 101 \includegraphics[width=.65\textwidth]{img/audiomidisetup.png}
b@1402 102 \caption{The Audio MIDI Setup window in Mac OS X}
b@1402 103 \label{fig:audiomidisetup}
b@1402 104 \end{figure}
b@1402 105
b@1402 106 \subsubsection{Windows}
b@1402 107 To change the sample rate in Windows, right-click on the speaker icon in the lower-right corner of your desktop and choose `Playback devices'. Right-click the appropriate playback device and click `Properties'. Click the `Advanced' tab and verify or change the sample rate under `Default Format'. % NEEDS CONFIRMATION
b@1402 108 If you are using an external audio interface, you may have to go to the preference pane of that device to change the sample rate.
b@1402 109
b@1402 110 \subsection{Local test}
b@1402 111 If the test is hosted locally, you will need to run the local webserver provided with this tool.
b@1402 112
b@1402 113 \subsubsection{Mac OS X}
b@1402 114
b@1402 115 On Mac OS X, Python comes preinstalled.
b@1402 116
b@1402 117 Open the Terminal (find it in \textbf{Applications/Terminal} or via Spotlight), and go to the folder you downloaded. To do this, type \texttt{cd [folder]}, where \texttt{[folder]} is the folder where to find the \texttt{pythonServer.py} script you downloaded. For instance, if the location is \texttt{/Users/John/Documents/test/}, then type
b@1402 118
b@1402 119 \texttt{cd /Users/John/Documents/test/}
b@1402 120
b@1402 121 Then hit enter and run the Python script by typing
b@1402 122
b@1402 123 \texttt{python pythonServer.py}
b@1402 124
b@1402 125 and hit enter again. See also Figure \ref{fig:terminal}.
b@1402 126
b@1402 127 \begin{figure}[htbp]
b@1402 128 \begin{center}
b@1402 129 \includegraphics[width=.75\textwidth]{pythonServer.png}
b@1402 130 \caption{Mac OS X: The Terminal window after going to the right folder (\texttt{cd [folder\_path]}) and running \texttt{pythonServer.py}.}
b@1402 131 \label{fig:terminal}
b@1402 132 \end{center}
b@1402 133 \end{figure}
b@1402 134
b@1402 135 Alternatively, you can simply type \texttt{python} (follwed by a space) and drag the file into the Terminal window from Finder. % DOESN'T WORK YET
b@1402 136
b@1402 137 You can leave this running throughout the different experiments (i.e. leave the Terminal open).
b@1402 138
b@1402 139 To start the test, open the browser and type
b@1402 140
b@1402 141 \texttt{localhost:8000}
b@1402 142
b@1402 143 and hit enter. The test should start (see Figure \ref{fig:test}).
b@1402 144
b@1402 145 To quit the server, either close the terminal window or press Ctrl+C on your keyboard to forcibly shut the server.
b@1402 146
b@1402 147 \subsubsection{Windows}
b@1402 148
b@1402 149 On Windows, Python 2.7 is not generally preinstalled and therefore has to be downloaded\footnote{\url{https://www.python.org/downloads/windows/}} and installed to be able to run scripts such as the local webserver, necessary if the tool is hosted locally.
b@1402 150
b@1402 151 Simply double click the Python script \texttt{pythonServer.py} in the folder you downloaded.
b@1402 152
b@1402 153 You may see a warning like the one in Figure \ref{fig:warning}. Click `Allow access'.
b@1402 154
b@1402 155 \begin{figure}[htbp]
b@1402 156 \begin{center}
b@1402 157 \includegraphics[width=.6\textwidth]{warning.png}
b@1402 158 \caption{Windows: Potential warning message when executing \texttt{pythonServer.py}.}
b@1402 159 \label{fig:warning}
b@1402 160 \end{center}
b@1402 161 \end{figure}
b@1402 162
b@1402 163 The process should now start, in the Command prompt that opens - see Figure \ref{fig:python}.
b@1402 164
b@1402 165 \begin{figure}[htbp]
b@1402 166 \begin{center}
b@1402 167 \includegraphics[width=.75\textwidth]{python.png}
b@1402 168 \caption{Windows: The Command Prompt after running \texttt{pythonServer.py} and opening the corresponding website.}
b@1402 169 \label{fig:python}
b@1402 170 \end{center}
b@1402 171 \end{figure}
b@1402 172
b@1402 173 You can leave this running throughout the different experiments (i.e. leave the Command Prompt open).
b@1402 174
b@1402 175 To start the test, open the browser and type
b@1402 176
b@1402 177 \texttt{localhost:8000}
b@1402 178
b@1402 179 and hit enter. The test should start (see Figure \ref{fig:test}).
b@1402 180
b@1402 181 \begin{figure}[htb]
b@1402 182 \begin{center}
b@1402 183 \includegraphics[width=.8\textwidth]{test.png}
b@1402 184 \caption{The start of the test in Google Chrome on Windows 7.}
b@1402 185 \label{fig:test}
b@1402 186 \end{center}
b@1402 187 \end{figure}
b@1402 188
b@1402 189 If at any point in the test the participant reports weird behaviour or an error of some kind, or the test needs to be interrupted, please notify the experimenter and/or refer to Section \ref{sec:troubleshooting}.
b@1402 190
b@1402 191 When the test is over (the subject should see a message to that effect, and click `Submit' one last time), the output XML file containing all collected data should have appeared in `saves/'. The names of these files are `test-0.xml', `test-1.xml', etc., in ascending order. The Terminal or Command prompt running the local web server will display the following file name. If such a file did not appear, please again refer to Section \ref{sec:troubleshooting}.
b@1402 192
b@1402 193 It is advised that you back up these results as often as possible, as a loss of this data means that the time and effort spent by the subject(s) has been in vain. Save the results to an external or network drive, and/or send them to the experimenter regularly.
b@1402 194
b@1402 195 To start the test again for a new participant, you do not need to close the browser or shut down the Terminal or Command Prompt. Simply refresh the page or go to \texttt{localhost:8000} again.
b@1402 196
b@1402 197
b@1402 198 \subsection{Remote test}
b@1402 199 Put all files on a web server which supports PHP. This allows the `save.php' script to store the XML result files in the `saves/' folder. If the web server is not able to store the XML file there at the end of the test, it will present the XML file locally to the user, as a `Save file' link.
b@1402 200
b@1402 201 \clearpage
b@1402 202
b@1402 203
b@1402 204 \section{Using the test create tool}
b@1402 205 We provide a test creation tool, available in the directory test\_create. This tool is a self-contained web page, so doubling clicking will launch the page in your system default browser.
b@1402 206
b@1402 207 The test creation tool can help you build a simple test very quickly. By simply selecting your interface and clicking check-boxes you can build a test in minutes.
b@1402 208
b@1402 209 Include audio by dragging and dropping the stimuli you wish to include.
b@1402 210
b@1402 211 The tool examines your XML before exporting to ensure you do not export an invalid XML structure which would crash the test.
b@1402 212
b@1402 213 This guide will help you to construct your own interface on top of the WAET (Web Audio Evaluation Tool) engine. The WAET engine resides in the core.js file, this contains prototype objects to handle most of the test creation, operation and data collection. The interface simply has to link into this at the correct points.
b@1402 214
b@1402 215 \subsection{Nodes to familiarise}
b@1402 216 Core.js handles several very important nodes which you should become familiar with. The first is the Audio Engine, initialised and stored in variable `AudioEngineContext'. This handles the playback of the web audio nodes as well as storing the `AudioObjects'. The `AudioObjects' are custom nodes which hold the audio fragments for playback. These nodes also have a link to two interface objects, the comment box if enabled and the interface providing the ranking. On creation of an `AudioObject' the interface link will be nulled, it is up to the interface to link these correctly.
b@1402 217
b@1402 218 The specification document will be decoded and parsed into an object called `specification'. This will hold all of the specifications various nodes. The test pages and any pre/post test objects are processed by a test state which will proceed through the test when called to by the interface. Any checks (such as playback or movement checks) are to be completed by the interface before instructing the test state to proceed. The test state will call the interface on each page load with the page specification node.
b@1402 219
b@1402 220 \subsection{Modifying \texttt{core.js}}
b@1402 221 Whilst there is very little code actually needed, you do need to instruct core.js to load your interface file when called for from a specification node. There is a function called `loadProjectSpecCallback' which handles the decoding of the specification and setting any external items (such as metric collection). At the very end of this function there is an if statement, add to this list with your interface string to link to the source. There is an example in there for both the APE and MUSHRA tests already included. Note: Any updates to core.js in future work will most likely overwrite your changes to this file, so remember to check your interface is still here after any update that interferes with core.js.
b@1402 222 Any further files can be loaded here as well, such as css styling files. jQuery is already included.
b@1402 223
b@1402 224 \subsection{Building the Interface}
b@1402 225 Your interface file will get loaded automatically when the `interface' attribute of the setup node matches the string in the `loadProjectSpecCallback' function. The following functions must be defined in your interface file.
b@1402 226 \begin{itemize}
b@1402 227 \item \texttt{loadInterface} - Called once when the document is parsed. This creates any necessary bindings, such as to the metric collection classes and any check commands. Here you can also start the structure for your test such as placing in any common nodes (such as the title and empty divs to drop content into later).
b@1402 228 \item \texttt{loadTest(audioHolderObject)} - Called for each page load. The audioHolderObject contains a specification node holding effectively one of the audioHolder nodes.
b@1402 229 \item \texttt{resizeWindow(event)} - Handle for any window resizing. Simply scale your interface accordingly. This function must be here, but can me an empty function call.
b@1402 230 \end{itemize}
b@1402 231
b@1402 232 \subsubsection{loadInterface}
b@1402 233 This function is called by the interface once the document has been parsed since some browsers may parse files asynchronously. The best method is simply to put `loadInterface()' at the top of your interface file, therefore when the JavaScript engine is ready the function is called.
b@1402 234
b@1402 235 By default the HTML file has an element with id ``topLevelBody'' where you can build your interface. Make sure you blank the contents of that object. This function is the perfect time to build any fixed items, such as the page title, session titles, interface buttons (Start, Stop, Submit) and any holding and structure elements for later on.
b@1402 236
b@1402 237 At the end of the function, insert these two function calls: testState.initialise() and testState.advanceState();. This will actually begin the test sequence, including the pre-test options (if any are included in the specification document).
b@1402 238
b@1402 239 \subsubsection{loadTest(audioHolderObject)}
b@1402 240 This function is called on each new test page. It is this functions job to clear out the previous test and set up the new page. Use the function audioEngineContext.newTestPage(); to instruct the audio engine to prepare for a new page. ``audioEngineContext.audioObjects = [];'' will delete any audioObjects, interfaceContext.deleteCommentBoxes(); will delete any comment boxes and interfaceContext.deleteCommentQuestions(); will delete any extra comment boxes specified by commentQuestion nodes.
b@1402 241
b@1402 242 This function will need to instruct the audio engine to build each fragment. Just passing the constructor each element from the audioHolderObject will build the track, audioEngineContext.newTrack(element) (where element is the audioHolderObject audio element). This will return a reference to the constructed audioObject. Decoding of the audio will happen asynchronously.
b@1402 243
b@1402 244 You also need to link audioObject.interfaceDOM with your interface object for that audioObject. The interfaceDOM object has a few default methods. Firstly it must start disabled and become enabled once the audioObject has decoded the audio (function call: enable()). Next it must have a function exportXMLDOM(), this will return the xml node for your interface, however the default is for it to return a value node, with textContent equal to the normalised value. You can perform other functions, but our scripts may not work if something different is specified (as it will breach our results specifications). Finally it must also have a method getValue, which returns the normalised value.
b@1402 245
b@1402 246 It is also the job the interfaceDOM to call any metric collection functions necessary, however some functions may be better placed outside (for example, the APE interface uses drag and drop, therefore the best way was to call the metric functions from the dragEnd function, which is called when the interface object is dropped). Metrics based upon listening are handled by the audioObject. The interfaceDOM object must manage any movement metrics. For a list of valid metrics and their behaviours, look at the project specification document included in the repository/docs location. The same goes for any checks required when pressing the submit button, or any other method to proceed the test state.
b@1402 247
b@1402 248
b@1402 249
b@1402 250 \clearpage
b@1402 251 \section{Troubleshooting} \label{sec:troubleshooting}
b@1402 252 Thanks to feedback from using the interface in experiments by the authors and others, many bugs have been caught and fatal crashes due to the interface (provided it is set up properly by the user) seem to be a thing of the past.
b@1402 253
b@1402 254 However, if things do go wrong or the test needs to be interrupted for whatever reason, all data is not lost. In a normal scenario, the test needs to be completed until the end (the final `Submit'), at which point the output XML is stored in the \texttt{saves/}. If this stage is not reached, open the JavaScript Console (see below for how to find it) and type
b@1402 255
b@1402 256 \texttt{createProjectSave()}
b@1402 257
b@1402 258 for a local test or % ???
b@1402 259
b@1402 260 \texttt{createProjectSave(specification.projectReturn)}
b@1402 261
b@1402 262 for a remote test
b@1402 263
b@1402 264 and hit enter. This will open a pop-up window with a hyperlink that reads `Save File'; click it and an XML file with results until that point should be stored in your download folder.
b@1402 265
b@1402 266 Alternatively, a lot of data can be read from the same console, in which the tool prints a lot of debug information. Specifically:
b@1402 267 \begin{itemize}
b@1402 268 \item the randomisation of pages and fragments are logged;
b@1402 269 \item any time a slider is played, its ID and the time stamp (in seconds since the start of the test) are displayed;
b@1402 270 \item any time a slider is dragged and dropped, the location where it is dropped including the time stamp are shown;
b@1402 271 \item any comments and pre- or post-test questions and their answers are logged as well.
b@1402 272 \end{itemize}
b@1402 273
b@1402 274 You can select all this and save into a text file, so that none of this data is lost. You may to choose to do this even when a test was successful as an extra precaution.
b@1402 275
b@1402 276 If you encounter any issue which you believe to be caused by any aspect of the , or which the documentation does not mention, please do let us know!
b@1402 277
b@1402 278 \subsection{Opening the JavaScript Console}
b@1402 279 \begin{itemize}
b@1402 280 \item In Google Chrome, the JavaScript Console can be found in \textbf{View$>$Developer$>$JavaScript Console}, or via the keyboard shortcut Cmd + Alt + J (Mac OS X).
b@1402 281 \item In Safari, the JavaScript Console can be found in \textbf{Develop$>$Show Error Console}, or via the keyboard shortcut Cmd + Alt + C (Mac OS X). Note that for the Developer menu to be visible, you have to go to Preferences (Cmd + ,) and enable `Show Develop menu in menu bar' in the `Advanced' tab. \textbf{Note that as long as the Developer menu is not visible, nothing is logged to the console, i.e. you will only be able to see diagnostic information from when you switched on the Developer tools onwards.}
b@1402 282 \item In Firefox, go to \textbf{Tools$>$Web Developer$>$Web Console}, or hit Cmd + Alt + K.
b@1402 283 \end{itemize}
b@1402 284
b@1402 285 \clearpage
b@1402 286
b@1402 287 \section{Known issues and limitations}
b@1402 288 \label{sec:issues}
b@1402 289
b@1402 290 The following is a non-exhaustive list of problems and limitations you may experience using this tool, due to not being supported yet by us, or by the Web Audio API and/or (some) browsers.
b@1402 291
b@1402 292 \begin{itemize}
b@1402 293 \item Issue \href{https://code.soundsoftware.ac.uk/issues/1463}{\textbf{\#1463}}: \textbf{Firefox} only supports 8 bit and 16 bit WAV files. Pending automatic requantisation (which deteriorates the audio signal's dynamic range to some extent), WAV format stimuli need to adhere to these limitations in order for the test to be compatible with Firefox.
b@1402 294 \item Issues \href{https://code.soundsoftware.ac.uk/issues/1474}{\textbf{\#1474}} and \href{https://code.soundsoftware.ac.uk/issues/1462}{\textbf{\#1462}}: On occasions, audio is not working - or only a continuous `beep' can be heard - notably in \textbf{Safari}. Refreshing, quitting the browser and even enabling Developer tools in Safari's Preferences pane (`Advanced' tab: ``Show `Develop' menu in menu bar'') has helped resolve this. If no (high quality) audio can be heard, make sure your entire playback system's settings are all correct.
b@1402 295 \end{itemize}
b@1402 296
b@1402 297 \clearpage
b@1402 298 \bibliographystyle{ieeetr}
b@1402 299 \bibliography{Instructions}{}
b@1402 300
b@1402 301
b@1402 302 \clearpage
b@1402 303 \appendix
b@1402 304
b@1402 305 \section{Listening test instructions example}
b@1402 306
b@1402 307 Before each test, show the instructions below or similar and make sure it is available to the subject throughout the test. Make sure to ask whether the participant has any questions upon seeing and/or reading the instructions.
b@1402 308
b@1402 309 \begin{itemize}
b@1402 310 \item You will be asked for your name (``John Smith'') and location (room identifier).
b@1402 311 \item An interface will appear, where you are asked to
b@1402 312 \begin{itemize}
b@1402 313 \item click green markers to play the different mixes;
b@1402 314 \item drag the markers on a scale to reflect your preference for the mixes;
b@1402 315 \item comment on these mixes, using text boxes with corresponding numbers (in your \textbf{native language});
b@1402 316 \item optionally comment on all mixes together, or on the song, in `General comments'.
b@1402 317 \end{itemize}
b@1402 318 \item You are asked for your personal, honest opinion. Feel free to use the full range of the scale to convey your opinion of the various mixes. Don?t be afraid to be harsh and direct.
b@1402 319 \item The markers appear at random positions at first (which means some markers may hide behind others).
b@1402 320 \item The interface can take a few seconds to start playback, but switching between mixes should be instantaneous.
b@1402 321 \item This is a research experiment, so please forgive us if things go wrong. Let us know immediately and we will fix it or restart the test.
b@1402 322 \item When the test is finished (after all songs have been evaluated), just call the experimenter, do NOT close the window.
b@1402 323 \item After the test, please fill out our survey about your background, experience and feedback on the test.
b@1402 324 \item By participating, you consent to us using all collected data for research. Unless asked explicitly, all data will be anonymised when shared.
b@1402 325 \end{itemize}
b@1402 326
b@1402 327 \clearpage
b@1402 328
b@1402 329 \section*{Contact details}
b@1402 330 \label{sec:contact}
b@1402 331
b@1402 332 \begin{itemize}
b@1402 333 \item Nicholas Jillings: \texttt{nicholas.jillings@mail.bcu.ac.uk}
b@1402 334 \item Brecht De Man: \texttt{b.deman@qmul.ac.uk}
b@1402 335 \item David Moffat: \texttt{d.j.moffat@qmul.ac.uk}
b@1402 336 \end{itemize}
b@1402 337
b@1402 338 \end{document}