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

The authored data at one lane and step coordinate. More...

#include <step_player.hpp>

Public Member Functions

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

Public Attributes

bool on = false
std::int8_t pitch_offset = 0
std::uint8_t velocity = 100
std::uint8_t gate_percent = 100
std::uint8_t probability_percent = 100
std::uint8_t ratchet_count = 1
std::int32_t timing_offset_ticks = 0
 Micro-timing nudge in ticks, applied to this step's hits and to their releases together so the gate length is preserved.
bool tie = false
bool slide = false

Detailed Description

The authored data at one lane and step coordinate.

gate_percent scales the step interval into the note's held portion. tie extends a still-sounding note of the same pitch instead of retriggering it; slide lets a sounding note of a different pitch overlap the new attack by one tick so a downstream voice can glide. Both are continuity policies over gate and pitch, not separate event kinds.

Member Function Documentation

◆ operator<=>()

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

Member Data Documentation

◆ gate_percent

std::uint8_t pulp::midi::StepPlayerStep::gate_percent = 100

◆ on

bool pulp::midi::StepPlayerStep::on = false

◆ pitch_offset

std::int8_t pulp::midi::StepPlayerStep::pitch_offset = 0

◆ probability_percent

std::uint8_t pulp::midi::StepPlayerStep::probability_percent = 100

◆ ratchet_count

std::uint8_t pulp::midi::StepPlayerStep::ratchet_count = 1

◆ slide

bool pulp::midi::StepPlayerStep::slide = false

◆ tie

bool pulp::midi::StepPlayerStep::tie = false

◆ timing_offset_ticks

std::int32_t pulp::midi::StepPlayerStep::timing_offset_ticks = 0

Micro-timing nudge in ticks, applied to this step's hits and to their releases together so the gate length is preserved.

This is what lets a caller place a hit off the grid. Swing, a groove table and a per-step nudge are all deterministic functions of the step's position, so a caller folds them into one offset and the kernel keeps owning the clocks, the sounding-note ledger and the releases. Without it a caller wanting swing has to run its own scheduler, which is the duplication this kernel exists to remove.

Negative values pull a step toward the preceding grid line. The kernel admits the step from its authored grid coordinate, so the result is independent of callback boundaries. An offset that would cross the preceding grid line is refused when the step is authored.

A nudge is held inside the step's own interval at fire time, so it can never reach the next step's grid position and the sequence cannot be reordered against itself.

◆ velocity

std::uint8_t pulp::midi::StepPlayerStep::velocity = 100

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