27 lines
1.4 KiB
Markdown
27 lines
1.4 KiB
Markdown
# OpenSpec Change: enterprise-react-audio-midi
|
||
|
||
- **Change ID**: enterprise-react-audio-midi
|
||
- **Package**: `@suaveplan/react-audio`
|
||
- **Category**: react
|
||
- **Target path**: `packages/react/react-audio`
|
||
- **Status**: PROPOSED — Phase 3 of 3
|
||
- **Date**: 2026-05-19
|
||
- **Spec delta**: `./specs/react-audio/spec.md`
|
||
|
||
> Phase 3 of the decomposed `enterprise-react-audio` rollout. **Blocked** on Phases 1 and 2 landing first. Adds the MIDI learn-mode panel + `useMidiController` hook to the React surface.
|
||
|
||
## Summary
|
||
|
||
Ship `<MidiControllerSetup>` and `useMidiController(controllerId)`. The component reads connected controllers from the provider's `MidiControllerRegistry` (sourced via `@suaveplan/audio-controllers`) and exposes a learn-mode UI: user selects a target parameter, presses a control on the hardware, and the panel calls `bindParameter(plugin, paramId, capturedSource, { smoothingMs })`. Bindings persist via the provider's preset store and re-bind on next mount.
|
||
|
||
This is the smallest of the three phases (1 hook + 1 component + persistence wiring + a11y for the learn-flow). Spec delta has one requirement (MidiControllerSetup learn-mode panel).
|
||
|
||
## Out of scope
|
||
|
||
- Provider/hook foundation (Phase 1).
|
||
- Generic component library + presets + Storybook gate (Phase 2).
|
||
|
||
## Impact
|
||
|
||
After Phase 3 archives, the `@suaveplan/react-audio` package is **complete** — STATUS row flips from `–` to ✅ with the full description of all three phases.
|