Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::midi::Strum< MaximumClusterNotes > Class Template Reference

#include <strum.hpp>

Public Types

using Block = note_schedule::Block

Public Member Functions

constexpr Strum (StrumSpec spec={}) noexcept
constexpr bool valid () const noexcept
constexpr StrumSpec spec () const noexcept
MidiUtilityProcessReport process (const MidiBuffer &input, MidiBuffer &output, const Block &block) noexcept
MidiUtilityProcessReport flush (MidiBuffer &output, const Block &block) noexcept
 Emit every buffered and scheduled attack immediately.
MidiUtilityProcessReport reset (MidiBuffer &output, const Block &block) noexcept
MidiUtilityProcessReport replace_spec (StrumSpec spec, MidiBuffer &output, const Block &block) noexcept
bool empty () const noexcept

Static Public Member Functions

static constexpr MidiUtilityContract contract () noexcept
static constexpr bool valid_spec (StrumSpec spec) noexcept
static std::int64_t spacing_samples (StrumSpec spec, const Block &block) noexcept
 Sample stride between adjacent notes of a linear spread.
static std::int64_t shaped_step (StrumShape shape, double exponent, std::size_t index, std::size_t count) noexcept
 Position of the note at ordered index index in a cluster of count, expressed in whole spacing steps.
static std::int64_t shaped_step (StrumShape shape, std::size_t index, std::size_t count) noexcept
 Legacy shape-only helper; preserves the quadratic curve law.

Static Public Attributes

static constexpr std::uint64_t kTimingStream = 5
static constexpr std::uint64_t kVelocityStream = 6
static constexpr std::uint64_t kOrderStream = 7

Member Typedef Documentation

◆ Block

template<std::size_t MaximumClusterNotes = 16>
using pulp::midi::Strum< MaximumClusterNotes >::Block = note_schedule::Block

Constructor & Destructor Documentation

◆ Strum()

template<std::size_t MaximumClusterNotes = 16>
pulp::midi::Strum< MaximumClusterNotes >::Strum ( StrumSpec spec = {})
inlineexplicitconstexprnoexcept

Member Function Documentation

◆ contract()

template<std::size_t MaximumClusterNotes = 16>
constexpr MidiUtilityContract pulp::midi::Strum< MaximumClusterNotes >::contract ( )
inlinestaticconstexprnoexcept

◆ empty()

template<std::size_t MaximumClusterNotes = 16>
bool pulp::midi::Strum< MaximumClusterNotes >::empty ( ) const
inlinenoexcept

◆ flush()

template<std::size_t MaximumClusterNotes = 16>
MidiUtilityProcessReport pulp::midi::Strum< MaximumClusterNotes >::flush ( MidiBuffer & output,
const Block & block )
inlinenoexcept

Emit every buffered and scheduled attack immediately.

◆ process()

template<std::size_t MaximumClusterNotes = 16>
MidiUtilityProcessReport pulp::midi::Strum< MaximumClusterNotes >::process ( const MidiBuffer & input,
MidiBuffer & output,
const Block & block )
inlinenoexcept

◆ replace_spec()

template<std::size_t MaximumClusterNotes = 16>
MidiUtilityProcessReport pulp::midi::Strum< MaximumClusterNotes >::replace_spec ( StrumSpec spec,
MidiBuffer & output,
const Block & block )
inlinenoexcept

◆ reset()

template<std::size_t MaximumClusterNotes = 16>
MidiUtilityProcessReport pulp::midi::Strum< MaximumClusterNotes >::reset ( MidiBuffer & output,
const Block & block )
inlinenoexcept

◆ shaped_step() [1/2]

template<std::size_t MaximumClusterNotes = 16>
std::int64_t pulp::midi::Strum< MaximumClusterNotes >::shaped_step ( StrumShape shape,
double exponent,
std::size_t index,
std::size_t count )
inlinestaticnoexcept

Position of the note at ordered index index in a cluster of count, expressed in whole spacing steps.

Integer arithmetic throughout, so the spread is bit-exact and a test can derive it independently.

◆ shaped_step() [2/2]

template<std::size_t MaximumClusterNotes = 16>
std::int64_t pulp::midi::Strum< MaximumClusterNotes >::shaped_step ( StrumShape shape,
std::size_t index,
std::size_t count )
inlinestaticnoexcept

Legacy shape-only helper; preserves the quadratic curve law.

◆ spacing_samples()

template<std::size_t MaximumClusterNotes = 16>
std::int64_t pulp::midi::Strum< MaximumClusterNotes >::spacing_samples ( StrumSpec spec,
const Block & block )
inlinestaticnoexcept

Sample stride between adjacent notes of a linear spread.

◆ spec()

template<std::size_t MaximumClusterNotes = 16>
StrumSpec pulp::midi::Strum< MaximumClusterNotes >::spec ( ) const
inlineconstexprnoexcept

◆ valid()

template<std::size_t MaximumClusterNotes = 16>
bool pulp::midi::Strum< MaximumClusterNotes >::valid ( ) const
inlineconstexprnoexcept

◆ valid_spec()

template<std::size_t MaximumClusterNotes = 16>
constexpr bool pulp::midi::Strum< MaximumClusterNotes >::valid_spec ( StrumSpec spec)
inlinestaticconstexprnoexcept

Member Data Documentation

◆ kOrderStream

template<std::size_t MaximumClusterNotes = 16>
std::uint64_t pulp::midi::Strum< MaximumClusterNotes >::kOrderStream = 7
staticconstexpr

◆ kTimingStream

template<std::size_t MaximumClusterNotes = 16>
std::uint64_t pulp::midi::Strum< MaximumClusterNotes >::kTimingStream = 5
staticconstexpr

◆ kVelocityStream

template<std::size_t MaximumClusterNotes = 16>
std::uint64_t pulp::midi::Strum< MaximumClusterNotes >::kVelocityStream = 6
staticconstexpr

The documentation for this class was generated from the following file:
  • /home/runner/work/pulp/pulp/core/midi/include/pulp/midi/strum.hpp