Close
0%
0%

WaveFORM : the Background Sound Visualizer

Waveform is a small wall-mounted display that turns sound into moving waves.

Similar projects worth following
WaveForm: The Background Sound Visualizer transforms one of the most common yet invisible elements of our environment—sound—into a dynamic visual experience.

Sound is all around us, all the time. We talk, type, walk, and listen to fans, ambient noise, traffic, and music, but the actual shape of those sounds is something we never see with our eyes. They exist as vibrations in the air, completely hidden from our visual senses.

Sound is all around us, all the time. We talk, type, walk, and listen to fans, ambient noise, traffic, and music, but the actual shape of those sounds is something we never see with our eyes. They exist as vibrations in the air, completely hidden from our visual senses.

WaveForm takes this unseen phenomenon and transforms it into an interactive visual wave displayed on a HUB75 matrix. As the sound grows louder, the wave expands and intensifies in real time.

We built a custom enclosure that houses the RGB matrix along with a custom PCB featuring the Raspberry Pi Pico 2 and the MAX9814 microphone amplifier, paired with a dedicated power and button board. This enclosure lets us mount the device on a wall inside our workspace.

When the room is silent, WaveForm displays a calm, single center line. As soon as there’s activity—my 3D printer running, mechanical keyboard typing, or even general background music—the device picks up those sounds and transforms them into smooth, flowing waves.

The result is a visually engaging ambient display that looks great in the background while revealing the hidden sound patterns of our environment.

This article covers the complete build process of this project. Let's get started!

MATERIALS REQUIRED

These are the materials used in this project:

  • Custom PCBs (provided by HQ NEXTPCB)
  • Raspberry Pi PICO 2
  • IP5306
  • 10 uF Capacitor 1206 Package
  • 10k Resistor 0805 Package
  • 1uH Inductor
  • RGB matrix HUB75 63x32
  • MAX9814 Microphone module
  • Indicator LED 0805 Package
  • Push Buttons
  • Type C Port
  • 3D Printed Parts

UNDERSTANDING SOUND WAVES

Sound is all around us, but we never actually see it. At its core, sound is simply a vibration traveling through the air—tiny, rapid changes in air pressure created whenever something moves, taps, clicks, or speaks. These pressure variations form a waveform: a repeating pattern of peaks and valleys that represent how the air is compressing and expanding over time.

Our ears interpret these changes instantly, but the waveform itself remains completely invisible.

Our project, WaveForm, is built around the idea of revealing this hidden pattern.

Using a MAX9814 microphone amplifier, the Raspberry Pi Pico 2 continuously measures the incoming sound pressure and converts it into digital readings hundreds of times per second. In our code, each of these readings becomes part of a sequence of numbers—the raw shape of the sound wave.

Here’s the exact moment the waveform is captured: (I will be explaining more about code in later later section of the project.)

for (int i = 0; i < OVERSAMP; i++) {
int v = analogRead(MIC_PIN);   // read sound level from mic
samples[i] = (float)v;         // store it in the buffer
sum += v;
if (v < vmin) vmin = v;
if (v > vmax) vmax = v;
delayMicroseconds(150);
}

Each number represents a single instant of air pressure. By processing this stream of data in real time, we can calculate the sound’s amplitude (loudness), filter out background noise, and map every moment of the waveform to a corresponding point on the display.

These points are then drawn as a smooth, scrolling curve across the HUB75 RGB matrix. Quiet sounds create gentle ripples near the center of the screen, while louder sounds stretch the waveform outward and shift its color toward red. The result is a living visualization of something we normally experience only with our ears.

3D DESIGN

Before diving into the PCB design process, we first prepared a complete 3D design of the device. This began by importing models of the LED matrix, the Pico 2, the MAX9814 microphone module, and the push buttons. We then rearranged them to form an enclosure layout: the matrix display sits in the center, and on the right side we created a custom compartment that holds three push buttons aligned in a row. Above the buttons, we placed the microphone module.

The idea was to keep all interactive elements—buttons, microphone, switch, and USB port—on one side. Because the internal space was quite limited, we positioned the Pico 2 driver board and the battery on the backside of the display.

The enclosure was split into two main parts: a left and a right side. The right side houses the switch, microphone, and power-management board. The left...

Read more »

WavePi v8.step

step - 17.79 MB - 12/14/2025 at 17:44

Download

MIC-SWITCH-POWER Board.pdf

Adobe Portable Document Format - 208.17 kB - 12/14/2025 at 17:44

Preview

PICO DRIVER.pdf

Adobe Portable Document Format - 177.25 kB - 12/14/2025 at 17:44

Preview

SW KNOBS.3mf

3mf - 144.49 kB - 12/14/2025 at 17:44

Download

BACK.3mf

3mf - 77.56 kB - 12/14/2025 at 17:44

Download

View all 8 files

  • 1
    PCB ASSEMBLY
    • The PCB assembly process begins by applying solder paste to each SMD component pad one at a time with a solder paste dispensing needle; we are using 63/37 Sn/Pb solder paste here.
    • Next, we use an ESD tweezer to pick and arrange all SMD components on the top side of the board.
    • We pick the circuit and place it on the reflow hotplate, which heats the PCB to the solder paste melting temperature, causing all SMD components to permanently solder to their pads.
    • Now come the through-hole components; we begin by installing the push switch, followed by the type C port. The board is then flipped over, and we solder both through-hole component pads using a soldering iron.
  • 2
    POWER SOURCE

    For the power source, we are using a 3.7V LiPo cell with a capacity of 10,000 mAh. Since this device will be mounted on a wall and the RGB matrix draws a significant amount of current, we chose a high-capacity pack to ensure long, stable operation. The battery terminals were soldered directly to the Battery + and Battery – pads on the Switch–MIC–Power board.

    Pressing the power button once turns the device ON, and double-tapping it turns the device OFF.

    To confirm that the power setup functions properly, we used a multimeter in voltage-measurement mode. After switching on the power board, we measured the voltage across the output pin and GND.

    The reading showed a stable 5V, indicating that the entire power system is working correctly.

  • 3
    PICO DRIVER - MATRIX SETUP
    • We start by placing the Pico onto the header pins on the Pico Driver Board, ensuring that it is oriented correctly.
    • Next, we connect the Switch–MIC–Power board to the Pico Driver by linking 5V to 5V, GND to GND, the MIC output to GPIO28, Button 1 to GPIO0, and Button 2 to GPIO1.
    • After that, we connect the LED matrix power lines: the matrix VCC goes to the 5V output of the Switch–MIC–Power board, and the matrix GND goes to the common ground.
    • Finally, we use the HUB75 wire harness to link the matrix to the Pico Driver GPIO pins. The cable is plugged into the matrix connector first, and then the other end is connected to the HUB75 socket on the Pico Driver board.

View all 8 instructions

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates