Create equal loudness contours and convert phons to sons

This script creates the equal loudness contours and converts their unit from phons to sons
107 Downloads
Updated 6 Nov 2018

View License

Background:

As you may know, we perceive different frequencies with different loudness. For example low frequency 26 Hz may be played at 88 dB to be perceived with a loudness that is equal to playing 1 kHz with 30 dB. This is called the equal contour levels. These contours are in Phons, which is not a linear loudness scale called Sons. In applications where different acoustic frequencies are present, sometime it is necessary to plot the perception related to loudness and not related to dB. Thus it is necessary to search these contours reversely for corresponding value in Sons when the dB value and frequency values are given.

These files are part of my PhD Thesis at University of Zurich
Mechanisms of Music Perception with Cochlear Implants, Sherif Omran, 2011, University of Zurich

License offered under creative common license

Description:

Generate the equal loudness matrix with precision for reverse conversion
of SPL dB to loudness. This script will create a matrix (90 phones levels:
in frequency range from 20Hz-8kHz), each row is an equal loundess contour
with phones value at 1kHz (column 981).
The precision is 1Hz and 1 Phone.

I added a search function within other file called Convert_dB_Sones(power,frequency) that make use of the equal loudness contours.

by: Dr. Sherif Omran

Oct.2018

Example
-------
Output
EqualLoudnessMatrixPhons: Equal Loudness Contours in Phons
EqualLoudnessMatrixSons: Equal Loudness Contours in Sons
fx: frequency range
lrange: row matrix with value in Phons of each contour in
EqualLoudnessMatrixPhons and EqualLoudnessMatrixSons

[phons, sons, fx, lrange]=create_equal_loudness_matrix();
figure (1); for a=lrange(1):10:lrange(end); subplot(2,1,1); plot(fx, phons(a,:)); hold on; subplot(2,1,2); plot (fx,sons(a,:)); hold on; pause; end

License
-------
This code is provided under common creative license

Acknowledgment
-----------------------
Part of the code (isophone contours) is created by Jeff Tackett

Cite As

Sherif Omran (2024). Create equal loudness contours and convert phons to sons (https://www.mathworks.com/matlabcentral/fileexchange/69110-create-equal-loudness-contours-and-convert-phons-to-sons), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2018b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Communities

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.0.4

Removed a bug in the search algorithm Convert_dB_Phons_Sons function when the given contour dB is above 90 dB SPL, rounded back to the 90 dB contour

1.0.3

Added Search function and enhancement to the example how to call it

1.0.2

Added the search function that uses the equal loudness contours

1.0.1

Description update

1.0.0