Hello all,

A few days ago I posted a simple C function to calculate
sound absorption in air (reproduced below), adding that
the origin of this code was not clear.

Joern reported that it could have been [1]. That is not
the case, in fact it was the Javascript code at [2].

But comparing the two, and also [3], I'm now convinced
that both [2] and my code are wrong, and that the line

    h = r * powf (10.0f, C) * p;

should be

    h = r * powf (10.0f, C) / p;

Which is also logical as 'h' is a concentration (in %),
so it should be the ratio of two pressures, not their
product (the factor powf(...) is a pressure), r is
a ratio in %).

Both [1] and [3] use this form.

[1] <http://www.sengpielaudio.com/AirdampingFormula.htm>
[2] <http://www.csgnetwork.com/atmossndabsorbcalc.html>
[3] <http://resource.npl.co.uk/acoustics/techguides/absorption/>

If anyone has ISO 9613-1, please check !

Ciao,



***** WARNING: this is probably wrong, see above *****

// Compute air absorbtion in dB/m
//
// p  pressure in Pa
// t  temperature in centigrades
// r  relative humidity in percent
// f  frequency in Hz
//
float airabs (float p, float t, float r, float f)
{
    float C, h, tr, f2, frO, frN;

    p /= 101325.0f;
    t += 273.15f;
    C = 4.6151f - 6.8346f * powf ((273.16f / t), 1.261f);
    h = r * powf (10.0f, C) / p;
    tr = t / 293.15f;
    f2 = f * f;
    frO = p * (24 + 4.04e4f * h * (0.02f + h)/(0.391f + h));
    frN = p * powf (tr, -0.5f) * (9 + 280 * h * exp (-4.17f * (powf (tr, 
-1/3.0f) - 1)));
    return 8.686f * f2 * (1.84e-11f * sqrt (tr) / p
           + powf (tr, -2.5f) * (  0.01275f * (expf (-2239.1f / t) / (frO + f2 
/ frO))
                                 + 0.10680f * (expf (-3352.0f / t) / (frN + f2 
/ frN))));
}

-- 
FA

Vor uns liegt ein weites Tal, die Sonne scheint - ein Glitzerstrahl.

_______________________________________________
Sursound mailing list
[email protected]
https://mail.music.vt.edu/mailman/listinfo/sursound

Reply via email to