Skip to main content

VOXIS

Audio, made spatial.


Voxis visualization
Voxis transforms sound into a 3D network of visual points.

Python OpenGL License Stars

Features · Install · Usage · Export

Voxis turns the audio track from a video or audio file into a standalone, 3D point mapping network. It's only usage is to look cool lol


✦ Coming Soon

Upcoming additions

  • Real-time microphone input
    Live mic instead of inputting files.

  • More graph types
    more graphs, thinking of 2d & 3d

Architecture and visual mapping

  1. Desktop and playback: PySide6 supplies the responsive interface, QMediaPlayer audio playback, volume, transport controls.
  2. Decode and analysis: a dedicated PyAV worker decodes only the selected audio stream into overlapping STFT windows. Each window detects up to forty meaningful local peaks with magnitude, prominence, SNR, bandwidth, phase.
  3. Context and phrases: MFCC-like coefficients, delta coefficients, centroid, bandwidth, contrast energy, flatness, rolloff, RMS, onset, dominant pitch, and harmonicity are standardized and embedded into a stable global 3D PCA space. Silence, onset, and spectral-change detection divide the recording into tracking segments.
  4. 3D mapping: selected peaks are emitted on a deterministic visual cadence instead of once per STFT hop. Log frequency shapes the vertical axis; centroid, timbre, stereo balance, bandwidth, and peak volume shape the horizontal axis; pitch, loudness, rolloff, harmonicity, and timbre shape depth.
  5. Typed point networks: temporal tracking, intra-frame harmonic webs, and cross-time similarity links are built separately. A bounded spatial hash and strict per-type/total degree limits prevent all-pairs graph soup and duplicate edges.
  6. Preview synchronization: the audio is pre-analyzed with progress before transport is enabled. A seek deterministically replays cached features so tracking and retained history match uninterrupted playback.
  7. Deterministic export: export analyzes a finite feature cache, resets the configured random seed, advances the same point simulation at exact frame_index / FPS timestamps, and renders with a standalone ModernGL context. Raw RGB frames are streamed to FFmpeg, which takes audio only from the imported source.
  8. GPU rendering: reusable ModernGL point/line buffers render up to 25,000 visible nodes and 100,000 visible lines. White point cores, colored halos, neutral-gray typed edges, a faint 3D acoustic grid, fog, auto-fit camera framing, and model-space three-axis tumble keep the structure legible and volumetric.
  9. Overlays and post effects: strongest-node labels and boxes remain visible throughout retained history and are shared by preview and offline export. Their percentage, maximum count, box size, text size, and opacity floor are adjustable. Logarithmic frequency legends, trails, restrained bloom, fine grain, flicker, vignette, and fog remain configurable.

Features

  • Imports MP4, MOV, MKV, AVI, WebM, MP3, WAV, FLAC, AAC, OGG, and M4A when their codecs are available.
  • Ignores video imagery completely.
  • Audio-synchronized play, pause, stop, replay, and seeking.
  • Perspective GPU rendering with multi-axis object tumble, fog, point scaling, camera drift, mouse rotation, and wheel zoom.
  • Adaptive 0–40 peak creation per STFT frame with true silence gating.
  • Acoustic clouds, branches, fans, long-lived history, typed edges, bounded approximate-neighbor searches, and adaptive preview density.
  • Optional bounded Spiderweb mode connects every visible point pair while respecting the configured GPU line limit.
  • Auto-fit framing, manual orbit/pan/zoom, reset, and slow non-identical X/Y/Z rotation with deterministic modulation and unrestricted 360° manual orbit.
  • Full-screen abstract preview.
  • Deterministic offline MP4 export at custom even dimensions, 24/30/60 FPS, and custom bitrate.
  • Export progress, cancellation, partial-file cleanup, disk-space validation, FFmpeg validation, and clear codec/GPU errors.
  • Persistent live settings and six visual presets.

Presets

  • Full Spectral Rainbow (default): violet/magenta through red, yellow, green, cyan, and near-white using logarithmic frequency.
  • Birdsong Spectral: a bright high-frequency cyan/white birdsong palette.
  • Scientific Neon: magenta, violet, cyan, green, yellow, and white.
  • Archival Gold: amber, gold, orange, and white with stronger grain.
  • Monochrome Laboratory: white/gray with a pale green monitor cast.
  • Deep Space: dim blue, violet, white, and red with stronger fog and slower rotation.

Requirements

  • Python 3.11 or newer
  • OpenGL 3.3 Core or newer
  • FFmpeg with libx264 and AAC encoding

Install from PyPI

python -m pip install voxis3d
voxis

Alpine Linux installation

This is the installation path for Alpine/musl:

cd /home/user/voxis

