Distributes audio frequency data according to a logarithmic scale.
npm install audio-frequency-temperedaudio-frequency-tempered
========================
Distributes the data returned from AnalyserNode.getByteFrequencyData() according to a logarithmic scale. Low frequency bins are shared by multiple bars, while high frequency ones are bundled together.
The technique comes from Henrique Vianna's audioMotion-analyzer.
npm install audio-frequency-tempered
`
Example
`js
const { createAudioBars, updateAudioBars } = require('audio-frequency-tempered');
// create audio context, analyser, data array
// omitted: source, gain, connect, etc.
const audioCtx = new AudioContext();
const analyser = audioCtx.createAnalyser();
const audioData = new Uint8Array(analyser.frequencyBinCount);
// create audio bars
const audioBars = createAudioBars({ groupLevel: 8 });
// on update
analyser.getByteFrequencyData(audioData);
updateAudioBars(audioData);
audioBars.forEach(bar => console.log(bar));
`
Output:
`js
{ value: 0.6078, factor: 1, iniBin: 6, endBin: 9 }
{ value: 0.8196, factor: 1, iniBin: 10, endBin: 18 }
{ value: 0.8980, factor: 1, iniBin: 19, endBin: 37 }
{ value: 0.7254, factor: 1, iniBin: 38, endBin: 73 }
{ value: 0.5215, factor: 1, iniBin: 74, endBin: 146 }
{ value: 0.4352, factor: 1, iniBin: 147, endBin: 292 }
{ value: 0.4627, factor: 1, iniBin: 293, endBin: 584 }
{ value: 0.4313, factor: 1, iniBin: 585, endBin: 1167 }
{ value: 0.3411, factor: 1, iniBin: 1168, endBin: 2333 }
{ value: 0.0000, factor: 1, iniBin: 2334, endBin: 3110 }
`
Demo

audio-frequency-tempered demo
Usage
$3
- options
- groupLevel (default 5) 1 to 8, where 1 = 1/24 octave and 8 = full octave
- sampleRate (default 44100) audioContext.sampleRate
- frequencyBinCount (default 1024) analyser.frequencyBinCount
- minFreq (default 20) minimum frequency (Hz)
- maxFreq (default 22000) maximum frequency (Hz)
Returns an array of 'bar' objects { iniBin, endBin, factor, value }
- iniBin - initial bin of the analyser frequency data
- endBin - end bin of the analyser frequency data
- factor - interpolation factor - when multiple bars share the same bin
- value - normalised maximum energy value of the frequencies between iniBin and endBin
$3
- audioData` Uint8Array passed to analyser.getByteFrequencyData