Web app that produces a mashup of two songs by transferring the melody of Song A onto the timbre and rhythm of Song B.
| Component | Tech | Hosting |
|---|---|---|
| Frontend | React + Vite | Cloud Run |
| API | FastAPI | Cloud Run |
| Job queue | Cloud Tasks → Pub/Sub | — |
| Worker | FastAPI | GCE g2-standard-8 MIG (scales to zero) |
| Object storage | GCS bucket mashup-audio (input/, output/) |
— |
| Job state | Firestore | — |
- Demucs v4 stem separation on Song A and Song B
- Basic Pitch — extract MIDI from Song A's melody stem
- Librosa — beat tracking on Song B
- DDSP timbre transfer — synthesize Song A's MIDI using Song B's instrument timbre
- Mix synthesized melody with Song B's drum stem
- Upload result to GCS; update Firestore
.
├── frontend/ # React + Vite UI
├── api/ # FastAPI service: uploads, job submission, status
├── worker/ # FastAPI service: pulls from Pub/Sub, runs the pipeline
└── infra/ # Terraform for GCP resources
See each subdirectory's README.md for component-specific notes.