For my CCLAB Arduino Final we have to make something that has both input, output, and also inject some personality into it. So I made this music visualizer that will show smiley face as long as the music is not too loud, and gives annoyed face whenever the surrounding music is too loud.
- DigiPixel, it' is an Arduino and Digispark compatible shield which looks like a game console with 64 pixel RGB LED display + 6 buttons. It first started as a Kickstarter project that was successfully funded on January 10, 2014.
- Electret Microphone Amplifier - MAX4466 with Adjustable Gain
- AdaFruit Small 1.2" 8x8 Bi-Color (Red/Green) Square LED Matrix
- Piccolo, for visualizing sound. What this library does is utilizing the free-run mode in Arduino that converts analog-to-digital at precise intervals of 9.6KHz; just because the normal analogRead() is too slow for audio sampling.
- ELM-ChaN ffft library (fast Fourier transform). Raw, analog audio samples are then converted to frequency spectrum using this library. The library is included in the Piccolo github.
- AdaFruit GFX Library
- AdaFruit LED Backpack Library
The first experiment was conducted by following this tutorial and modify it by adding DigiPixel library to show both smiley and annoyed faces on its screen. Sound visualizer displayed on LED Matrix, and the emoticon is displayed according to the beat in DigiPixel.
Next, I did the opposite by displaying Sound visualizer on the DigiPixel, and the emoticon is displayed in the AdaFruit 1.2" 8x8 LED Matrix. I follow this Tiny Arduino Music Visualizer tutorial and got stuck in translating how to map the variables & function to work on DigiPixel. It was before I realized that there are examples sketches from DigiPixel library that's called DigiPiccolo! That made my life so much easier, I modified the code from there.
I personally think that my 2nd experiment delivers much better result than the 1st. Although yes, the Piccolo and fffT library is quite a headache to explore, it gives a better sound visualization.