Wolf Spectrum - Free spectrogram plugin (LV2/VST/Jack)
Moderators: raboof, MattKingUSA, khz
- pdesaulniers
- Established Member
- Posts: 15
- Joined: Tue Mar 27, 2018 12:41 pm
Wolf Spectrum - Free spectrogram plugin (LV2/VST/Jack)
It has already been featured in the unfa livestreams a few time, but this is the first official announcement :)
Right now, it supports vertical scrolling, logarithmic/linear frequency scaling, and configurable block sizes. I plan on adding a few features in future releases, such as horizontal scrolling and the ability to show the frequency at the cursor's position.
To install the plugin, follow the instructions in the README: https://github.com/pdesaulniers/wolf-spectrum
If you encounter some issues with the plugin, please report them. Feature requests are also welcome :)
Thanks!
Last edited by pdesaulniers on Wed Apr 17, 2019 12:19 am, edited 1 time in total.
- Michael Willis
- Established Member
- Posts: 1458
- Joined: Mon Oct 03, 2016 3:27 pm
- Location: Rocky Mountains, North America
- Has thanked: 70 times
- Been thanked: 166 times
- Contact:
Re: Wolf Spectrum - Free spectrogram plugin (LV2/VST/Jack)
Great work! The first thing I looked for in your source code was the FFT implementation. I see you're using a library called kissfft; could you elaborate on how you made your choice? Dragonfly Reverb currently uses Project Nayuki's FFT, but admittedly I didn't spend much time looking; it's just that building FFTW was more complicated than I wanted to deal with, and soon thereafter I found the Nayuki FFT library.
- pdesaulniers
- Established Member
- Posts: 15
- Joined: Tue Mar 27, 2018 12:41 pm
Re: Wolf Spectrum - Free spectrogram plugin (LV2/VST/Jack)
I went with kissfft instead of FFTW, because it is lighter and easier to integrate.Michael Willis wrote:I see you're using a library called kissfft; could you elaborate on how you made your choice?
As for kissfft vs. Project Nayuki's FFT, it seems like they are fairly similar at first glance. I suppose both would've been fine to use in this plugin.
However, I see that Project Nayuki's FFT allocates memory dynamically and frees it at every Fft_transform call: https://github.com/michaelwillis/dragon ... /fft.c#L65
For improving real-time performance, I guess it would be better to reuse the buffers, instead of recreating them every time. I don't know if that would make a huge difference in practice, though :)
- sadko4u
- Established Member
- Posts: 988
- Joined: Mon Sep 28, 2015 9:03 pm
- Has thanked: 2 times
- Been thanked: 361 times
Re: Wolf Spectrum - Free spectrogram plugin (LV2/VST/Jack)
LSP Plugins do use their own SIMD-optimized FFT.
Here's a part of code for example:
https://github.com/sadko4u/lsp-plugins/ ... tive/fft.h - native implementation
https://github.com/sadko4u/lsp-plugins/ ... utterfly.h - butterfly implementation for x86 SSE
https://github.com/sadko4u/lsp-plugins/ ... utterfly.h - butterfly implementation for ARM NEON
Here's a part of code for example:
https://github.com/sadko4u/lsp-plugins/ ... tive/fft.h - native implementation
https://github.com/sadko4u/lsp-plugins/ ... utterfly.h - butterfly implementation for x86 SSE
https://github.com/sadko4u/lsp-plugins/ ... utterfly.h - butterfly implementation for ARM NEON
LSP (Linux Studio Plugins) Developer and Maintainer.
- Michael Willis
- Established Member
- Posts: 1458
- Joined: Mon Oct 03, 2016 3:27 pm
- Location: Rocky Mountains, North America
- Has thanked: 70 times
- Been thanked: 166 times
- Contact:
Re: Wolf Spectrum - Free spectrogram plugin (LV2/VST/Jack)
I just tried switching to kissfft and can confirm that it is significantly faster than Nayuki FFT. I didn't profile it, but it seems like it is around 10x faster.pdesaulniers wrote:As for kissfft vs. Project Nayuki's FFT
Edit: I'm probably exaggerating about 10x, but my spectrogram indeed renderers noticeably faster.