Metadata-Version: 2.4
Name: vcmix
Version: 0.13.0
Summary: AI-native open-source DAW — YAML-driven, cross-platform, AI Agent friendly
Author-email: youbanzhishi <xiaolong_steward@coze.email>
License: MIT
Keywords: daw,audio,mixing,yaml,ai,vst3
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Multimedia :: Sound/Audio
Classifier: Topic :: Multimedia :: Sound/Audio :: Mixers
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.24.0
Requires-Dist: soundfile>=0.12.0
Requires-Dist: scipy>=1.10.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: eval_type_backport>=0.2
Requires-Dist: pydantic>=2.0
Requires-Dist: mido>=1.3.0
Requires-Dist: rich>=13.0
Requires-Dist: click>=8.0
Requires-Dist: librosa>=0.10.0
Provides-Extra: web
Requires-Dist: fastapi>=0.100.0; extra == "web"
Requires-Dist: uvicorn>=0.20.0; extra == "web"
Requires-Dist: websockets>=11.0; extra == "web"
Provides-Extra: ai
Requires-Dist: demucs>=4.0; extra == "ai"
Provides-Extra: audio
Requires-Dist: sounddevice>=0.4.0; extra == "audio"
Requires-Dist: mido>=1.3.0; extra == "audio"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: mypy>=1.0; extra == "dev"
Requires-Dist: build>=1.0; extra == "dev"
Requires-Dist: twine>=4.0; extra == "dev"
Requires-Dist: fastapi>=0.100.0; extra == "dev"
Requires-Dist: uvicorn>=0.20.0; extra == "dev"
Requires-Dist: websockets>=11.0; extra == "dev"
Requires-Dist: httpx>=0.24.0; extra == "dev"
Provides-Extra: all
Requires-Dist: vcmix[ai,audio,web]; extra == "all"
Dynamic: license-file

# OpenDAW 🎵

**AI-native open-source DAW** — YAML-driven, cross-platform, AI Agent friendly.

> Reaper有的我们要有，Reaper没有的我们也要有。

## Three Core Principles

1. **Cross-platform** — Windows / macOS / Linux (pathlib, soundfile, ffmpeg, UTF-8)
2. **Lightweight & Fast** — Streaming + numpy vectorized + incremental rendering cache
3. **AI Agent Friendly** — YAML config + CLI zero-GUI + structured JSON output + exit codes

## VCMix — VocalChain Headless Mixing Host

VCMix is the core component of OpenDAW. It is a YAML-driven headless mixing host that parses declarative mix project files into signal routing graphs and auto-schedules VC plugin CLI for offline rendering.

### Quick Start

```bash
pip install -e .

# Render a mix project
vcmix render examples/jiuwanzi.yaml

# Validate config
vcmix validate examples/jiuwanzi.yaml

# View signal routing graph
vcmix graph examples/jiuwanzi.yaml

# Render with real-time analysis report
vcmix render examples/jiuwanzi.yaml --report

# Render with auto-fix gain staging
vcmix render examples/jiuwanzi.yaml --auto-fix --stream log

# JSON structured output (AI Agent friendly)
vcmix render examples/jiuwanzi.yaml --stream json

# A/B comparison rendering
vcmix render project.yaml --ab
vcmix render project.yaml --ab --diff

# Auto-mix: analyze + suggest + apply
vcmix automix project.yaml
vcmix automix project.yaml --dry-run
vcmix automix project.yaml --reference ref.wav

# View arrangement analysis
vcmix arrangement project.yaml --strategy

# List built-in presets
vcmix presets
```

### Rendering Pipeline

```
1. Parse YAML → ProjectConfig
2. Validate config & check audio files
3. Build signal routing DAG (tracks → inserts → sends → master)
4. Render each track through insert chain (sidechain routing)
5. Process Send/Return buses
6. Mix tracks with master level balancing + bus returns
7. Apply master insert chain + DataStream events
8. Write output + optional A/B versions + analysis report
```

## Feature Overview

