A desktop application for music producers that solves the "shipping problem" by turning DAW chaos into released music.
Producers have dozens of unfinished Ableton projects sitting in folders. They don't fail at making music - they fail at finishing, packaging, and releasing consistently. The bottleneck is operational, not creative.
Release OS provides:
- Library Browser: Auto-parses Ableton .als files and displays all projects with metadata (BPM, key, audio clips)
- Audio Previews: Automatically generates 30-second previews from the most energetic section of your tracks
- Waveform Visualization: Auto-generated waveform covers for projects without artwork
- Smart Filtering: Filter by BPM range, status, or search by name
- Workflow Pipeline: Move projects through stages: Idea → Exported → Packaged → Released
- Auto-Import: Watches ~/Music/ReleaseDrop and automatically imports new projects
- SoundCloud Integration: One-click upload to SoundCloud with OAuth authentication (see SOUNDCLOUD_SETUP.md)
- Backend: Python with FastAPI, SQLAlchemy, librosa, FFmpeg
- Frontend: React with Vite, Tailwind CSS, WaveSurfer.js
- Database: SQLite
- Python 3.10+
- Node.js 18+
- FFmpeg (for audio processing)
Install FFmpeg on macOS:
brew install ffmpegcd backend
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On macOS/Linux
# Install dependencies
pip install -r requirements.txtcd frontend
# Install dependencies
npm installmkdir -p ~/Music/ReleaseDropYou need to run three processes:
cd backend
source venv/bin/activate
python main.pyThe API will be available at http://localhost:8000
For automatic project detection:
cd backend
source venv/bin/activate
python folder_watcher.pycd frontend
npm run devThe frontend will be available at http://localhost:5173
-
Automatic: Drop Ableton .als files into
~/Music/ReleaseDrop- If folder watcher is running, projects will be imported automatically
- Previews and waveforms will be generated in the background
-
Manual: Click the "Scan Projects" button in the UI to manually scan the folder
- View all projects in a grid with waveform visualizations
- Click on any project card to play its 30-second preview
- Use filters to find specific projects:
- Filter by workflow status (Idea, Exported, Packaged, Released)
- Search by project name
- Filter by BPM range
Each project has a status indicator with 4 stages:
- Idea (Blue): Initial unfinished projects
- Exported (Yellow): Exported to audio files
- Packaged (Orange): Mastered and packaged with metadata
- Released (Green): Published to streaming platforms
Click the colored bars at the bottom of each project card to update its status.
release-os/
├── backend/
│ ├── main.py # FastAPI application
│ ├── database.py # SQLAlchemy models
│ ├── ableton_parser.py # .als file parser
│ ├── audio_processor.py # Audio preview & waveform generation
│ ├── folder_watcher.py # Auto-import via watchdog
│ ├── requirements.txt # Python dependencies
│ └── data/
│ ├── release_os.db # SQLite database
│ ├── previews/ # Generated audio previews
│ └── covers/ # Generated waveform images
├── frontend/
│ ├── src/
│ │ ├── App.jsx # Main React component
│ │ └── main.jsx # Entry point
│ ├── package.json # Node dependencies
│ └── vite.config.js # Vite configuration
└── README.md
GET /projects- List all projects with optional filters- Query params:
status,search,min_bpm,max_bpm
- Query params:
POST /projects/scan- Manually scan watch folder for projectsPATCH /projects/{id}- Update project metadata- Body params:
status,genre,vibe,tags
- Body params:
DELETE /projects/{id}- Delete a projectGET /previews/{id}.mp3- Audio preview fileGET /covers/{id}.png- Waveform cover image
The system decompresses .als files (which are gzipped XML) and extracts:
- Project name
- BPM (tempo)
- Musical key (if available)
- Referenced audio files with durations
- Finds the longest audio clip in the project
- Analyzes audio energy using RMS to find the most interesting 30-second section
- Uses FFmpeg to extract that section as an MP3 preview
- Loads audio file using librosa
- Downsamples to match image width
- Calculates amplitude peaks
- Renders as a symmetric waveform image using PIL
- Add genre/vibe tagging with autocomplete
- Batch export projects to audio files
- Integration with streaming platforms (Spotify, SoundCloud)
- Social media post generation
- Collaboration features (share projects with others)
- Mobile app for on-the-go browsing
Make sure FFmpeg is installed:
brew install ffmpeg- Check that projects are in
~/Music/ReleaseDrop - Click "Scan Projects" to manually trigger import
- Check backend terminal for error messages
- Ensure the .als file references audio clips that exist
- Check that audio files are in the correct relative path to the .als file
- Look at backend logs for specific errors
- Make sure backend is running on port 8000
- Check for CORS errors in browser console
- Verify both servers are running
This is a personal project, but suggestions and feedback are welcome!
MIT