5 ms·
Hey, cool demo and article! You clearly have more experience with DSP than me haha I was considering using an AnalyserNode since it's implemented natively by t
by calebj0seph 7y ago
Hey, cool demo and article! You clearly have more experience with DSP than me haha
I was considering using an AnalyserNode since it's implemented natively by the browser and therefore a lot faster than using a FFT implementation in Javascript. My biggest issue with AnalyserNode though is that there's no way to control the window function or overlap amount between windows. While I'm sure you could make a decent spectrogram with an AnalyserNode (as you've done!), I think implementing the FFT yourself lets you do more fine-tuning.
When I get some time I might make Spectro use a Wasm FFT implementation like PulseFFT (https://github.com/AWSM-WASM/PulseFFT https://github.com/AWSM-WASM/PulseFFT) for better performance. At the moment I'm using jsfft (https://github.com/dntj/jsfft https://github.com/dntj/jsfft) inside a web worker, which definitely isn't as efficient as a native implementation.
- est31 7y agoIt's not my code btw, only found the post on the internet. Your points about the restrictions of AnalyserNode make sense. A wasm solution is indeed the ideal way to solve it if you want full flexibility.