Skip to content

Phase 3 / M9: Map MIDI notes, CC, velocity, and pitch bend #14

Open

Description

@norbot7865

Objective

Map MIDI messages into the normal play/control/release scheduler path with deterministic note ownership and cleanup.

Scope

  • Implement midi-devices, note/CC/pitch bindings, unbinding, and binding inspection.
  • Resolve devices/channels/synths/parameters symbolically and report conflicts/errors structurally.
  • Map note-on/off to play/release and declared voice-scoped velocity to its configured range.
  • Handle repeated device/channel/note presses with deterministic LIFO ownership.
  • Scale CC and pitch bend with validated transforms/smoothing and require declared compatible parameters.
  • On disconnect, release device-owned notes, mark bindings inactive, and support optional reconnection without crashing audio.
  • Add MIDI source→frame→scheduler→handle traces and scale, repeated-note, CC sweep, pitch, disconnect, burst, and no-stuck-note tests.

Acceptance criteria

  • MIDI scale/velocity, repeated-note LIFO release, CC, and explicit pitch-bend fixtures pass with exact timing.
  • Disconnects and unbinding leave no stuck voices.
  • Mapping uses the existing bounded sample-accurate scheduler and never silently drops events.

Spec: phase-3.md §§20–22, 24, 26–27, 29–33, 35, 40 (Milestone 9), 42.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestphase-3Phase 3: live controls, automation, MIDI, patch transitions, and nREPL

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions