Perform A-weighting (and others) for a frequency. Useful for creating believable spectrum images and audio measurements.
var aWeight = require('a-weighting/a');
var ft = require('fourier-transform');
//get a-weighted frequencies
var frequencies = ft(waveform).map(function (magnitude, i, data) {
var frequency = 22050 * i / data;
return aWeight(frequency) * magnitude;
});
Note that weight function returns normalized 0..1
weight values, it does not do decibels calculation. If you need to convert weight to decibels, do 20 * Math.log(weight) / Math.log(10)
.
Implemented weights:
- A-weighting
- B-weighting
- C-weighting
- D-weighting
- Z-weighting (zero weighting)
- M-weighting
Thanks to all the specialists who researched and described these curves (years of work I guess) and wikipedia for detailed articles on this.
- fourier-transform — fft fast implementation.
- gl-spectrum — spectrum rendering component.
- Equal-loudness-contours.