A Python music visualizer that renders animated frequency bars from local files and online streams.
- Python 3.9+
uvpackage managerffmpegfor audio muxing and extracting online stream audioyt-dlpfor YouTube and other supported online streams
Verify:
python --version
uv --version
ffmpeg -version
yt-dlp --versionFrom the repository root:
uv syncThis installs the dependencies defined in pyproject.toml.
.
├── main.py
├── pyproject.toml
├── uv.lock
├── README.md
└── music/
From the repository root:
uv run python main.pyYou can also pass a music folder manually:
uv run python main.py ~/MusicYou can also start with a YouTube URL or search term:
uv run python main.py "https://youtu.be/example"
uv run python main.py "daft punk harder better faster stronger"If no folder is provided, the script uses the local music/ folder.
SPACE— Play / Pause←/A— Seek backward 10 seconds→/D— Seek forward 10 secondsF— Open the YouTube find/search promptO— Open a local file pickerL— Open playlistR— Start render modeESC— Exit
Press R while a track is loaded to generate a *_viz.mp4 export.
If ffmpeg is available, the renderer will automatically mux the original audio into the output video.
- Drop audio files onto the window to load them directly
- Press
Fto paste a YouTube link or type a quick search query - Press
Oto browse for a local track - Use the playlist view to select another track
- The rendered video file is saved next to the source audio with
_viz.mp4appended
- youtube search
- Local renders are saved next to the source audio with
_viz.mp4appended - Stream renders are saved in the local
renders/folder