Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::audio::UnisonVoiceStackManager< MaximumLogicalNotes, MaximumVoicesPerNote > Class Template Reference

#include <unison_voice_stack.hpp>

Public Member Functions

bool prepare (InstrumentVoiceAllocator &allocator) noexcept
 Control-side binding to an already prepared, empty allocator.
bool prepared () const noexcept
UnisonVoiceStackResult trigger (const UnisonVoiceStackTrigger &request, std::span< UnisonVoiceTermination > terminations, std::span< VoiceModulationBuffer > modulation={}) noexcept
 Audio-thread-safe, bounded complete-stack allocation.
std::span< const UnisonVoiceChild > children (std::uint64_t source_id) const noexcept
 Non-owning child view, invalidated by the next mutating manager call.
bool release (std::uint64_t source_id) noexcept
 Audio-thread-safe note-off for every still-active child in a stack.
bool finish (std::uint32_t voice_index, std::uint64_t voice_id, std::uint64_t generation, std::span< VoiceModulationBuffer > modulation={}) noexcept
UnisonVoiceStackTerminationResult terminate_all (std::span< UnisonVoiceTermination > terminations, std::span< VoiceModulationBuffer > modulation={}) noexcept
bool reset (std::span< VoiceModulationBuffer > modulation={}) noexcept

Member Function Documentation

◆ children()

template<std::size_t MaximumLogicalNotes = 32, std::size_t MaximumVoicesPerNote = 16>
std::span< const UnisonVoiceChild > pulp::audio::UnisonVoiceStackManager< MaximumLogicalNotes, MaximumVoicesPerNote >::children ( std::uint64_t source_id) const
inlinenoexcept

Non-owning child view, invalidated by the next mutating manager call.

◆ finish()

template<std::size_t MaximumLogicalNotes = 32, std::size_t MaximumVoicesPerNote = 16>
bool pulp::audio::UnisonVoiceStackManager< MaximumLogicalNotes, MaximumVoicesPerNote >::finish ( std::uint32_t voice_index,
std::uint64_t voice_id,
std::uint64_t generation,
std::span< VoiceModulationBuffer > modulation = {} )
inlinenoexcept

◆ prepare()

template<std::size_t MaximumLogicalNotes = 32, std::size_t MaximumVoicesPerNote = 16>
bool pulp::audio::UnisonVoiceStackManager< MaximumLogicalNotes, MaximumVoicesPerNote >::prepare ( InstrumentVoiceAllocator & allocator)
inlinenoexcept

Control-side binding to an already prepared, empty allocator.

The allocator becomes exclusively owned by this manager until reset().

◆ prepared()

template<std::size_t MaximumLogicalNotes = 32, std::size_t MaximumVoicesPerNote = 16>
bool pulp::audio::UnisonVoiceStackManager< MaximumLogicalNotes, MaximumVoicesPerNote >::prepared ( ) const
inlinenoexcept

◆ release()

template<std::size_t MaximumLogicalNotes = 32, std::size_t MaximumVoicesPerNote = 16>
bool pulp::audio::UnisonVoiceStackManager< MaximumLogicalNotes, MaximumVoicesPerNote >::release ( std::uint64_t source_id)
inlinenoexcept

Audio-thread-safe note-off for every still-active child in a stack.

◆ reset()

template<std::size_t MaximumLogicalNotes = 32, std::size_t MaximumVoicesPerNote = 16>
bool pulp::audio::UnisonVoiceStackManager< MaximumLogicalNotes, MaximumVoicesPerNote >::reset ( std::span< VoiceModulationBuffer > modulation = {})
inlinenoexcept

◆ terminate_all()

template<std::size_t MaximumLogicalNotes = 32, std::size_t MaximumVoicesPerNote = 16>
UnisonVoiceStackTerminationResult pulp::audio::UnisonVoiceStackManager< MaximumLogicalNotes, MaximumVoicesPerNote >::terminate_all ( std::span< UnisonVoiceTermination > terminations,
std::span< VoiceModulationBuffer > modulation = {} )
inlinenoexcept

◆ trigger()

template<std::size_t MaximumLogicalNotes = 32, std::size_t MaximumVoicesPerNote = 16>
UnisonVoiceStackResult pulp::audio::UnisonVoiceStackManager< MaximumLogicalNotes, MaximumVoicesPerNote >::trigger ( const UnisonVoiceStackTrigger & request,
std::span< UnisonVoiceTermination > terminations,
std::span< VoiceModulationBuffer > modulation = {} )
inlinenoexcept

Audio-thread-safe, bounded complete-stack allocation.

Invalid requests and insufficient termination storage leave all owned state unchanged.


The documentation for this class was generated from the following file: