Thesia: Multi-track Spectrogram / Waveform Viewer

July 12, 2026 ยท View on GitHub

This project is in a beta stage.

Since 2025, this project has incorporated AI-generated code, primarily for:

  1. WebGL-related functionality using PixiJS
  2. Audio playback using the cpal crate

The core algorithms for rendering spectrograms and waveforms are not AI-generated.

Design Draft

design_draft

Build Setup

  1. Install prerequisites
    • Common
      • Rust
      • node.js >= v22
        • The most recent version tested: v24.12.0
    • macOS
      • Xcode
        • xcode-select --install to install Command Line Tools for Xcode
    • Windows
    • Webview2
    • vcpkg & OpenBLAS
      git clone https://github.com/microsoft/vcpkg
      .\vcpkg\bootstrap-vcpkg.bat
      .\vcpkg\vcpkg integrate install
      # add vcpkg directory to PATH and restart the terminal, then run:
      vcpkg install openblas:x64-windows-static openblas:x64-windows-static-md
      
    • Linux
      • ALSA
        • For Debian/Ubuntu: sudo apt install libasound2-dev
  2. Install npm packages & build
    # clone thesia repo & cd to the directory
    npm install
    npm run build:wasm
    

Run in Dev Mode

# if you need the WASM build for debugging, run `npm run build:wasm.debug` first
npm run tauri dev

DevTools

You can use the system webview's developer tools in dev mode.

React DevTools (for frontend)

npm install -g react-devtools
npx react-devtools
# run thesia in dev mode

Tauri DevTools (for backend)

When you run npm run tauri dev, the address of the Tauri devtools is displayed in the terminal (not the web console).

Packaging into an executable binary

npm run tauri build [--debug]

The target binary is under target/release/bundle/<os>/thesia.app.

Plan

  • Releasing v1.0
  • Selecting audio output device (and exclusive mode)
  • Region selection and loop playback
  • STFT parameters preset
  • pitch / formant tracker
  • Adaptive STFT (sth like iZotope RX Editor)
  • Showing the average FFT magnitude
  • Save normalized audio
  • Export as figures