Skip to content

[In Progress] Drop a song into this folder and this tool automatically analyzes its BPM, labels its Camelot Key (1A-12B), an splits it into separate instrument stems using AI, and chops it into 8-bar segments.

Notifications You must be signed in to change notification settings

dennisrcao/split_stems

Repository files navigation

Split Stems


High Level Architecture

step1_BPMAnalysis.py - analyzes BPM and prepends "BPM_" to a copy of the song and puts in folder /output where BPM is a number step2_KeyAnalysis.py - analyzes Key of song, maps it to Camelot Wheel Notation, and prepends "Key_" where Key = 1A, 2B, 12B, etc. Camelot Wheel

**Notes: set explorer.sortOrder to "mixed"

Prerequisites

  • Python 3.11 (recommended) or Python 3.8-3.11
  • macOS (including Apple Silicon), Linux, or Windows
brew install [email protected]

Verify the installation:

python3.11 --version  # Should show Python 3.11.x

Set Up Virtual Environment

# Create virtual environment
python3.11 -m venv .venv

# Activate virtual environment
source .venv/bin/activate  # On macOS/Linux
# OR
.venv\Scripts\activate  # On Windows

# Install dependencies
pip install -r requirements.txt
# Install drum separator
cd drumsep
bash drumsepInstall

# Install synth separator
cd ../synthsep
bash synthsepInstall

Step 4: Run the Splitter

python split_stems.py

Troubleshooting

If you need to recreate the virtual environment:

deactivate
rm -rf .venv
python3.11 -m venv .venv
source .venv/bin/activate  # On macOS/Linux
pip install -r requirements.txt

Algorithm

Based on DeepRhythm

About

[In Progress] Drop a song into this folder and this tool automatically analyzes its BPM, labels its Camelot Key (1A-12B), an splits it into separate instrument stems using AI, and chops it into 8-bar segments.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages