Helper base classes for writing MPE-aware synth voices. More...
#include <pulp/midi/mpe_buffer.hpp>#include <pulp/midi/mpe_voice_tracker.hpp>#include <pulp/runtime/budget_policy.hpp>#include <algorithm>#include <array>#include <atomic>#include <cmath>#include <cstddef>#include <cstdint>#include <limits>#include <vector>Go to the source code of this file.
Classes | |
| class | pulp::midi::MpeSynthVoice |
| Abstract base for a single MPE voice. More... | |
| struct | pulp::midi::MpeVoiceAllocatorTelemetry |
| struct | pulp::midi::MpeVoiceAllocatorRuntimeBudgetReport |
| class | pulp::midi::MpeGlideDetector |
| Glide/legato detector — observes MPE note-on events and reports when a new note on the same channel overlaps an existing held note. More... | |
| class | pulp::midi::MpeVoiceAllocator< Voice > |
| Routes MPE expression events to a pool of voices of type Voice (which must derive from MpeSynthVoice). More... | |
Namespaces | |
| namespace | pulp |
| namespace | pulp::midi |
Enumerations | |
| enum class | pulp::midi::MpeVoiceStealMode { pulp::midi::Oldest , pulp::midi::LowestVelocity , pulp::midi::LowestPitch , pulp::midi::HighestPitch } |
| Voice-steal policy when the pool is full. More... | |
Helper base classes for writing MPE-aware synth voices.
MpeSynthVoice owns the per-note expression state (pitch bend, pressure, timbre) with one-pole smoothing applied per-sample, so a subclass only needs to implement note lifecycle and audio rendering.
MpeVoiceAllocator<Voice> routes MpeExpressionEvents from an MpeBuffer to a pool of voices, with a configurable voice-steal policy when the pool is exhausted.