Audio spectrogram in canvas.
https://lab.miguelmota.com/spectrogram
npm install spectrogramTake a look at the full example.
varspectrogram=require('spectrogram');varspectro=Spectrogram(document.getElementById('canvas'),{audio: {enable: false}});varaudioContext=newAudioContext();varrequest=newXMLHttpRequest();request.open('GET','audio.mp3',true);request.responseType='arraybuffer';request.onload=function(){audioContext.decodeAudioData(request.response,function(buffer){spectro.connectSource(buffer,audioContext);spectro.start();});};request.send();Live input stream with getUserMedia.
navigator.getUserMedia({video: false,audio: true},function(stream){varinput=audioContext.createMediaStreamSource(stream);varanalyser=audioContext.createAnalyser();analyser.smoothingTimeConstant=0;analyser.fftSize=2048;input.connect(analyser);spectro.connectSource(analyser,audioContext);spectro.start();},function(error){});By default the colors are grayscale. You can generate a custom color spectrum using a color scale library such as chroma.js.
varspectro=Spectrogram(...,{canvas: ...
audio: ...
colors: function(steps){varbaseColors=[[0,0,255,1],[0,255,255,1],[0,255,0,1],[255,255,0,1],[255,0,0,1]];varpositions=[0,0.15,0.30,0.50,0.75];varscale=newchroma.scale(baseColors,positions).domain([0,steps]);varcolors=[];for(vari=0;i<steps;++i){varcolor=scale(i);colors.push(color.hex());}returncolors;}});


