GPU-accelerated audio-reactive music video generator
Project description
audioglow
GPU-accelerated audio-reactive music video generator. Turns your tracks into visual content with OpenGL shaders — album covers react to beats, bass, and frequencies in real time.
Installation
pip install audioglow
Requirements: ffmpeg must be installed and available in PATH.
Quick Start
Python API
from audioglow import render_video
# Minimal — just tracks, output, and video type:
result = render_video(
tracks=["tracks/my_song/"],
output="output.mp4",
video_type="cover_audio_reactive",
)
# Custom settings:
result = render_video(
tracks=["tracks/song1/", "tracks/song2/"],
output="mix.mp4",
video_type="cover_audio_reactive",
fps=60,
resolution=(1920, 1080),
bloom_strength=2.0,
bitrate="16M",
crossfade_ms=3000,
)
# result.video_path — Path to the rendered .mp4
# result.timestamps — track start times:
# [{"title": "song1", "start_ms": 0}, {"title": "song2", "start_ms": 187000}]
Each track directory must contain:
- One
.wavaudio file - One cover image (
.png,.jpg, or.jpeg)
CLI
# Single config
audioglow --config config.json --tracks-dir ./tracks --output ./out
# Batch — all configs in configs/
audioglow --all --output ./out
Video Types
| Type | Description |
|---|---|
cover_audio_reactive |
Album cover with reactive zoom, shake, bloom on blurred background |
cover_overlay_green |
Cover + green-screen video converted to palette-colored particles |
cover_overlay_spectrum |
Cover + audio frequency spectrum wave visualization |
cover_combo |
All effects combined: particles + spectrum + cover |
Overlay types (cover_overlay_green, cover_combo) require overlay_path pointing to a green-screen video file.
Parameters
| Parameter | Default | Description |
|---|---|---|
resolution |
(1920, 1080) |
Video resolution |
fps |
30 |
Frames per second |
cover_size |
800 |
Cover art size (px) |
zoom_strength |
0.3 |
Bass-reactive zoom intensity |
shake_strength |
4.0 / 0.5* |
Beat-reactive camera shake |
bloom_strength |
1.5 / 3.0* |
Glow intensity on beats |
blur_sigma |
40 / 35* |
Background blur radius |
bitrate |
"12M" |
Video bitrate |
crossfade_ms |
4000 |
Crossfade between tracks (ms) |
overlay_path |
None |
Path to overlay video (required for overlay types) |
config_file |
None |
JSON config file (overrides type defaults, kwargs override both) |
tracks_count |
all | Max tracks to use |
*cover_combo type uses different defaults optimized for layered effects.
Config Priority
Type Defaults → JSON config file → kwargs
(lowest) (highest)
JSON Config Example
{
"video_type": "cover_audio_reactive",
"resolution": [1920, 1080],
"fps": 30,
"zoom_strength": 0.3,
"shake_strength": 4.0,
"bloom_strength": 1.5,
"blur_sigma": 40,
"bitrate": "12M",
"tracks_count": 2,
"crossfade_ms": 4000
}
How It Works
- Audio analysis — librosa extracts RMS energy, onset strength, and 64-band mel spectrogram
- Palette extraction — dominant colors pulled from cover art
- GPU rendering — ModernGL (OpenGL 3.3) fragment shaders render each frame
- Encoding — ffmpeg encodes frames with hardware-accelerated H.264 (VideoToolbox / NVENC / VAAPI / QSV, fallback to libx264)
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file audioglow-0.1.3.tar.gz.
File metadata
- Download URL: audioglow-0.1.3.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8797ec2ddd9695d1b8b95e76a4acbee04f0b9fd1ee6265a2d5b0599007d6537d
|
|
| MD5 |
10bccc84d3b905b12e4cc7fea521d8d9
|
|
| BLAKE2b-256 |
26da00aa7ce54878d4b802ced93ae93087cb05983744b11212cee45c411eb275
|
Provenance
The following attestation bundles were made for audioglow-0.1.3.tar.gz:
Publisher:
publish.yml on fatyzzz/audioglow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
audioglow-0.1.3.tar.gz -
Subject digest:
8797ec2ddd9695d1b8b95e76a4acbee04f0b9fd1ee6265a2d5b0599007d6537d - Sigstore transparency entry: 926794579
- Sigstore integration time:
-
Permalink:
fatyzzz/audioglow@c0be95796220a3d7c50807a81a6631bed318154d -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/fatyzzz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c0be95796220a3d7c50807a81a6631bed318154d -
Trigger Event:
release
-
Statement type:
File details
Details for the file audioglow-0.1.3-py3-none-any.whl.
File metadata
- Download URL: audioglow-0.1.3-py3-none-any.whl
- Upload date:
- Size: 22.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53dc2e82fc68f05aab969a2ddedf14609d915b49c03536a3f80915dfb34f0960
|
|
| MD5 |
97f85388193714aef7aee9b6df5d55e4
|
|
| BLAKE2b-256 |
134cb6bbc8f4db5f48ebf924afdc3f05699bed6ab711eb74a1308f33e507a8c9
|
Provenance
The following attestation bundles were made for audioglow-0.1.3-py3-none-any.whl:
Publisher:
publish.yml on fatyzzz/audioglow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
audioglow-0.1.3-py3-none-any.whl -
Subject digest:
53dc2e82fc68f05aab969a2ddedf14609d915b49c03536a3f80915dfb34f0960 - Sigstore transparency entry: 926794581
- Sigstore integration time:
-
Permalink:
fatyzzz/audioglow@c0be95796220a3d7c50807a81a6631bed318154d -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/fatyzzz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c0be95796220a3d7c50807a81a6631bed318154d -
Trigger Event:
release
-
Statement type: