PitchVis

July 12, 2026 ยท View on GitHub

live analysis of musical pitches in an audio signal and a nice visualization

Watch a demo video here:

PitchVis Demo Video

More resources and demo videos on the Website

Get the Android App:

Get it on Google Play Get it on F-Droid

Building and Running

PitchVis uses a unified build system powered by cargo xtask.

Quick Start

# Run desktop viewer (development mode with fast iteration)
cargo xtask run

# Build desktop for production (always in release mode)
cargo xtask build desktop

# Build for WASM/web
cargo xtask build wasm

# Build for Android
cargo xtask build android

See BUILD.md for complete build documentation, including release builds, prerequisites, and troubleshooting.

Development

For fast iteration during development, use cargo xtask run which enables Bevy's dynamic linking feature for faster compile times.

For the WASM development server:

cd pitchvis_viewer/wasm
npm run serve

Serial Output

To output to a serial port (e.g., for LED strip control), run from within pitchvis_serial/:

cargo r --features bevy/dynamic_linking --bin pitchvis_serial -- </path/to/serial/fd> <baudrate>

The serial output format is: 0xFF <num_triples / 256> <num_triples % 256> <r1> <g1> <b1> <r2> <g2> <b2> ... LED values are within [0x00; 0xFE] and 0xFF is the marker byte beginning each sequence.

Prerequisites

  • Rust toolchain (install from https://rustup.rs/)
  • System dependencies for audio (cpal): libasound2-dev and libudev-dev on Linux

See BUILD.md for platform-specific prerequisites.