Amplitude Of Single Tone Sound Wave = Loudness ?

Join the discussion
Registration is free. Start your own thread to ask a follow-up.
3 replies · 3K views
Pushless
Messages
2
Reaction score
0
Amplitude Of Single Tone Sound Wave = "Loudness"?

Hello,

Given a single tone sound wave: x(t) = A * sin( 2 * pi * freq * t ), what does the 'A' actually represent? Peak Intensity? Intensity Level? Peak Amplitude Pressure? What is adding to my confusion is this link: http://www.jhu.edu/~signals/listen-new/listen-newindex.htm
The perceived loudness of a pure tone is proportional to a^0.6
Why a^0.6 and not 'a' and why proportional?

I am using a Matlab clone called Octave to generate wave files. These wav files contain single tone sounds. I generate the single tone with the following command:

tone1 = transpose( cPeak1 * sin( 2 * pi * fx * t ) );

I expect the variable cPeak1 to affect the "loudness" of the tone. If I increase cPeak the tone will sound louder, if I decrease cPeak it will sound softer. I have been assuming that my variable cPeak is the Intensity.

Code:
Single tone sound wave intensity: [b]I = P^2 / 2 * rho * v[/b]
I: Intensity in watts/m^2
P: Pressure amplitude in Pa

rho * v : Characteristic impedance of the air

But changing the value of cPeak does not affect the *wave* files I am generating. When I vary cPeak and plot the tones, I can see the change in amplitude. When I vary cPeak and generate wave files, the files all sound the same (in terms of loudness).

Here is a pastebin of the Octave 'm' file I am using to create the tones...I'm not sure if it will work with Matlab.

http://pastebin.com/dbKmnVwU

Thanks!
 
Last edited by a moderator:
Engineering news on Phys.org


In acoustics, cPeak is usually the pressure amplitude.

"Loudness" depends on how your brain interprets the signals, not on what you measure with a pressure transducer. Maybe you are not changing cPeak enough to hear the dfference, and human perception of "loudness" follows a logarithmic scale not a linear one. Try something like.

cPeak1 = floor( nMax/100 );
cPeak2 = floor( nMax/30 );
cPeak3 = floor( nMax/10 );
cPeak4 = floor( nMax/3 );
cPeak5 = floor( nMax/1 );

or even

cPeak1 = floor( nMax/10000 );
cPeak2 = floor( nMax/1000 );
cPeak3 = floor( nMax/100 );
cPeak4 = floor( nMax/10 );
cPeak5 = floor( nMax/1 );
 


Thank you for taking the time to read and respond to my somewhat scatterbrained OP. It was helpful. When I attempt to do/learn something new I get frustrated if I don't pick it up immediately. And once the frustration sets in, it becomes difficult for anything to sink in.

I've been reading the book "Fundamentals Of Acoustics" (Kinsler, Frey, Coppens, Sanders) in an attempt to understand the basic theory. I was getting a frustrated because the book is a little advanced. Although after reading your reply, the book was saying the exact same thing.

My issue with Octave turned out to be user error. The function that generates the audio file expects the input to be normalized.

Thank you again for your help.
 


If "loudness" were a simple thing to measure, there would be no complaints from TV audiences about the levels of Music vs Speech streaming to the in-boxes of all broadcasters. They would be able to get it sounding just right for every audience member.