It could work. I just want to emphasize this is really an incomplete DFT. It's missing the upper bands and it's also sparsely sampling the ones it does show (the full DFT would have 512 non-aliased bands). I also think in the general case, what you describe only works for the CFT. Making it work with the DFT means you have to lie a little bit, because your "dirac delta" is really a sinc function sampled at the knots to come out [… 0, 0, 1, 0, 0 …].
In the case of the final visualization, it was produced on short notice, so my bands aren't actually perfectly aligned with the true DFT bands either. On the plus side, taking one frequency band and making the full-size one only took me an hour and that's because it was a lazy copy/paste job:
It could be made more compact with a for loop too, but I like the pedagogical value of just having the full JS DOM spelled out like that.
The entire point of MathBox2 was to be able to produce visualizations like this without breaking my head or taking weeks. People seem to assume it's still a crazy amount of work, it's really not. e.g. The twisting transformation is just an affine skewing matrix in polar/cylindrical coordinates (.polar() + .transform()). The fades and other transitions are composable operators. Figuring out how to shove it into the GPU is now ShaderGraph's job, not mine, and the emitter API ensures the JS VM will inline and optimize it close to native, asm.js style. It all comes built-in and you can keyframe the parameters or specify them with live expressions.
The fact that people keep bringing up "beauty" is mystifying to me, it's really not what I'm aiming for. This is just what the math looks like when you remove all the extraneous visual noise and let motion and space do the talking instead. I use the same bog-standard colors, curves and surfaces every time. Why that translates into "beauty", I really don't know, except that maybe beauty is simply what we call it when our brain recognizes symmetries and patterns we don't have conscious words for.
In the case of the final visualization, it was produced on short notice, so my bands aren't actually perfectly aligned with the true DFT bands either. On the plus side, taking one frequency band and making the full-size one only took me an hour and that's because it was a lazy copy/paste job:
https://gitgud.io/unconed/toolsforthought/blob/master/iframe...
It could be made more compact with a for loop too, but I like the pedagogical value of just having the full JS DOM spelled out like that.
The entire point of MathBox2 was to be able to produce visualizations like this without breaking my head or taking weeks. People seem to assume it's still a crazy amount of work, it's really not. e.g. The twisting transformation is just an affine skewing matrix in polar/cylindrical coordinates (.polar() + .transform()). The fades and other transitions are composable operators. Figuring out how to shove it into the GPU is now ShaderGraph's job, not mine, and the emitter API ensures the JS VM will inline and optimize it close to native, asm.js style. It all comes built-in and you can keyframe the parameters or specify them with live expressions.
The fact that people keep bringing up "beauty" is mystifying to me, it's really not what I'm aiming for. This is just what the math looks like when you remove all the extraneous visual noise and let motion and space do the talking instead. I use the same bog-standard colors, curves and surfaces every time. Why that translates into "beauty", I really don't know, except that maybe beauty is simply what we call it when our brain recognizes symmetries and patterns we don't have conscious words for.
https://acko.net/blog/mathbox2