User Configurable 4 channel Color Organ

craiglindley

Well-known member
Hello,

I've been working on a new generation color organ that uses mostly pjrc.com products in its design. It uses the Teensy Audio library to do most of the heavy lifting, hence I call it the "Teensy Color Organ". I have built many color organs in my lifetime but this is, by far, the most versatile.

Features include:
LCD with touch screen display for all user interaction
Screens for configuring filters, inputs, colors, LED densities and file operations
Input from a built-in microphone or line level inputs
4 frequency bands with adjustable frequencies and sharpness
Each of the four bands controls up to 30 LEDs for a total LED count of 120 (ws2812b strip variety)
Automatic volume control
Programmable density of LEDs / band
Each band has user configurable color
The ability to store/load current color organ configuration to/from files on the SD memory card
Special color dynamics mode where LED assigned to a band can change position periodically

Hardware
The following hardware items are used in this project
1. Teensy 3.1/3.2 Micro Controller - pjrc.com
2. Teensy Audio Adapter Board - pjrc.com
3. Color 320x240 Touchscreen, 2.8 inch, ILI9341 Controller - pjrc.com
4. 2 GB (or smaller) microSD card
5. 74AHCT125 quad level shifter
6. (2) 100 ohm resistors
7. Minature SPST pushbutton switch that replaces the Teensy 3.1 reset switch which is covered by the audio adapter
8. 5 volts DC power supply capable of at least 3 amps of continuous current
9. 5 volt WS2812B LED strip with density of 30 LEDs/meter. One length of 120 LEDs

Software
The following software was used to compile this code
1. Arduino IDE Version: 1.6.9 - https://www.arduino.cc/en/Main/Software
2. Teensyduino Version: 1.29 - https://www.pjrc.com/teensy/td_download.html
3. ILI9341_t3 LCD driver - https://github.com/PaulStoffregen/ILI9341_t3
4. XPT2046 touch screen driver - https://github.com/PaulStoffregen/XPT2046_Touchscreen
5. The Audio library - https://github.com/PaulStoffregen/Audio
6. Adafruit Neopixel library - https://github.com/adafruit/Adafruit_NeoPixel

Color Organ Concept, Design and Implementation by: Craig A. Lindley

I've created a github repository for the code which is available at:
https://github.com/CraigLindley/TeensyColorOrgan

Since the design in open source you are free to use it anyway you want. Since you have the source you can add new features, increase the LED count or whatever.

Have fun

Craig Lindley
 
Hi markonian,

I haven't done a video yet because I haven't yet built the enclosure for the color organ. So far I've only driven the string of 120 WS2812b LEDs while they were lying on my floor.

I've just checked in some images of the various screens into the repository but I'll show them here as well.

When the color organ starts up the user sees what I call the main screen:
Screen_Main.jpg

This screen has 2 VU meters on it that monitor the current input (mic/line). If the user touches the screen, the configuration screen comes up:

Screen_Configuration.jpg

The user can then tap the button for the item he/she wishes to configure. The user can configure each of the four filter bands. The low band screen
is shown for reference:

Screen_LowBand.jpg

Here the user can set the band's frequency (cutoff if high or low pass or center frequency if band pass) and the sharpness of the filter's response.
The user can also touch the Color button to set the hue for the band and can touch the Dens button to set the density of the LEDs for this band. If
a density of 50% is set, 15 of the 30 LEDs for this band will become active. Touching the back button returns the user to the band's screen.

The Misc screen is where the user selects the input, whether or not the automatic volume control is engaged and the time interval for the dynamics effect.

Screen_Misc.jpg

If the dynamics time interval is non zero, the LEDs for each band will dynamic change. That is, they will be reassigned to a different position in the LED
string. So instead of the LEDs always having a fixed position in the color organ (like every color organ I have ever seen) they will be dynamically reassigned in
a random fashion. Note, the density of the LEDs and their color don't change during the dynamic reassignment.

Finally the Files screen

Screen_Files.jpg

is where the user can store and load the color organ configurations. Say for a certain kind of music you want to change the filter characteristics or the density
of LED per band or the color of the LEDs in a band you can setup the color organ this way, select a File (1-4) and touch store and that configuration will
be saved onto the SD card in the audio adapter. Later, when you want to use the stored configuration you select the File the same way and then
touch of load button.

I will be uploading a schematic of the color organ when I get the chance to draw one. Most of the connections can be deduced from the information on Paul's Audio Adapter page. Other than that only a single channel of the 74AHCT125 quad level shifter is used. Pin
3 of the teensy 3.1 connects to input A and the output drives the string of WS2812b LEDs through a 100 ohm resistor.

Here is an image of the breadboard for the color organ.

BreadboardFront.jpg

The wires running off to the left are connected to microphone element. The red and black wires middle right are the power supply wires and the lower right wires run off to the LED string. Everything else on the breadboard should look familiar.
 
Because the frequency selectivity was not as great as I had hoped, I have created new software (running on exactly the same hardware) that uses the 1024 point FFT with octave related bands that seems to work much better. Instead of the original 4 bands, with the new software there are 8 bands. The new software is available at: https://github.com/CraigLindley/TeensyColorOrgan-FFT. It turns out this is a much simpler approach than my previous one.
 
Back
Top