Skip to main content

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 .wav audio 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

  1. Audio analysis — librosa extracts RMS energy, onset strength, and 64-band mel spectrogram
  2. Palette extraction — dominant colors pulled from cover art
  3. GPU rendering — ModernGL (OpenGL 3.3) fragment shaders render each frame
  4. Encoding — ffmpeg encodes frames with hardware-accelerated H.264 (VideoToolbox / NVENC / VAAPI / QSV, fallback to libx264)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

audioglow-0.1.3.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

audioglow-0.1.3-py3-none-any.whl (22.1 kB view details)

Uploaded Python 3

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

Hashes for audioglow-0.1.3.tar.gz
Algorithm Hash digest
SHA256 8797ec2ddd9695d1b8b95e76a4acbee04f0b9fd1ee6265a2d5b0599007d6537d
MD5 10bccc84d3b905b12e4cc7fea521d8d9
BLAKE2b-256 26da00aa7ce54878d4b802ced93ae93087cb05983744b11212cee45c411eb275

See more details on using hashes here.

Provenance

The following attestation bundles were made for audioglow-0.1.3.tar.gz:

Publisher: publish.yml on fatyzzz/audioglow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for audioglow-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 53dc2e82fc68f05aab969a2ddedf14609d915b49c03536a3f80915dfb34f0960
MD5 97f85388193714aef7aee9b6df5d55e4
BLAKE2b-256 134cb6bbc8f4db5f48ebf924afdc3f05699bed6ab711eb74a1308f33e507a8c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for audioglow-0.1.3-py3-none-any.whl:

Publisher: publish.yml on fatyzzz/audioglow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page