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