|
Operator SDK
Build MIDI processing and UI modes for the Operator device
|
Held-note registry for modes that rewrite note pitch (opt-in, header-only). More...
#include <cstdint>Classes | |
| struct | op::sdk::NoNotePayload |
| The payload of a registry that carries nothing beyond the note itself. More... | |
| class | op::sdk::HeldNotes< Capacity, Payload > |
| Remembers the notes a mode is sounding and the pitch each one went out on. More... | |
| struct | op::sdk::HeldNotes< Capacity, Payload >::Entry |
| One key that is down, and what the mode sounded for it. More... | |
| struct | op::sdk::HeldNotes< Capacity, Payload >::PressResult |
| Whether press recorded the key, and whether the note should sound. More... | |
| struct | op::sdk::HeldNotes< Capacity, Payload >::ReleaseResult |
| Whether release found the key, and whether the note should stop. More... | |
Namespaces | |
| namespace | op |
| Root namespace for the Operator SDK. | |
| namespace | op::sdk |
| Core SDK helpers for modes (timing, text, MIDI, and math). | |
Held-note registry for modes that rewrite note pitch (opt-in, header-only).
A mode that maps incoming notes onto other pitches can send two keys to the same output note. op::sdk::HeldNotes remembers which keys are down and which pitch each one went out on. That lets a mode sound an output note once, keep it ringing while any key mapped to it is still held, and release it at the pitch it was actually emitted on even if the mapping has moved in the meantime.
One instance holds Capacity entries. An entry is four bytes with no payload and eight with a 32-bit one, so the default 64 entries take 256 or 512 bytes of RAM. Both are template parameters, so a mode that holds fewer notes or carries more per note picks its own.
Every scan is bounded by the keys currently down, so a mode pays for the notes it is holding and an instance holding none does no work at all.
Include on demand. This header is deliberately not pulled in by operator_sdk.h.