Immutable index for visible-note and marquee queries. More...
#include <spatial_index.hpp>
Public Member Functions | |
| TimePitchIndex (const timeline::MidiContent &content) | |
| std::size_t | size () const noexcept |
| TimePitchQueryResult | query (timebase::TickPosition start, timebase::TickPosition end, std::uint8_t lowest_pitch, std::uint8_t highest_pitch) const |
| Finds notes intersecting [start, end) within [lowest_pitch, highest_pitch]. | |
Immutable index for visible-note and marquee queries.
Time ranges are half-open and pitch bounds are inclusive. Results retain the model's canonical (start, id) order. The index augments its start-sorted tree with each subtree's latest end and pitch census, so a long note crossing the query's left edge remains reachable without scanning every earlier note.
|
inlineexplicit |
|
inlinenodiscard |
Finds notes intersecting [start, end) within [lowest_pitch, highest_pitch].
|
inlinenodiscardnoexcept |