Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
mpe_synth_voice.hpp File Reference

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...

Detailed Description

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.