Skip to contents

Converts sound pressure level (dB) at a given frequency to loudness level (phon) according to ISO 226:2023 equal-loudness-level contours.

Usage

ucnv_db_and_hz_to_phon(spl_db, freq_hz)

Arguments

spl_db

Numeric vector; sound pressure level in dB (re 20 μPa)

freq_hz

Numeric vector; frequency in Hz (20 to 12500 Hz)

Value

Numeric vector; loudness level in phon

Details

This function implements Formula (2) from ISO 226:2023 Section 4.2.

Loudness level (phon) represents the perceived loudness of a sound. By definition, a sound at N phon has the same loudness as a 1000 Hz tone at N dB SPL.

Valid ranges:

  • Frequency: 20-12500 Hz (1/3-octave standard frequencies)

  • SPL: Threshold of hearing to ~130 dB (pain threshold)

  • Output: 20-90 phon (reliable data), <20 phon informative only

Interpolation: Frequencies between standard 1/3-octave values are interpolated on a log-frequency scale.

Vectorization: Both spl_db and freq_hz can be vectors. If both are vectors, they must be the same length, or one must be length 1 (recycled).

References

( )

See also

ucnv_phon_and_hz_to_db for the inverse conversion

Examples

if (FALSE) { # \dontrun{
# 40 dB at 1000 Hz = 40 phon (by definition)
ucnv_db_and_hz_to_phon(40, 1000)

# Same loudness at different frequencies
ucnv_db_and_hz_to_phon(60, 100)   # Low frequency needs more SPL
ucnv_db_and_hz_to_phon(40, 1000)  # Reference
ucnv_db_and_hz_to_phon(35, 4000)  # High frequency needs less SPL

# Vectorized: multiple measurements
spl <- c(40, 50, 60, 70)
freq <- c(100, 500, 1000, 4000)
ucnv_db_and_hz_to_phon(spl, freq)

# Single frequency, multiple SPLs
ucnv_db_and_hz_to_phon(c(30, 40, 50, 60), 1000)
} # }