Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::midi::StrumSpec Struct Reference

Spread a near-simultaneous cluster of notes across time. More...

#include <strum.hpp>

Public Member Functions

constexpr auto operator<=> (const StrumSpec &) const =default

Public Attributes

StrumDirection direction = StrumDirection::Up
StrumShape shape = StrumShape::Linear
double shape_exponent = 2.0
 Continuous spread exponent. Two preserves the legacy curved shapes.
StrumSpacingSync sync = StrumSpacingSync::Milliseconds
std::int64_t window_samples = 0
 Cluster window in samples: how close two notes must be to be one chord.
timebase::TickDuration spacing_interval {timebase::kTicksPerQuarter / 16}
std::int64_t spacing_milliseconds = 20
std::int64_t timing_jitter_samples = 0
 Forward-only timing jitter per note, in samples.
std::uint8_t velocity_jitter = 0
std::int16_t velocity_tilt = 0
 Signed velocity tilt across the ordered cluster, in MIDI velocity units.
std::uint64_t seed = 0

Detailed Description

Spread a near-simultaneous cluster of notes across time.

Notes arriving within window of the cluster's first note are one chord. The kernel cannot know a cluster is finished until the window closes, so it costs exactly one window of latency — declared here rather than hidden.

A single-note cluster is emitted unchanged, which is the declared identity.

Member Function Documentation

◆ operator<=>()

auto pulp::midi::StrumSpec::operator<=> ( const StrumSpec & ) const
constexprdefault

Member Data Documentation

◆ direction

StrumDirection pulp::midi::StrumSpec::direction = StrumDirection::Up

◆ seed

std::uint64_t pulp::midi::StrumSpec::seed = 0

◆ shape

StrumShape pulp::midi::StrumSpec::shape = StrumShape::Linear

◆ shape_exponent

double pulp::midi::StrumSpec::shape_exponent = 2.0

Continuous spread exponent. Two preserves the legacy curved shapes.

◆ spacing_interval

timebase::TickDuration pulp::midi::StrumSpec::spacing_interval {timebase::kTicksPerQuarter / 16}

◆ spacing_milliseconds

std::int64_t pulp::midi::StrumSpec::spacing_milliseconds = 20

◆ sync

StrumSpacingSync pulp::midi::StrumSpec::sync = StrumSpacingSync::Milliseconds

◆ timing_jitter_samples

std::int64_t pulp::midi::StrumSpec::timing_jitter_samples = 0

Forward-only timing jitter per note, in samples.

◆ velocity_jitter

std::uint8_t pulp::midi::StrumSpec::velocity_jitter = 0

◆ velocity_tilt

std::int16_t pulp::midi::StrumSpec::velocity_tilt = 0

Signed velocity tilt across the ordered cluster, in MIDI velocity units.

◆ window_samples

std::int64_t pulp::midi::StrumSpec::window_samples = 0

Cluster window in samples: how close two notes must be to be one chord.


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