doas apk add \
  py3-pyside6 py3-numpy py3-pytest py3-pip py3-setuptools \
  python3-dev build-base pkgconf \
  ffmpeg ffmpeg-dev \
  mesa-dri-gallium mesa-dev libx11-dev \
  qt6-qtmultimedia qt6-qtmultimedia-gstreamer

python3 -m venv --system-site-packages .venv
. .venv/bin/activate
python -m pip install --upgrade pip setuptools wheel
python -m pip install av moderngl glcontext
python -m pip install -e . --no-deps

Other Linux distributions

Create a virtual environment first:

python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip setuptools wheel
python -m pip install -e ".[test]"

Ubuntu/Debian multimedia packages:

sudo apt install ffmpeg libgl1-mesa-dri libegl1 \
  gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
  gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly

Fedora:

sudo dnf install ffmpeg mesa-dri-drivers \
  gstreamer1-plugins-base gstreamer1-plugins-good \
  gstreamer1-plugins-bad-free gstreamer1-plugins-ugly-free

Arch:

sudo pacman -S ffmpeg mesa gstreamer gst-plugins-base \
  gst-plugins-good gst-plugins-bad gst-plugins-ugly

On macOS install FFmpeg with brew install ffmpeg. On Windows, install FFmpeg and place its bin directory on PATH.

Run

cd /home/user/voxis
. .venv/bin/activate
voxis

Or run without the console script:

PYTHONPATH=src python -m voxis

Preview usage

  1. Select Import file and choose video or audio.
  2. Use Preview to restart deterministically from zero, or use Play/Pause.
  3. Wait for the one-time analysis progress to finish, then preview or seek. Seeking reconstructs the correct retained historical state from the cache.
  4. Adjust any live parameter. Left-drag rotates, right/middle-drag pans, and the wheel zooms.
  5. Use Reset camera, Reset visualization, F11, or double-click the preview as needed.

The visualization occupies the application window; there is deliberately no source-video panel.

MP4 export

  1. Import a source with audio.
  2. Select a preset and settings.
  3. Choose Export MP4.
  4. Select the output path, custom resolution, 24/30/60 FPS, and bitrate.
  5. Watch analysis/render progress or choose Cancel export.

The default export is 1920×1080, 60 FPS, H.264 at 16 Mbps with stereo AAC. Dimensions are normalized to even values for broadly compatible yuv420p.

Settings

The UI updates all controls immediately:

  • FFT/hop size, adaptive peak limits, prominence, noise/silence thresholds, smoothing, phrase sensitivity, and band influence;
  • core/halo size, white-core brightness, fresh-node size/glow boost and settle time, visible count, active/history durations, persistent history, overall spread, independent horizontal/frequency-axis spacing, and brightness;
  • independent temporal/intra/similarity edge strength and caps, total degree, line count, thickness, brightness, opacity, lifetime, and Spiderweb mode;
  • X/Y/Z rotation, auto-fit occupancy/smoothing, new-node camera follow strength, responsiveness, speed, hold/return timing, distance limits, FOV, and fog;
  • palette reversal, persistent scientific label percentage/count/box/text/ opacity controls, preview/export frequency legends, and medium/high quality limits;
  • glow/bloom/grain/flicker/trails/scanlines/chromatic separation, background brightness, and custom background color;
  • random seed, preview FPS limit, and analysis look-ahead.

Factory defaults are documented in config/default.json.

Higher Sensitivity generally admits more audible activity and therefore more points. Higher Peak prominence or Spectral noise floor rejects more peaks and therefore produces fewer points. Increasing Node interval also reduces point creation. For strict ceilings, use Maximum peaks / frame, Visible point limit, Max lines per point, and Visible line limit.

Error handling and logs

Rotating diagnostic logs are stored at:

~/.local/state/voxis/application.log

If Voxis is useful to you, consider leaving a star. It helps other people find my project on GitHub :) .


Inspired by Lucio Arese's project

Metadata

Release files for voxis3d 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for voxis3d 1.1.0
File Size Uploaded
voxis3d-1.1.0.tar.gz 77.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for voxis3d 1.1.0
File Interpreter ABI Platform
voxis3d-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 153.7 kB

Release files / voxis3d-1.1.0.tar.gz

Download URL voxis3d-1.1.0.tar.gz
Size 77.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a2f074697371644895457ab31f677393abdf70018341307272bb42af24c30bb7
BLAKE2b-256 checksum
How to use checksums
83041e09d31337fb0b424bcf7126714dc86bbd9cfc21cb092546a7ec2186e782
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.5

Release files / voxis3d-1.1.0-py3-none-any.whl

Download URL voxis3d-1.1.0-py3-none-any.whl
Size 75.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
faf43116f94ffc2d993d84adfc256f61f304a7f171fc0c119a5bd35074b1e254
BLAKE2b-256 checksum
How to use checksums
59535713b0d87f6ce827af3bace8262289acbeed84a6bc33a4c0fc8e987208fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.5

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page