No description
Find a file
2026-04-26 18:36:10 -07:00
assets added GIFs 2020-03-11 11:20:08 +05:30
src minor improvements 2026-04-26 18:36:10 -07:00
tests minor improvements 2026-04-26 18:36:10 -07:00
.deepsource.toml Add .deepsource.toml 2020-07-07 14:55:16 +00:00
.gitignore Initial Commit 2020-03-09 22:25:20 +05:30
generating-vaporwave.pdf uploaded report 2020-03-14 21:12:27 +05:30
main.py minor improvements 2026-04-26 18:36:10 -07:00
pyproject.toml minor improvements 2026-04-26 18:36:10 -07:00
README.md minor improvements 2026-04-26 18:36:10 -07:00
uv.lock minor improvements 2026-04-26 18:36:10 -07:00

vaporwave generator 旺育栄

A music + image + video (+art soon, I promise) generator bodged together using code from various sources. Runs on Python 3. VHSVideo option is really really slow.

vaporwave generator 旺育栄 2.7
usage: vaporwave-generator [-h] [-M | -P | -V] [-v] [-i INPUT] [-o OUTPUT]
                           [-d DATE] [-t TIME]

| V A P O R W A V E || G E N E R A T O R |

options:
  -h, --help            show this help message and exit
  -M, --music           generate  v a p o r w a v e  music
  -P, --picture         generate VHS Style image
  -V, --video           VHS Style Video
  -v, --version         show program version
  -i INPUT, --input INPUT
  -o OUTPUT, --output OUTPUT
                        Output for specifying output video
  -d DATE, --date DATE  Custom Date in yyyy/mm/dd format. e.g 2020/5/14
  -t TIME, --time TIME  Custom Time in HH:MM format. e.g 11:23

Music mode downloads audio with yt-dlp, then uses Python audio processing to slow it down, detect beats, rearrange beat sections, and add reverb. Image mode adds saturation, VHS row glitches, noise, timestamp text, and a pause overlay. Video mode extracts frames with OpenCV, applies the image effect to each frame, rebuilds the video, and merges the original audio back with ffmpeg.

Installation

Install system tools:

Linux

sudo apt install ffmpeg

macOS

brew install ffmpeg uv

Install Python dependencies:

uv sync

The old get-beats Linux binary, aubio, noah, and Sox are no longer required. Music transformations now run through the Python code in src/VaporSong.py.

Usage

uv run vaporwave-generator --help

M U S I C

uv run vaporwave-generator -M -i "<YOUTUBE_URL>"
uv run vaporwave-generator -M -i "Song Title"

V H S I M A G E S

uv run vaporwave-generator -P -i "image.jpg"
uv run vaporwave-generator -P -i "image.jpg" -d 2020/5/14 -t 11:23

The image output is written to out.jpg.

V H S V I D E O

uv run vaporwave-generator -V -i "video.mp4" -o "output.mp4"

Video styling is slow because it applies the full image pipeline to every extracted frame.

Development

Run tests with:

uv run --extra dev pytest

Demo

M U S I C

Sample Album:

https://www.bandlab.com/programming_psychic/albums/844f21a0-fa65-ea11-a94c-0003ffd19c0f

V H S I M A G E

Input

Output

V H S V I D E O

See in.mp4 and out.mp4 in the assets folder.

Input

Output

To-Do

  • Replace get-beats binary with Python beat detection
  • Replace Sox music transforms with Python audio processing
  • Move Python dependency management to uv
  • Clean up CLI argument handling
  • Add VHS picture styler
  • Add video generator
  • Add custom date to VHS styler
  • Add artwork generator

Credits

@WJLiddy His repo Macintech forms the base code for the music generator.

@felipecustodio Using his repo virtualdreamsbot YouTube downloader code.

@Ragex04 His repo VHS_BingImages forms the base code for the VHS image styler.