RemixFlow — backend
FastAPI backend for the RemixFlow music-evolution platform. See the repo-root
README.md for the full picture; this file covers the Python package.
Install
pip install -e ".[audio,dev]" # audio extra adds librosa (tempo/pitch/key)
Core deps are pure PyPI wheels. The bundled libsndfile (via soundfile) reads
and writes MP3/WAV/FLAC/OGG with no system packages — no ffmpeg needed.
The audio extra pulls in librosa for tempo/key detection and
time-stretch/pitch-shift.
Run
remixflow serve # http://127.0.0.1:8770 (API + built UI)
remixflow serve --reload # dev auto-reload
Interactive API docs at /docs.
Layout
| Path | Role |
|---|---|
params.py |
Single source of truth for every steering control & identity lock (PRD §3, §4). Served to the UI via /api/controls. |
models.py |
Pydantic schemas: Song, Variant, Steering, evolution TreeNode. |
audio/io.py |
Load/save with graceful degradation (soundfile → librosa). |
audio/analysis.py |
Feature extraction + Musical-DNA embedding + similarity. |
generation/base.py |
The Generator contract every backend implements. |
generation/dsp.py |
Reference DSP backend — real, audible variations today. |
generation/registry.py |
Plug point for model backends (ACE-Step, Stable Audio, MusicGen). |
service.py |
Orchestration: import → steer → generate → evaluate → branch. |
store.py |
File-backed store (JSON + audio dir); swap for a DB later. |
app.py |
FastAPI routes; serves the built React UI from static/. |
Adding a real model backend
Implement Generator and register it:
from remixflow.generation import Generator, register_generator
class AceStepBackend(Generator):
name = "ace-step"
description = "ACE-Step 1.5 diffusion"
def generate(self, parent, steering, *, original=None, seed=None):
... # map steering -> latent edits, run the model, return GenerationResult
register_generator(AceStepBackend())
It then appears in /api/backends and is selectable via POST /api/generate?backend=ace-step.
Config (env vars)
| Var | Default | Meaning |
|---|---|---|
REMIXFLOW_DATA_DIR |
./remixflow_data |
Where songs/variants/audio persist. |
REMIXFLOW_MAX_UPLOAD_MB |
50 |
Upload size cap. |
REMIXFLOW_CORS |
* |
Comma-separated allowed origins. |
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file remixflow-0.1.0.tar.gz.
File metadata
- Download URL: remixflow-0.1.0.tar.gz
- Upload date:
- Size: 96.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65f0b2694d9a57840c4b1c735d224fdd30ef8325ddc1ebe192371a6801ef1735
|
|
| MD5 |
549d56c664b1e9e0c8e23ceee3cd2568
|
|
| BLAKE2b-256 |
eb3bf668c03bf5d631c85e40fb5373016d1126893a23e19b3b4af347e6393d26
|
File details
Details for the file remixflow-0.1.0-py3-none-any.whl.
File metadata
- Download URL: remixflow-0.1.0-py3-none-any.whl
- Upload date:
- Size: 95.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca0486f2923493c7cf807426d0999ab37b70883eef3ac282405cf1842f6a4e01
|
|
| MD5 |
64f887bb2b9ba4e982358b5dca07bc03
|
|
| BLAKE2b-256 |
33af922b08be71ea87de617a31eb55cef7550a767087ac73851f8c730f471a38
|