A STEM music app that separates audio into different tracks, such as drums, bass, piano, and vocals
Separate. Isolate. Create.
STEMBeats is an AI-powered music stem separation web app that splits any audio track into its individual components — Drums, Bass, Piano, and Vocals — giving producers, musicians, and audio engineers unprecedented control over their music.
- AI Stem Separation — Upload any MP3, WAV, FLAC, or AAC file and split it into 4 isolated stems using state-of-the-art ML models (Spleeter / Demucs)
- Interactive Stem Players — Play, mute, solo, and adjust volume for each stem independently
- 10-Band Master EQ — Fine-tune frequencies from 32Hz to 16kHz with preset profiles (Bass Boost, Vocal Enhance, Treble Boost)
- FX Chain — Apply real-time effects: Reverb, Echo/Delay, Pitch Shift, and Noise Gate
- Animated Waveform Visualizer — Color-coded frequency visualizer that pulses in real time
- Export Options — Download individual stems or a custom mix as MP3 or ZIP
- Responsive Design — Fully functional on desktop and mobile
| Layer | Technology |
|---|---|
| Frontend | HTML5, CSS3 (glassmorphism), Vanilla JavaScript |
| Audio Separation | Python, Spleeter or Demucs |
| Backend API | Flask / FastAPI |
| Audio Processing | librosa, pydub, ffmpeg |
| Storage | Local filesystem / AWS S3 (optional) |
| Deployment | Docker, Render / Railway / AWS |
STEMBeats/
├── frontend/
│ ├── index.html
│ ├── styles.css
│ └── app.js
├── backend/
│ ├── app.py
│ ├── separator.py
│ ├── effects.py
│ └── requirements.txt
├── models/
├── uploads/
├── outputs/
├── docker/
│ ├── Dockerfile
│ └── docker-compose.yml
├── README.md
└── .gitignore
- Python 3.8+
- ffmpeg installed on your system
- 4GB+ RAM (for ML model inference)
git clone https://github.com/80Kane/STEMBeats.git
cd STEMBeatscd backend
pip install -r requirements.txtpython app.py
# Server starts at http://localhost:5000python -m http.server 3000
# Open http://localhost:3000| Method | Endpoint | Description |
|---|---|---|
POST |
/api/separate |
Upload audio file, returns job ID |
GET |
/api/status/{job_id} |
Poll separation progress (0-100%) |
GET |
/api/stems/{job_id} |
Download separated stem files |
POST |
/api/export |
Export custom mix with applied FX |
DELETE |
/api/cleanup/{job_id} |
Remove temporary files |
- UI Prototype (Stem Players, EQ, FX Chain, Waveform Visualizer)
- Flask backend with Spleeter integration
- Real-time progress websocket
- User accounts and project history
- Cloud storage integration (S3)
- Mobile app (React Native)
- Collaborative editing (multi-user sessions)
- VST plugin export
- MIDI extraction from stems
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Timothy Rollings Jr (@80Kane)
Rollings 7 Legacy Media
Built with love for musicians, producers, and audio engineers.