Fast Fourier Transform (FFT) vs my "lazy Discrete Fourier Transform" (LDFT)

Channel:
Subscribers:
3,660
Published on ● Video Link: https://www.youtube.com/watch?v=3HVJXJYedFQ



Duration: 0:19
2,082 views
34


Here's a straight up comparison between the FFT (in blue) and my algorithm (in red), which so far I'll just call "lazy discrete Fourier transform" (LDFT)

This is audio sampled at 44100 Hz, the final notes of "Magnetic Rag" by Scott Joplin, as played by Alessandra Celletti.

FFT was taken with a 1024 sample cosine window (16-bit integers), which by Shannon-Nyquist gives us a 512 bins of 44100/1024 ~ 43 Hz bandwidth, from 0 Hz to 22050 Hz. In other words, the FFT spends A LOT of time, processing and memory on higher frequencies. But I don't care about those!

This is why I rolled out my own method, which I could dynamically bias towards the lower frequencies with different bandwidths. Couldn't find anything in the literature about this, so I came up with my own stupid algorithm. It's not really a sparse DFT or a straight up DFT either, from the looks of it. Haven't found anything similar. Doubt it's revolutionary, just a really lazy specific implementation of the general ideas.

My method here was biased towards the lower frequencies. I used 512 bins (each a 16-bit int).

For my specific purposes this method seems much better in terms of memory and computations. I'll load this up on the Arduino later this week and see how well it goes.

It certainly looks more promising than a 256 sample but 128 frequency bin Discrete Hartley Transform on that thing!


I'll work out the details of the theory behind this thing a little bit more and make a post about it somewhere. I'll let the experts tell me how stupid and trivial it is, which is fine, but I'm sure other people could benefit from it.

EDIT 1: A naive implementation is too slow, but there's several ways to optimize it. Will work on it more.

EDIT 2: Got it working in real time on the Arduino Uno now: https://www.youtube.com/watch?v=ON6XEtqmbgI




Other Videos By 1ucasvb


2017-01-08Bartek Wąsiel (BeWu) - "Candy Mountain" -- Chiptune Visualization / Atari SAP
2017-01-08[60fps] Grzegorz Kwiatek (Greg) - "Misunderstanding" -- Chiptune Visualization / Atari SAP
2017-01-07Tomasz Dajczak - "Eureka (Theme / Song 4)" -- Chiptune Visualization / Atari SAP (NEW ALGORITHM)
2017-01-07[60fps] Łukasz Sychowicz (X-Ray) - "Zizibum" -- Chiptune Visualization / Atari SAP (NEW ALGORITHM!)
2017-01-07Łukasz Sychowicz (X-Ray) - "Overmind (Song 1)" -- Chiptune Visualization / Atari SAP
2017-01-07Łukasz Sychowicz (X-Ray) - "Zbig" -- Chiptune Visualization / Atari SAP (NEW ALGORITHM!)
2017-01-07Jakub Husak - "His Dark Majesty (Song 4)" -- Chiptune Visualization / Atari SAP (NEW ALGORITHM!)
2016-09-18The Weather Man (2005) - "Fast Food" scene
2016-07-09Test run of my Universal Resonator prototype
2016-06-11Lazy Discrete Fourier Transform on the Arduino Uno
2016-05-31Fast Fourier Transform (FFT) vs my "lazy Discrete Fourier Transform" (LDFT)
2016-05-31Test for my discrete Fourier/Hartley-like transform algorithm
2016-04-25Chiptune Orchestra - "Piona" by Łukasz Sychowicz AKA X-Ray (Atari POKEY)
2016-04-16Orchestrated Game Music: "Dawn of City" AKA "10000.mid", by Sue Kasper from the game "SimCity 2000"
2016-04-10General Relativity - Conceptual illustration of time and space distortion
2015-05-05Orchestrated Game Music: "Song 3", by Simeon Peebler, from the game "Warheads SE"
2015-04-09Chiptune Orchestra - "Draconus" by Adam Gilmore (Atari POKEY)
2015-04-02Chiptune Orchestra - "Global War" by Peter Elfinger (Atari POKEY)
2014-06-21Łukasz Sychowicz (X-Ray) - "Maxi 2, Song 2" -- Chiptune Visualization / Atari SAP
2014-06-20Nils Feske (505) - "Short" -- Chiptune Visualization / Atari SAP
2014-06-19Sal Esquivel (Kjmann) / Kenet & Rez - "Unreal Superhero 3" -- Chiptune Visualization / Atari SAP