|
Tabula Sonora 0.1.0
A native C++20 implementation of the Roland Sound Canvas VA synth voice
|
Loop points a file declared, in samples on the render-block grid. More...
#include <tabulasonora/smf_reader.hpp>
Public Attributes | |
| std::int64_t | start = 0 |
| First sample of the loop body. | |
| std::int64_t | end = 0 |
| Sample the jump back happens at. | |
| bool | soft = false |
| Whether the file marked the loop end explicitly (a soft loop). | |
Loop points a file declared, in samples on the render-block grid.
Four marker dialects are scanned, ported from spessasynth_core_c (itself from midi_processing's scan_for_loops): Touhou's CC 2/CC 4 pair in format-0 files, RPG Maker's CC 111 (ignored when the file carries EMIDI track designations, which give CC 111 another meaning), the XMI/EMIDI CC 116–119 set, and loopStart/loopEnd marker meta events. The outermost surviving start and end win. A start with no end runs to the last voice event; a degenerate loop — empty, or starting on the song's final tick — is dropped entirely.
| std::int64_t ts::smf::SongLoop::start = 0 |
First sample of the loop body.
| std::int64_t ts::smf::SongLoop::end = 0 |
Sample the jump back happens at.
| bool ts::smf::SongLoop::soft = false |
Whether the file marked the loop end explicitly (a soft loop).
A soft jump rewinds without replaying state — anything that must change at the jump is inside the loop body and re-fires on its own — where a hard loop's end is inferred and the jump replays controllers the way a seek does.