Convert Sound Pressure Level and Frequency to Loudness Level (Phon)
ucnv_db_and_hz_to_phon.RdConverts sound pressure level (dB) at a given frequency to loudness level (phon) according to ISO 226:2023 equal-loudness-level contours.
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).
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)
} # }