- App name, UI text, page titles → Kithara Studio - Python module: lyria_client.py → kithara_client.py - Tailwind color classes: lyria-* → kithara-* - CSS custom properties: --lyria-* → --kithara-* - Database: lyria.db → kithara.db - Package name: kithara-studio-frontend - localStorage key: kithara-saved-searches - Add project logo (lyre icon, black on transparent, invert via CSS) Preserved as Google's property: - LYRIA_API_KEY, LYRIA_BASE_URL, LYRIA_DEFAULT_MODEL env vars - LYRIA_MODELS dict and model IDs (lyria-3-clip-preview, lyria-3-pro-preview) - Google Lyria API references in error messages and docstrings
50 lines
1.2 KiB
Markdown
50 lines
1.2 KiB
Markdown
# Kithara Studio
|
|
|
|
A webapp for generating, playing, and storing music clips using Google's Lyria music generation models.
|
|
|
|
Built by Kagamine Rin & Ryan.
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
# Backend
|
|
cd backend
|
|
python -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -r requirements.txt
|
|
cd src
|
|
uvicorn main:app --reload
|
|
|
|
# Frontend (new terminal)
|
|
cd frontend
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
## Architecture
|
|
|
|
- **Backend**: FastAPI (Python) — async API client for Google's Lyria models, SQLite metadata, file storage
|
|
- **Frontend**: React + Vite + TypeScript + Tailwind — dark theme, audio player
|
|
- **Storage**: SQLite for clip metadata, local filesystem for MP3 files
|
|
|
|
## API
|
|
|
|
| Endpoint | Method | Description |
|
|
|----------|--------|-------------|
|
|
| `/api/health` | GET | Health check |
|
|
| `/api/generate` | POST | Start clip generation |
|
|
| `/api/clips` | GET | List all clips |
|
|
| `/api/clips/{id}` | GET | Get clip metadata |
|
|
| `/api/clips/{id}/audio` | GET | Stream MP3 |
|
|
| `/api/clips/{id}` | DELETE | Delete clip |
|
|
|
|
## Models
|
|
|
|
- **v0.1**: Google Lyria 3 Clip Preview (30s, REST)
|
|
- **v0.2**: Google Lyria 3 Pro (structure-aware, ~3min)
|
|
- **v0.3**: Google Lyria RealTime (WebSocket streaming)
|
|
|
|
## License
|
|
|
|
MIT — Hardcore will never die.
|