|
| static constexpr MidiUtilityContract | contract () noexcept |
| static constexpr bool | valid_spec (NoteDelaySpec spec) noexcept |
| static constexpr bool | is_identity (NoteDelaySpec spec) noexcept |
| | True when the kernel cannot change the stream, which is its declared bypass identity.
|
| static std::int64_t | repeat_stride (NoteDelaySpec spec, const Block &block) noexcept |
| | Sample stride between consecutive repeats under whichever clock the spec selects.
|
| static std::int64_t | repeat_gate (NoteDelaySpec spec, const Block &block) noexcept |
| | Length of an authorable echo gate.
|
| static std::int64_t | repeat_sample (NoteDelaySpec spec, const Block &block, std::int64_t attack_absolute, std::size_t index) noexcept |
| | Absolute sample of repeat index (1-based; index 0 is the dry note).
|
| static constexpr std::uint8_t | repeat_velocity (NoteDelaySpec spec, std::uint8_t velocity, std::size_t index) noexcept |
| | Velocity of repeat index under the shipped decay law.
|
| static constexpr std::optional< std::uint8_t > | repeat_note (NoteDelaySpec spec, std::uint8_t note, std::size_t index) noexcept |
| | Pitch of repeat index, or nothing when the cumulative transposition has walked the repeat off the MIDI note range.
|
template<std::size_t MaximumScheduledNotes = 128, std::size_t MaximumHeldSources = 64>
class pulp::midi::NoteDelay< MaximumScheduledNotes, MaximumHeldSources >
MaximumHeldSources bounds how many authored notes can have armed echoes at once.
Like the scheduled-note queue it is a polyphony bound, not the whole 16x128 key space: the key space would make the kernel a 52 KiB object to buy headroom no keyboard can reach.
template<std::size_t MaximumScheduledNotes = 128, std::size_t MaximumHeldSources = 64>
| constexpr std::optional< std::uint8_t > pulp::midi::NoteDelay< MaximumScheduledNotes, MaximumHeldSources >::repeat_note |
( |
NoteDelaySpec | spec, |
|
|
std::uint8_t | note, |
|
|
std::size_t | index ) |
|
inlinestaticconstexprnoexcept |
Pitch of repeat index, or nothing when the cumulative transposition has walked the repeat off the MIDI note range.
An out-of-range repeat is skipped rather than folded back, because folding would invent a pitch the authored transposition never asked for.