
Hardware fft  with Kendryte K210 / Sipeed M1 dock
02/24/2019 at 12:43 • 0 commentsThis is a test of hardware fft with Kendryte K210 / Sipeed M1 dock.
Using built in MEMS microphonecode

ESP8266 ColorChord  CNLohr
06/04/2016 at 20:00 • 0 commentshttps://github.com/cnlohr/colorchord/tree/master/embedded8266
I have not yet tried it but it seems do do the trick. CNLohr has done a great job !!
Download Video as MP4 
256Point FFT  decoding Radio FFH
05/03/2015 at 19:11 • 1 commentThis really demonstrates what can be done with the Esp8266 and a Teensy 3.1
by Frank Bösing
https://github.com/FrankBoesing/ILI9341_t3
Download Video as MP4

MSGEQ7  Seven Band Graphic Equalizer
05/01/2015 at 15:04 • 0 comments 
Playing with 8 bit  fix_fft
02/22/2015 at 14:40 • 0 commentsHere is a snippet on how to play with the fix_fft in winamp. The reason for this is, it gives a good idea if it's worth the effort to implement in the Esp8266 ( which I think it is ;). It's just a quick & dirty hack... to get a feeling.
Current goal :
* Sample with Esp8266 ADC in approximate 10kHz
* 8 bit fix_fft: 16 fft bin is enough ( but I'll probably calculate more, or use a filter ;)
* Predict beat
Track active frequencies with histogram  predict beat
A different way to visualize rhythm  John Varney
* Make something fun..."synchronized party stuff"
Download Video as MP4
// http://www.PlanetSourceCode.com/vb/scripts/ShowCode.asp?txtCodeId=960&lngWId=3 // By: David Overton // vis_spectrum.cpp winampVisModule waModule = { ... 1, // spectrumNch 1, // waveformNch ... }; char g_real[600]; char g_imag[600]; OnPluginRender int n=0; // Get a grip on which ADC rate would be necessary // Divide 44100/4 = 11025 sample rate for( int i=0; i<576; i+=4 /* play with sample rate 19 */) { g_real[n]=mod>waveformData[0][i]; ++n; } fix_fft(g_real, g_imag, 6/* 2^6 = number of FFT points */, 0); for (int i=0; i<32/* number of bins = FFT points/2 */; i++) { // just a "scale factor" not much thought put into it..... g_real[i] = 8.6*( (sqrt((float)g_real[i] * (float)g_real[i] + (float)g_imag[i] * (float)g_imag[i]))); } HBRUSH NewBrush = CreateSolidBrush(RGB(255, 255, 255)); HBRUSH hbrushOld = (HBRUSH)SelectObject(Plugin.hMemDC, NewBrush); int x=7; int y; /* just hard coded values without respect of actual size */ /* ignore the upper half of the spectrum */ for( int i=0; i<16/* number of bins to display*/; ++i ) { y=118g_real[i]; if( y<8 ) y=8; Rectangle(Plugin.hMemDC, x, y, x+16, 118); x+=16; /* bar width*/ } SelectObject(Plugin.hMemDC, hbrushOld); DeleteObject (NewBrush) ; ..... // Blit all to hDC

Proof of concept
02/14/2015 at 14:41 • 0 commentsI think the Esp8266 is fast enough and CNLohr has made excellent and stable drivers for the WS2812B. With 160MHz there is plenty of time to do fun stuff and receive commands over WiFi. I think the limitations lies primarily in the WS2812B transfer rate ( approx=NLEDx3x8x1.25µs + 50µs ). You can probably update several strips simultaneously ( taking advantage of the delays in the ws2812 driver )
My guess is POV & VU meter could very "easily" be implemented with these building blocks ...on a wheel or party dress ...the ball is now yours !
starting point .......