(Doo doo doo duhduh doo doo, doo doo doo duhduh doo doo)
Apologies for the lack of updates, I fear I have little to report since completing my batch two testing.
I’m now slap bang in the middle of exam period and tensions are running high, I believe I have now finished all the Pure Data/Matlab -ing and with only a week until submission it’s a good thing!
I’m currently chipping away at the remaining third of the report I still need to write, and I’m sure before the end I will have to revisit Matlab to re-export some graphs with different font sizes or resolutions…
The end is so close that I can taste it.
Well, to an extent.
I have finally completed the batch two testing! And at first glance I can say it was a success. All participants were able to locate the correct sources and overall feedback was very positive.
I now have to create some meaningful means of displaying the data collected, asides from averaging the times taken I would like to have a play with the controller data I collected, perhaps plotting an average navigation path?
Well, once more unto Matlab, dear friends.
The last six days have been stress filled to say the least, but today has proved fruitful.
Allow me to begin by stating what may seem obvious to most: there are 360 degrees on a circle, not 720, no matter how hard to try to stretch it.
Upon solving the original issue of the reversed focal position as mentioned in my previous post, I was greeted by an underlying issue that had been disguised by my mistake in angle corrections. When my supervisor (Ben) and I had discussed the ‘architecture’ of the spatialisation of sources, we had envisioned a 720 degree ‘mobius loop’ scenario, in which the user adjusted the location of a single source to which other sources were offset by 60 degree increments. This idea took advantage of the fact that the binaural filter in the system only auralises a source given a valid (0 – 360 degrees) angle of azimuth, essentially meaning that only one 360 degree segment or ‘circle’s worth’ of sources would be audible at any one time. With the user focal point being reversed i.e. facing 180 degrees erroneously this idea worked well, however once I was able to correct the focal point reversal I was privileged enough to experience the unpleasant and disorienting popping in and out of existence of the sources as they passed 0 or 360 degrees.
Thus began the mad panic of the weekend in which I repeatedly knocked my head against different ways of correcting for this problem. The most promising idea I had was to adapt the 720 degrees on a circle idea and turn it into the 360 degrees on a circle that look like 720 degrees if you squint and tilt your head idea. I tried to achieve this using a mathemetical function to ‘warp’ the source locations so that they would be spread as I wanted in the front of the circle whilst bunching together in the ‘quiet zone’ located at the rear of the circle, this proved far more difficult than I had hoped: Many an ‘if’ statement later I was still no closer to a viable solution so late this morning I met with my supervisor and I presented the problem to him far better than I could in my e-mail on friday.
After a short discussion my supervisor offered an alternative concept, a concept that was very similar to my own 360 degrees that look like 720 degrees idea but with one critical innovation, an innovation that had escaped me whilst I sat staring at my screen trying to salvage what had already been done. That innovation was…drumroll please …sampling, well the term being banded around during the discussion was actually transfer function, but in my head sampling describes the process better. Separating the original mobius loop idea into two separate circles, one that contained all the sources positioned equally around the circumference and one that acted as the display area itself, with the intention of mapping (or sampling) a portion of the source locations circle to the binaural display circle at any one time.
Over the course of the afternoon I have been able to implement this architecture successfully, although it wasn’t without it’s difficulties. Firstly I had problems attempting to ‘sample’ the top half of the locations circle (centred around 0 degrees), trying to filter values by two independent ranges of 0-90 and 270-360 was tricky to say the least and also led to the need of a rather complex transfer function. In frustration I pushed my book away from me and accidentally stumbled upon an epiphany: why don’t I use the left hand side of the circle? If I instead filter the location values using a single criteria, a ‘less than 180’ statement I can obtain half of the circle with much less hassle, I can also implement a trivially easy transfer function simply by multiplying by a factor of 2. I proceeded with this idea and found ultimately that it suffered one of the same problems as the original design, a problem I had tried so hard to avoid, sources popped in and out of existence at 0/360 degrees i.e. the focal point of the display. This time things were different though, and by taking advantage of the inherent ambiguity between the source location circle and the binaural display circle I allowed myself to simply add a 90 degree offset to the transfer function, though hard to explain why this works without pointing at pictured of circles, this serves to ‘shift’ the focal point of the display to 90 degrees on the locations circle whilst maintaining a 0 degree focus on the binaural circle, this new locations circle focal point falls exactly in the middle of the ‘sample’ range and subsequently causes sources to pop in and out of existence at 180 relative to the focal point of the binaural circle. Perfect!
And here it is after today’s efforts, surprisingly looking neater than previous iterations:
So after an unforeseen diversion I am now quickly heading back towards my batch two subjective testing, which I plan to conduct over Weds, Thurs, Fri of this week.
Heading forward with a much renewed positive attitude!
My tests are currently on hold until I can resolve a rather serious bug in the system architecture.
The incompatibility between the expected values of the gain function and the expected values of the binaural filter is giving me some real trouble. Whereas I had previously thought the simple act of subtracting 180 from the angle of azimuth for each source had solved the problem I know realise that the effective ‘focal’ position is in fact directly behind the user’s head. This of course is not correct, and I am currently grappling with possible solutions, none of which have worked, in fact several have created other problems related to the “720 degrees on a circle” design of the interface.
I still have every intention of finishing the testing within the easter break, which means that I need to fix this before Monday…
Wish me luck!
…
Well it admittedly looks a total mess but this is nearly it, I am nearly finished! With just a couple of small tweaks left to make regarding audio file looping and some position tracking adjustments it will be ready to test.
For batch two testing I have settled on two main methods of data collection; one objectively measured, and the other subjectively measured. During the test the application will log the position of the controls on the user interface as well as the time taken to complete the test. This will be followed by a short feedback questionnaire regarding the ‘usability’ of the interface.
My short term goals are to complete the application and design the questionnaire to be ready to begin testing during the first week of the easter break.
Questionnaire research, GO!
Having had a chance to analyse the results of my first batch of subjective tests a number of things have become evident. One of these things is that in future subjective test scenarios (Batch Two) I need to be more careful to avoid ambiguities and over reliance on a subjects ability to perform an unusual and demanding task.
I had originally planned to utilise the angle of error as an objective measure indicating how well each source could be localised when presented concurrently in certain scenarios, however upon reviewing the results I am unable to, with any real certainty, match up the perceived angles to the corresponding true angle for each source. Luckily I had also introduced other measurement criteria including the total number of perceived sources for each scenario, and the number of repeats of each scenario for every subject.
Some basic analysis of these criteria yield the following two plots :
These plots clearly illustrate a seemingly exponential increase in the number of perceived sources error as well as ‘difficulty’ as more sources are introduced.
The main conclusion to take forward into the next stage of testing and the completed application is as desired: the optimum number of sources to be observed simultaneously.
With regards to project progression my immediate goals are to refine the application format and prepare a ‘finished’ version to be used in the second batch of tests, also to design the method for these tests in much greater detail.
Well another month has passed at a rather alarming rate, but it has not been without it’s fair share of molehills and subsequently mountains. Since the last post my project time has been devoted entirely to batch one subjective testing, the goal of which is to identify several parameters for the final ‘application’ including an optimum number of concurrent sources, and a rough minimum angle of source separation.
The biggest difficulty during the testing process has been finding a suitable testing space and willing participants, as is to be expected. Due to this difficulty I am now slightly behind on my original project plan, though I feel this will be rectifiable during the data analysis process looking towards batch two testing.
My immediate goal is to complete the data analysis stage in the next week or so, starting with the measuring of approximately 510 angles…on paper…using a protractor.
Wish me luck.
The last week has been dedicated to refining the method of the batch one subjective tests.
I’m currently grappling with a preset system called ‘ezpst’, a third party set of objects that allow me to define patch presets in which special objects will take on a stored value. I’m using it to store both the positions and wav file IDs for each of the ten testing scenarios.
Next big job is going to be rounding up some test participants…
This post is somewhat overdue; I must admit that the December onslaught of assessments and guilt driven family outings got the better of me, and this blog was unfortunately the first to suffer.
So here I am at the end of semester one, or to be more accurate five days into semester two, and the system architecture is firmly in place, albeit constantly under modification/improvement. The ‘application’ is mostly built the only remaining issues relate to the choice of how many concurrent sources to be used, which is the focus of the first batch of subjective testing I aim to undertake this coming week.
The following slides better sum up my progress in semester one:
My current short term goals are to meet with my project supervisor to iron out some small issues with the batch one subjective testing and conduct the testing within the next 7-10 days, whilst also continuing with the report writing.