A simple automatic DJ for Windows, macOS & Linux — beat-mix your MP3s into one continuous set.
Energy 7 turns a folder of MP3s into one continuous, beat-matched, volume-levelled mix. It detects each track's tempo and beat grid, finds where the music actually kicks in (handling long dance intros that idle for a minute or two before the drop), lines the beats up at every transition, and evens out the loudness so no track jumps out. You can play the set live, scrub and skip through it, watch a reactive visualizer, and export the whole thing as a single MP3.
- Automatic beat-mixing with beat-grid-locked crossfades between tracks.
- Three mix modes:
- Beat-aligned (keep tempo) — transitions lock to the beat grid on bar lines; the fade shortens automatically when two tracks differ in tempo so they don't clash.
- Tempo-matched (beat-lock) — every track is time-stretched (pitch preserved) to a shared master BPM so the beats stay locked all the way through each crossfade.
- EQ bass-swap (clean blend) — the club-style transition: the mids and highs crossfade smoothly while the bass is swapped on a beat, so the outgoing low end drops out exactly as the incoming kick/bassline lands and the two never muddy each other.
- Filter + echo FX — an optional transition effect that sweeps a high-pass filter and adds a beat-timed echo tail on the outgoing track; layers on top of any mix mode.
- Auto-Order (harmonic sequencing) — detects each track's musical key and BPM and reorders the playlist so every song flows into the most compatible next one (close tempo + Camelot-wheel key match), for a smoother, more consistent set. Use Lock Start to pin a chosen opener and have the rest sequenced around it.
- Long-intro detection — starts each track where the groove really begins, not on the ambient intro.
- Loudness normalization (LUFS) so the whole set sits at a consistent volume.
- Live transport — play / pause / stop, click-to-scrub, skip ±10 seconds, and jump to the next / previous track.
- Trippy visualizer — a rotating kaleidoscope that reacts to the music, with beat shockwaves and particle bursts.
- Export the finished mix as a single 320 kbps MP3, plus a timestamped tracklist and a
.cuesheet for sharing sets. - Playlists — save and load
.m3uplaylists, or.bmxproject files that also remember the analysis and settings. - Analysis cache — each file's BPM/key/beatgrid is remembered, so re-adding tracks is instant.
- Drag-and-drop files onto the window, and double-click a track's BPM or Key cell to correct it by hand.
- Modern dark interface with a neon logo and glitch-free, lossless playback.
- Windows with Python 3.9+
- ffmpeg (used to decode/encode audio) — see below; the included script can fetch it for you
- Python packages listed in
requirements.txt(installed automatically on first run)
- Download or clone this repository.
- Double-click
get_ffmpeg.batonce to downloadffmpeg.exeinto the folder (skip this if ffmpeg is already on your system PATH). - Double-click
run.bat. The first launch installs the Python packages, then opens the app. Subsequent launches start instantly.
Prefer the command line?
pip install -r requirements.txt
python energy7.pyEnergy 7 runs on macOS and Linux too.
- Make sure Python 3.9+ is installed.
- Get ffmpeg: double-click
get_ffmpeg.command(orbrew install ffmpegon macOS /sudo apt install ffmpegon Linux). - Double-click
run.command(macOS) — or from a terminal:bash run.command. The first run creates a local environment and installs the packages.
The first time you double-click a .command file macOS may block it; either
right-click → Open, or run chmod +x *.command once in the folder.
To build a standalone Energy7.app, run build_app_mac.command on a Mac
(the result is in dist/). Apps can only be built on the OS they target.
To produce a single double-clickable Energy7.exe that needs nothing installed:
- Run
get_ffmpeg.bat(so ffmpeg can be bundled into the exe). - Double-click
build_exe.bat. After a few minutes the result is atdist/Energy7.exe. You can copy that single file anywhere.
The exe is large (roughly 300–500 MB) because it packs in the audio-analysis libraries. Building must be done on Windows.
- Click Add MP3s and choose your tracks. Reorder them with Up / Down, or click Auto-Order to let Energy 7 sequence them for the smoothest mix (by key and tempo). To force a specific opening track, select it and click Lock Start (a ★ marks it) before Auto-Order.
- (Optional) Click Analyze to see each track's BPM, key, and start point.
- Set your Mix settings:
- Crossfade (sec) — transition length (8s is a good start).
- Loudness (LUFS) — target volume; −14 is the streaming standard.
- Skip long intros — start each track at the beat drop.
- Mix mode — Beat-aligned, Tempo-matched, or EQ bass-swap.
- Master BPM — for Tempo-matched mode; 0 = auto (uses the first track's BPM).
- Click Build Mix. When it reports "Mix ready", press Play.
- Use the transport row to scrub (click the bar), skip ±10s, or jump between tracks.
- Click Visuals for the kaleidoscope (Esc closes it; click it for a burst).
- Save MP3 exports the set; Save Tracklist writes a timestamped
tracklist and
.cuesheet; Save Playlist keeps the track list.
Each track is analyzed with librosa to estimate its tempo, beat positions, and the point where the music's energy rises (the intro skip). Audio is decoded and encoded through ffmpeg for reliable MP3 support. At each transition the outgoing track mixes out on a bar boundary and the incoming track enters on its own downbeat at that exact spot, with an equal-power crossfade spanning a whole number of bars, so the beats line up instead of clashing. In tempo-matched mode, tracks are time-stretched to a common BPM (with half/double-time handling) so the beats stay locked throughout. Loudness is normalized per track with pyloudnorm, and playback runs through sounddevice straight from the rendered audio at full quality.
| File | Purpose |
|---|---|
energy7.py |
The application (GUI + audio engine + visualizer). |
run.bat |
Installs dependencies and launches the app. |
get_ffmpeg.bat |
Downloads ffmpeg.exe into this folder. |
build_exe.bat |
Builds a standalone Energy7.exe with PyInstaller. |
generate_logo.py |
Regenerates the logo/icon (energy7.png, energy7.ico). |
requirements.txt |
Python dependencies. |
Python · Tkinter (GUI) · librosa · NumPy · sounddevice · pyloudnorm · ffmpeg · PyInstaller
Released under the MIT License — free to use, modify, and share; just keep the copyright notice.
Note on ffmpeg: ffmpeg is a separate program that Energy 7 calls at runtime;
it is not included in this repository. Run get_ffmpeg.bat to download it. The
built Energy7.exe (which bundles ffmpeg) is likewise not committed, so the
repository itself stays cleanly MIT-licensed.
See THIRD_PARTY_NOTICES.md for the licenses of components used or bundled.
- Easiest: build and release the exe without
ffmpeg.exein the folder (the build only bundles ffmpeg if it's present). Users then runget_ffmpeg.bat, and the release carries no copyleft components. - Self-contained exe (ffmpeg bundled): also fine, but include ffmpeg's GPL license text and a link to that ffmpeg build's source with the download, since you are redistributing a GPL binary. Energy 7's own code stays MIT because it calls ffmpeg as a separate program rather than linking it.
Created by mrnet15, built together with Claude.

