5.7 KiB
5.7 KiB
@suaveplan/audio-controllers - Universal MIDI hardware controller plugins (Kontrol S88, Maschine, Traktor S4): MidiControllerPlugin base with injectable MidiAccessAdapter, hot-plug FSM via @suaveplan/fsm, transport-synced Sequencer + Arpeggiator, CC-mapping DSL, learn mode, LED feedback, bindParameter integration with @suaveplan/audio-fx-plugin-base, AUDIO_CONTROLLERS.* error registry, full OTel surface.
Universal MIDI hardware controller plugins. Built on
@suaveplan/audio-core, @suaveplan/audio-transport, @suaveplan/events,
@suaveplan/fsm, and @suaveplan/audio-fx-plugin-base. Ships three
concrete controllers (Kontrol S88, Maschine, Traktor S4) plus a shared
MidiControllerPlugin base, Sequencer, Arpeggiator, learn-mode helper,
and bindParameter integration with the FX plugin family.
Documentation tree
- arpeggiator —
Arpeggiatoris the transport-synced note-walker shared between the Kontrol S88's hardware arpeggio mode and any consu…- arpeggiator —
Arpeggiatoris the transport-synced note-walker shared between the Kontrol S88's hardware arpeggio mode and any consu…
- arpeggiator —
- connection-fsm — Builds the controller connection-state machine consumed by every
MidiControllerPlugin. The FSM models the lifecycle o… - midi-controller-plugin — The abstract
MidiControllerPluginis the universal base class shared by every concrete MIDI controller integrati… - otel — Centralises the OpenTelemetry surface consumed by every module in the package. The
getControllerOtel()accessor lazil… - binding —
bindParameterwires a typedMidiSource(a controller CC, note-velocity, or future hardware source) to a parameter o…- bind-parameter —
bindParameterwires a typedMidiSource(a controller CC, note-velocity, or future hardware source) to a parameter o…
- bind-parameter —
- error-codes — Defines the canonical
AUDIO_CONTROLLERS.*error-code registry for the@suaveplan/audio-controllerspackage. Every e…- error-codes — Defines the canonical
AUDIO_CONTROLLERS.*error-code registry for the@suaveplan/audio-controllerspackage. Every e…
- error-codes — Defines the canonical
- learn — Functional helper around the
MidiControllerPlugin.enterLearnMode/exitLearnModetoggle. The base class natively sw…- learn-mode — Functional helper around the
MidiControllerPlugin.enterLearnMode/exitLearnModetoggle. The base class natively sw…
- learn-mode — Functional helper around the
- kontrol-s88 —
KontrolS88Pluginis the concreteMidiControllerPluginsubclass for Native Instruments Kontrol S88 MK2/MK3 — an 88-k…- kontrol-s88 —
KontrolS88Pluginis the concreteMidiControllerPluginsubclass for Native Instruments Kontrol S88 MK2/MK3 — an 88-k…
- kontrol-s88 —
- maschine —
MaschinePluginis the concreteMidiControllerPluginsubclass for Native Instruments Maschine: a 16-pad grid with pe…- maschine —
MaschinePluginis the concreteMidiControllerPluginsubclass for Native Instruments Maschine: a 16-pad grid with pe…
- maschine —
- traktor-s4 —
TraktorS4Pluginis the concreteMidiControllerPluginsubclass for the Native Instruments Traktor Kontrol S4 MK3 — a…- traktor-s4 —
TraktorS4Pluginis the concreteMidiControllerPluginsubclass for the Native Instruments Traktor Kontrol S4 MK3 — a…
- traktor-s4 —
- sequencer —
Sequenceris the transport-synced step engine consumed by everyMidiControllerPlugin. It schedules every active ste…- sequencer —
Sequenceris the transport-synced step engine consumed by everyMidiControllerPlugin. It schedules every active ste…
- sequencer —
Shipped controllers
KontrolS88Plugin— 88-key weighted keyboard with scale modes, arp, pitch-bend, mod-wheel, and per-key RGB LED feedback.MaschinePlugin— 16-pad grid with per-pad velocity, step sequencer rows, and slot-based sample loading.TraktorS4Plugin— 4-channel DJ controller with mixer, crossfader, and four decks.
Features
- Injectable
MidiAccessAdapterseam — the package never reaches fornavigator.requestMIDIAccessdirectly, so tests run under happy-dom with a fake-device fixture and zero mocks. - Connection-state FSM via
@suaveplan/fsmwith hot-plug recovery. - Declarative CC mapping DSL with Zod-validated bytes.
- Learn mode for runtime CC capture.
- Transport-synced sequencer and arpeggiator — sample-accurate, offline
renderable, no
setInterval. - OpenTelemetry counters, histograms, and spans (no-op without an exporter).
- Zod schemas at every public boundary.
- Six
AUDIO_CONTROLLERS.*error codes with severity metadata.
Subpath exports
| Path | Module |
|---|---|
. |
barrel |
./base/midi-controller-plugin |
MidiControllerPlugin + types |
./sequencer/sequencer |
Sequencer |
./arpeggiator/arpeggiator |
Arpeggiator |
./learn/learn-mode |
captureNextLearn |
./binding |
bindParameter, bindPluginPreset |
./plugins/kontrol-s88 |
KontrolS88Plugin |
./plugins/maschine |
MaschinePlugin |
./plugins/traktor-s4 |
TraktorS4Plugin |
./error-codes |
AUDIO_CONTROLLERS_* registry |
Status
0.1.0 — Wave 1 migration. 100/100/100/100 coverage.