31 value += 0x9E3779B97F4A7C15ULL;
33 value *= 0xBF58476D1CE4E5B9ULL;
35 value *= 0x94D049BB133111EBULL;
79 if (name ==
"always") {
83 if (name ==
"every_nth") {
87 if (name ==
"first") {
130 switch (modifier.condition) {
136 return modifier.condition_period == 1 && modifier.condition_offset == 0;
138 return modifier.condition_period != 0 &&
139 modifier.condition_offset < modifier.condition_period;
141 return modifier.condition_period != 0 && modifier.condition_offset == 0;
157 constexpr std::uint64_t
value() const noexcept {
167 if (probability == 0)
178 std::uint16_t offset, std::uint64_t pass_index)
noexcept {
183 return pass_index == 0;
185 return period != 0 && pass_index % period == offset;
187 return period != 0 && pass_index % period ==
static_cast<std::uint64_t
>(period - 1);
197 std::uint64_t pass_index)
noexcept {
199 modifier.condition_offset, pass_index))
constexpr bool note_probability_sounds(std::uint16_t probability, NoteModifierDraw draw) noexcept
Tests an authored probability against draw.
Definition note_modifier.hpp:166
constexpr std::uint16_t note_ratchet_maximum
Largest admitted authored retrigger count.
Definition note_modifier.hpp:44
constexpr bool note_modifier_sounds(const NoteModifier &modifier, std::uint64_t draw_key, std::uint64_t pass_index) noexcept
Applies both the modifier's condition and deterministic probability gate.
Definition note_modifier.hpp:196
constexpr bool parse_note_condition(std::string_view name, NoteConditionKind &out) noexcept
Parses a canonical condition name into out.
Definition note_modifier.hpp:78
constexpr std::uint16_t note_probability_certain
Denominator and exact "always sounds" value for authored note probability.
Definition note_modifier.hpp:41
constexpr bool note_condition_holds(NoteConditionKind condition, std::uint16_t period, std::uint16_t offset, std::uint64_t pass_index) noexcept
Returns whether a pass-relative condition admits pass_index.
Definition note_modifier.hpp:177
constexpr bool note_modifier_well_formed(const NoteModifier &modifier) noexcept
Checks structural validity independently of whether the note identity exists.
Definition note_modifier.hpp:127
constexpr std::string_view note_condition_name(NoteConditionKind condition) noexcept
Returns the canonical persisted spelling of condition.
Definition note_modifier.hpp:62
NoteConditionKind
Pass-relative condition controlling when a note may sound.
Definition note_modifier.hpp:50
constexpr std::uint64_t note_modifier_mix(std::uint64_t value) noexcept
Mixes one 64-bit value with the stable note-modifier avalanche function.
Definition note_modifier.hpp:30
constexpr bool note_modifier_is_neutral(const NoteModifier &modifier) noexcept
Returns whether modifier encodes unconditional, single-play behavior.
Definition note_modifier.hpp:121
constexpr std::uint64_t note_modifier_draw_key(std::uint64_t seed, ItemId note_id) noexcept
Derives the deterministic draw key for one authored seed and note identity.
Definition note_modifier.hpp:147
@ EveryNth
Definition note_modifier.hpp:54
@ Always
Definition note_modifier.hpp:52
@ First
Definition note_modifier.hpp:56
@ Fill
Definition note_modifier.hpp:58
@ First
Definition clip_launch.hpp:81
Definition program_compiler.hpp:18
Nonzero monotonic identity for a Timeline-owned object.
Definition item_id.hpp:19
One deterministic probability draw for a note key and loop pass.
Definition note_modifier.hpp:152
constexpr std::uint64_t value() const noexcept
Returns the stable mixed value for this key/pass pair.
Definition note_modifier.hpp:157
std::uint64_t pass_index
Definition note_modifier.hpp:154
std::uint64_t key
Definition note_modifier.hpp:153
Sparse playback modifier attached to one note identity.
Definition note_modifier.hpp:103
std::uint16_t condition_period
Definition note_modifier.hpp:108
NoteConditionKind condition
Definition note_modifier.hpp:115
constexpr auto operator<=>(const NoteModifier &) const =default
ItemId note_id
Definition note_modifier.hpp:104
std::uint16_t ratchet_count
Definition note_modifier.hpp:114
std::uint16_t probability
Definition note_modifier.hpp:106
std::uint16_t condition_offset
Definition note_modifier.hpp:110