Apologies for not having a clue what forum to post this is in.
I'm in the process of writing some software to test the frequency response of my headphones using test tones, in response to what I found out in this thread.
My idea is to have the software play two tones of different pitches, one after the other. The user then has to respond with:
1) First tone is louder
2) Second tone is louder
3) Both tones are equal volume
4) No idea (probably not audible)
5) Play the tones again
When the user reports that one tone is louder than the other, the software will adjust the amplitude of one of the tones, making a guess such that the tones then appear to have the same amplitude.
The software will continue to play pairs of tones until it always gets "both tones are equal volume" at which point it will stop the test and save the results (possibly even make a graph..).
So....
Is this a good idea or is there a better way?
How many discrete frequencies should be used? I'm assuming the magical 12 per octave which gives 122 tones if we cover 20-20KHz.
I'm aware this may make the test quite long, so I could add a "save state" option so that the test wouldn't have to be completed in one session.
Should the tones played always be adjacent pairs, a set distance apart or a variable distance?
If the latter, any guidelines?
I think some distance should be used to prevent "rounding errors" accumulating.
Would it be enough to simply choose one (or a few) frequencies and compare this with all others?
This would reduce the complexity and duration of the test somewhat.
Is it better to randomly move around the frequency spectrum or for example, start with low frequencies and systematically work up to the higher frequencies?
How should the software guess the difference in amplitude between the tones? e.g. keep adding/removing 6db until the user response is inverted then remove/add 3db etc?
When does the test stop? When every frequency has been reported equal to some other frequency once? Twice?