creaktive / pianolizer

An easy-to-use toolkit for music exploration and visualization, an audio spectrum analyzer helping you turn sounds into piano notes
https://sysd.org/pianolizer
MIT License
95 stars 6 forks source link

Non-integer k and variable-Q transform #5

Open TF3RDL opened 1 year ago

TF3RDL commented 1 year ago

Turns out, it is possible to have non-integer k on CQ-sDFT algorithm, which means analysis frequency can exactly corresponds to musical notes instead of approximate one (as mentioned in #3) and it also makes it easier to convert into variable-Q transform like this, it just need one additional factor, namely fiddles

creaktive commented 1 year ago

Hey, this is amazing! Thanks for sharing! And big thanks for doing the implementation :) May I link your gist from the references section of my project?

TF3RDL commented 1 year ago

May I link your gist from the references section of my project?

Yes, for somebody besides you and me who make foobar2000 components (by using my JS project as a reference and re-implement the same algorithm in C++ for use in foobar2000 visualization components), especially the fact a lot of components like Musical Spectrum are no longer developed (thus no 64-bit version for use in foobar2000 x64) and are only usable within 32-bit version of foobar2000

TF3RDL commented 9 months ago

to add to this, I've made this CodePen project demonstrating the sliding DFT with noninteger K allowing variable-Q transform with smoother low frequency peaks and also a faster IIR cousin, the sliding windowed infinite Fourier transform (SWIFT) and even analog-style filter bank (which some professional RTAs including Spectralissime uses it over FFT) and a YouTube video demoing the good-old algorithm not based on FFT