explaingit

conwayjw97/3d-spectrogram

Analysis updated 2026-05-18

5JavaScriptAudience · developerComplexity · 2/5Setup · easy

TLDR

A browser tool that visualizes live audio as a moving 3D terrain, using Three.js and GLSL shaders to turn sound frequencies into a scrolling landscape.

Mindmap

mindmap
  root((3D Spectrogram))
    What it does
      Real time audio visualisation
      3D scrolling terrain
      Peak and average tracking
    Tech stack
      Three.js
      GLSL shaders
      Web Audio API
    Use cases
      Audio visualisation
      Learning shaders
      Creative coding base
    Features
      Orbit controls
      Dynamic labels
      Control panel sliders
    Audience
      Developers
      Creative coders

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Visualize live microphone or browser audio as an interactive 3D spectrogram terrain.

USE CASE 2

Learn how GLSL shaders and Three.js can turn real-time data into 3D visuals.

USE CASE 3

Use as a starting point for building custom audio-reactive web visualizations.

What is it built with?

JavaScriptThree.jsGLSLWeb Audio APIWebGL

How does it compare?

conwayjw97/3d-spectrogram00kaku/wp-rest-playgroundbotpress/documentation-v12
Stars555
LanguageJavaScriptJavaScriptJavaScript
Last pushed2023-02-07
MaintenanceDormant
Setup difficultyeasyhardeasy
Complexity2/53/52/5
Audiencedeveloperdeveloperwriter

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

Needs a local web server (e.g. python -m http.server) since it uses ES Modules that browsers block over file:// URLs.

In plain English

This project turns sound into a moving 3D landscape you can watch in your web browser. It listens to audio, either from a browser tab or a microphone input, and continuously renders the different frequencies present in that sound as a scrolling terrain made of hills and valleys, updating in real time as the audio plays. The visual effect is built using Three.js, a popular library for creating 3D graphics inside a web page, along with custom GLSL shaders, small programs that run directly on the graphics card to calculate how the terrain should bend and move based on the incoming sound. The Web Audio API, a browser feature for capturing and analyzing audio, supplies the raw frequency data that drives the visualisation. The terrain shows several kinds of information at once. The front edge displays the currently active frequencies, while the back edge tracks the loudest each frequency has ever peaked during the session. The two side edges show the maximum and average loudness recorded over time. Labels around the terrain update automatically to show frequency values in Hz or kHz and volume in decibels. Users can freely rotate, pan, and zoom the view to inspect the terrain from any angle, and a control panel offers sliders to adjust which frequency range is shown, how much time history is displayed, and whether the audio comes from a microphone or a browser audio stream. The code is organized into a few clear files: one sets up the 3D scene and rendering loop, one manages the on screen controls and labels, one handles audio capture and analysis, and one contains the custom shader code responsible for the visual deformation effect. To run it, a user needs to clone the project and serve it from a simple local web server, since the code uses modern JavaScript modules that browsers block from loading directly off the file system for security reasons. A one-line command using Python or Node.js is enough to start that server.

Copy-paste prompts

Prompt 1
Explain how the Web Audio API feeds frequency data into this 3D spectrogram's Three.js scene.
Prompt 2
Help me set up a local server to run this 3D audio spectrogram visualiser without CORS errors.
Prompt 3
Walk me through how the custom GLSL shaders deform the terrain mesh based on audio frequencies.
Prompt 4
Show me how to modify the control panel sliders to change the frequency range this visualiser displays.

Frequently asked questions

What is 3d-spectrogram?

A browser tool that visualizes live audio as a moving 3D terrain, using Three.js and GLSL shaders to turn sound frequencies into a scrolling landscape.

What language is 3d-spectrogram written in?

Mainly JavaScript. The stack also includes JavaScript, Three.js, GLSL.

How hard is 3d-spectrogram to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is 3d-spectrogram for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.