5

I'm making an experiment where I play pure tones of three different frequencies (220 Hz, 440 Hz, 880 Hz) at 75 dB SPL. I've noticed that they don't sound equally loud, and I would like them to. I found a number of webpages on equal loudness contours, but from the graphs it is still unclear to me by how much I should change the gain of the tones in order to make them appear subjectively equal (to the average listener).

I'm using a program called Presentation, which allows me to set an attenuation parameter to the tones. The attenuation parameter has the following description:

You can control the volume of a sound by setting the sound stimulus attenuation parameter. This parameter can have a value greater than or equal to zero with the following meaning.

Applied Attenuation = attenuation * 100 Db (Decibels)

If you do not define this parameter, the value of the default_attenuation header parameter will be used. If attenuation = 0, there is no attenuation and the sound will be played as it is given in the wave file. If attenuation = 1, the sound will be attenuated by 100 Db which effectively results in silence.

From this description I would not expect a linear relationship between the size of the attenuation parameter and perceived sound intensity changes... But I know very little about digital signal processing, so I'm not sure.

Could anybody point me to some references where I could find a solution to my problem? Or better yet, solve my problem :)

8
  • have you tried EQing them? or is that even possible in this program?
    – Travis Dtfsu Crum
    Commented Oct 5, 2012 at 13:09
  • I'm afraid I don't even know what that means. But a quick search through the program documentation doesn't point to a command that contains 'eq'.
    – Ana
    Commented Oct 5, 2012 at 13:36
  • EQ is just the acronym for equalization. Search for that
    – Travis Dtfsu Crum
    Commented Oct 5, 2012 at 14:09
  • @TravisDtfsuCrum Eq-ing is not a good idea. What would you be eq-ing? There are set frequencies (220, 440, 880) so there would very little other frequencies to boost (which is undesirable anyway in this case) so essentially all you would be doing is boosting the gain of said frequencies. I guess this is just an issue with 'perceived' loudness. A simple approach is to just use your ears on this one and boost the volume on the frequencies you perceive to be quieter until they sound ok to you.
    – Magrangs
    Commented Oct 5, 2012 at 20:31
  • 3
    This is also quite interesting as the perception of loudness is also related to the frequency of the sound played before it. So if you played the notes in a different order, you would have different results. hyperphysics.phy-astr.gsu.edu/hbase/sound/loud.html
    – Magrangs
    Commented Oct 5, 2012 at 20:38

1 Answer 1

4

First off, this program you are using obviously sucks and you therefore have my sympathies. There are many ways to define "Attenuation", gain, and volume changes, and they seem to have doubled over backwards to find the worst one. Also, decibels are notated dB, not Db. You should write them a strongly worded letter about that! :)

Okay, on to your answer: the thing about equal loudness curves is they vary depending on the reference volume. In your case, that means you need to figure out how loud one of the sounds is going to be played back, find the equal loudness curve that goes through that and adjust the volumes based on that curve. Confused? An example will help:

Let's say I have two frequencies, A and B, and that, according to the equal loudness curve, most people think that when A is played at 80 dB SPL (a measure of absolute volume), B needs to be played at 86 dB SPL to sound equally loud. Now lets crank up the volume to 100 dB SPL for A. You might expect that B needs to be played at 106 dB SPL to sound equally loud, but that is not the case. More likely, B needs to be played at something like 104 dB SPL, or even less.

The point is this: you can't just tell your presentation software "play tone B 6 dB louder than tone A" because that assumes you are playing back at around 80 dB SPL.

But I understand you need to solve a real-world problem, so I'm not going to leave you hanging like that. Let's make an assumption:

  • Let's assume that people will be listening at a comfortable level. 60 dB SPL is usually considered the volume of comfortable, normal conversation, so let's go with that.

By the way, I am also implicitly assuming a few other things:

  • You are using sine waves. All bets are off if you are not using sine waves.
  • You are using high quality playback, either decent headphones (and not the kind that advertise as "super extra maximum bass") or high quality speakers. If not, you'll need to compensate for that, too.

I would use the newest data (the ISO 226:2003) from the link you included. You may want to pick one of the other datasets if you think your listening conditions are more like the listening conditions that lead to those results, but that's probably more trouble than it's worth.

Now, let's solve the problem. Start by asking where each of the frequencies fall on the 60 dB curve:

  • 220: 65 dB
  • 440: 62 dB
  • 880: 60 dB

(I just eyeballed those from your link, you should try to get a better copy of the charts and do a better job eyeballing if you can)

That means that you need to take 5 dB out of your 880 Hz tone and 3 dB out of your 440 Hz tone for them to sound like they are at the same loudness as the 220 Hz tone (on average, for most people).

I'll leave you to do the math to figure out the right "attenuation" values in your software because it makes me feel ill just thinking about how they defined it.

4
  • Also, you could do the dB changes in some real software like protools or audacity (which is free). ANYthing else!
    – Bjorn Roche
    Commented Oct 6, 2012 at 2:33
  • 1
    Seconding Audacity. You can even generate tones in it. Free and runs on every platform. Commented Oct 6, 2012 at 4:56
  • Thank you, this is a great answer! I realized later that I could have considered changing the tones themselves before saving them into a wav file (I use Matlab to generate them; they are sinoids with slight rise/fall times on the edges; Audacity doesn't allow me to know how the tones are exactly made mathematically which is a problem for publication). I believe I can just up the amplitude on the lower tones, going from the calculations that you've made here.
    – Ana
    Commented Oct 6, 2012 at 12:11
  • @Ana you may also want to look into Pure Data and SuperCollider for future tone generation projects. Commented Oct 9, 2012 at 9:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.