| Feature | Phase | Status |
|---------|-------|--------|
| YAML-driven rendering | 1 | ✅ |
| Insert chain processing | 1 | ✅ |
| Multi-track mixing | 1 | ✅ |
| BPM note value sync | 1 | ✅ |
| Send/Return buses | 2 | ✅ |
| Sidechain routing | 2 | ✅ |
| A/B comparison | 2 | ✅ |
| AutoFix gain staging v2 | 2 | ✅ |
| Built-in presets (7) | 3 | ✅ |
| DataStream closed-loop | 4 | ✅ |
| Source separation | 5 | ✅ |
| Arrangement extraction | 5 | ✅ |
| AutoMix engine | 6 | ✅ |
| Reference matching | 6 | ✅ |
| Arrangement-aware mixing | 7 | ✅ |
| Web UI (FastAPI) | 8 | 🏃 In Progress |
| Native GUI | 9 | 🔮 Future |
| Full DAW | 10 | 🔮 Ultimate Goal |

## Supported VC Plugins (20)

### Gen 1 (16 plugins)
| Plugin | Key Parameters |
|--------|---------------|
| VC-EQ | low_cut, high_shelf, peak_freq, peak_gain |
| VC-Comp | threshold, ratio, attack, release, makeup |
| VC-Smooth | amount |
| VC-DeEsser | threshold, reduction, frequency |
| VC-Gain | gain |
| VC-Saturator | drive, mix |
| VC-Limiter | ceiling, release |
| VC-Delay | time, feedback, mix |
| VC-Reverb | room, decay, damping, mix, predelay, wetlpf |
| VC-DynamicEQ | frequency, threshold, q, attack, release |
| VC-Distortion | drive, tone, mix |
| VC-Noise | threshold, reduction |
| VC-SurgicalDeEsser | threshold, frequency, reduction |
| VC-Tune | speed, scale, transpose, autokey |
| VC-Gate | threshold, ratio, attack, hold, release, range |
| VC-Chorus | rate, depth, voices, mix, width |

### Gen 2 (4 plugins)
| Plugin | Type | Key Parameters |
|--------|------|---------------|
| VC-Stereo | 🆕 New | width, pan, mono_bass, bass_freq |
| VC-PitchShift | 🆕 New | semitones, cents, formant |
| VC-Reverb | ⬆️ FDN升级 | room, decay, damping, mix, predelay, wetlpf (8-delay FDN) |
| VC-Comp | ⬆️ 多段升级 | threshold, ratio, --multiband, --band-threshold, --band-ratio |



## DataStream Events (AI Agent API)

| Event | Data | Use Case |
|-------|------|----------|
| track_level | rms_db, peak_db, true_peak_db | Monitor per-track levels |
| effect_delta | before_rms, after_rms, delta_db | Track effect impact |
| master_level | rms_db, peak_db, true_peak_db | Master bus monitoring |
| warning | type (clipping/low_snr/sibilance), message | Problem detection |
| decision | action, params, reason | Auto-fix logging |

## Standardized Exit Codes

| Code | Meaning |
|------|---------|
| 0 | Success |
| 1 | Config error |
| 2 | Plugin CLI error |
| 3 | Audio I/O error |
| 4 | Render error |
| 5 | Cache error |
| 6 | Missing dependency |

## Docker Deployment

VCMix supports two Docker deployment approaches:

### Quick Deploy (Pre-built Image, Recommended)

```bash
cp .env.example .env
docker compose up -d
# Visit http://your-server-ip:8000
```

No build required. Works on 1GB servers. See [DEPLOY.md](DEPLOY.md) for details.

### Self-build

```bash
cp .env.example .env
docker compose up -d --build
```

See [DEPLOY.md](DEPLOY.md) for full documentation including:
- Pre-built vs self-build comparison
- Core vs Full mode features
- Environment variable reference
- Troubleshooting (memory issues, network problems)

## Related Projects

- [AudioFX](https://github.com/youbanzhishi/AudioFX) — VC Plugin Series (VST3 effects + CLI tools)

## License

MIT
