HouseOfMixtape-DAW-Plugin/README.md

92 lines
3.8 KiB
Markdown

# House of Mixtape — DAW Plugin (Path 2)
Cross-platform VST3/AU plugin that lets the user upload audio from inside
their DAW and receive Phoenix-extracted stems + MIDI directly into the
arrangement. Targets Win/Mac/Linux. AAX (Pro Tools) is a v2 ambition.
## Status: scaffolding (2026-05-03)
This directory holds the JUCE project skeleton + build instructions. The
actual plugin is **not yet compiled** — that's a separate sprint that
needs:
1. JUCE installed (clone https://github.com/juce-framework/JUCE)
2. CMake 3.22+
3. Per-OS toolchain (MSVC on Win, Xcode on macOS, gcc/clang on Linux)
The skeleton is enough to verify the build pipeline. Once a developer
has JUCE + CMake set up locally, `cmake -B build && cmake --build build`
should produce a working empty plugin that loads in Ableton/FL/Logic.
## Why JUCE (vs alternatives)
- **JUCE** : industry standard for VST3/AU plugins. Free for open-source,
paid licence ($800/yr indie) for commercial. Cross-platform out of the
box. Used by everyone (Pro-Q, Serum, Massive, ToneBoosters…).
- iPlug2 : MIT-licenced alternative. Smaller community. Considered.
- DPF : niche.
- Faust : DSP-only, not for HTTP-talking plugins.
JUCE wins on docs + support + the fact that we'll integrate HTTP +
file-import in C++, which is well-trod ground there.
## What the plugin does
```
┌───────────── DAW (Ableton/FL/Logic/Reaper) ─────────────┐
│ │
│ ┌──────────────────────────────────┐ │
│ │ House of Mixtape (VST3 plugin) │ │
│ │ │ │
│ │ 1. User drag-drops audio │ │
│ │ 2. POST registry.../jobs/upload │ │
│ │ 3. POST .../jobs/submit │ │
│ │ 4. Poll /status (progress bar) │ │
│ │ 5. GET /output → stems + MIDI │ │
│ │ 6. Drop stems into DAW tracks │ │
│ │ (via VST3 host import API) │ │
│ └──────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
```
## Files
| Path | Purpose |
|---|---|
| `CMakeLists.txt` | JUCE+CMake project. References JUCE submodule. |
| `Source/PluginProcessor.{h,cpp}` | AudioProcessor — does no DSP yet, just hosts the editor. |
| `Source/PluginEditor.{h,cpp}` | The plugin UI. Skeleton: Upload button + status text. |
| `Source/HomApiClient.{h,cpp}` | HTTP client for `registry.houseofmixtape.com/api/jobs/*`. Skeleton stubs. |
## Build (when ready)
```bash
# Clone JUCE next to this dir
cd ..
git clone --depth 1 https://github.com/juce-framework/JUCE.git
cd daw-plugin
# Configure + build (Linux example)
cmake -B build -DCMAKE_BUILD_TYPE=Release \
-DJUCE_BUILD_TESTS=OFF \
-DJUCE_DIR=$(pwd)/../JUCE
cmake --build build --target HouseOfMixtape_VST3 -j
# Output:
# build/HouseOfMixtape_artefacts/Release/VST3/HouseOfMixtape.vst3/
```
## Roadmap
- [x] Scaffold (this commit)
- [ ] HelloWorld build verified on at least one OS
- [ ] HTTP client wired to `registry.houseofmixtape.com`
- [ ] Bearer auth flow
- [ ] Audio drag-drop in plugin window
- [ ] Status polling + progress bar
- [ ] Stems import to DAW tracks (VST3 host file-drop API)
- [ ] AU build (macOS)
- [ ] Code signing + notarization (macOS)
- [ ] Win installer
- [ ] Distribution (Gumroad? Free? Subscription?)