Made using 129 ICs and over 1200 components in total this massive project delivers a stunning-looking audio spectroscope without any microcontrollers or other digital signal processors.
Theory of operation:
The device consists of 11 PCBs, one backplane and 10 display modules. On the backplane there are 2 3.5mm TRS sockets. Both of them are connected together, and the user can plug the source to one of the sockets, and headphones or speakers to the other, so there’s no need to use a splitter. Next using a set of jumpers (JP1, JP2, JP3) the user can use either the left, right or both channels as the input for the spectroscope. Jumpers feed into a preamp with user-adjustable gain (U4A), so both quitet and loud listeners can see the spectroscope work. The series shottky diode (D4) protects the preamp from voltage spikes coming from the audio input.
The preamp feeds into 10 active band-pass filters that separate the audio signals into different bands. Those bands are: 32Hz, 63Hz, 125Hz, 250Hz, 500Hz, 1kHz, 2kHz, 4kHz, 8kHz and 16kHz. Each band is connected to a separate display module connector.
Each display module has two peak detectors connected in series. The first detector made up of U3A, D1 and U3B has a smaller hold capacitor C12 and it’s quickly discharged by R34. Output of this peak detector will show the current amplitude of a filtered audio signal. Next peak detector (U3C, D2 U3D) has a larger hold capacitor and it does not have a discharge resistor. Since it’s connected to U3D and D2 it will still discharge, because of non-zero leakage currents of those components. Output of this slow peak detector will show the maximum amplitude of the audio signal and hold it there for a short while.
Both the fast and slow peak detector outputs are connected to 12 comparators each. Reference levels for the comparators are set by a long voltage divider in the middle. If a voltage on the input line is higher than the reference voltage set by the resistors, a comparator pulls the output low. In effect, the higher the voltage on the input line, the more comparators are switched off, and the more of their outputs have a logic low. On the fast side the comparators connect to logic NOT gates through some simple Resistor-Diode level shifters. On the slow side the comparators feed through voltage level shifters into Ex-OR gates. Each Ex-Or gate is connected to both it’s own comparator, and the next comparator. If both of the comparator outputs are the same, the gate’s output is low. Only in a situation, when the current level is different from the next one, the gate has a logic 1 on its output. As a result, for example, the fast side outputs ‘000001111111’ while the slow side will only output ‘000001000000’.
The LEDs are driven by a pair of transistors each (Q2, Q3, Q4 …). One transistor is controlled by the slow side, while the other one is controlled by the fast side. Transistors are connected in such a way, that either one can independently turn the LED on. Current of the LEDs is set by the series resistors (R8, R9, R10 …), During the assembly of the first prototype I bought new red and green LEDs, but used old yellow LEDs that I had in stock. Since the old LEDs were much dimmer than the new ones, I used a lower value of resistance for yellow LEDs.
I used a set of long M3 screws to tie all the display modules together and used a simple aluminium case case. I’ve used thin strips of gray foil to stop light from bleeding between LEDs. In this preview you can see the first prototype, which had several major errors - on the preview only 9 display modules are fitted - last module is broken and I gave up trying to fix it.
You can find all the design files in the Github repository here: