Loading...
Searching...
No Matches
Nodes::Looper::midi_export Struct Reference
Detailed Description
What is heard of a MIDI loop, copied by the processing thread for a worker to write it. Fixed storage: the copy does not allocate.
Public Member Functions | |
| std::string | to_smf () const |
Public Attributes | |
| std::array< midi_note, midi_loop::max_notes > | notes {} |
| std::array< midi_control, midi_loop::max_controls > | controls {} |
| int | note_count {} |
| int | control_count {} |
| int64_t | length {} |
| double | rate {48000.} |
| double | tempo {120.} |
| int | meter_numerator {4} |
| int | meter_denominator {4} |
| bool | wrap {true} |
| std::atomic_bool | in_use {} |
Static Public Attributes | |
| static constexpr int | ticks_per_quarter = 480 |
Member Function Documentation
◆ to_smf()
|
inline |
The loop as a Standard MIDI File, at the tempo and in the meter it was played in. Ticks count quarters, so the tempo only says how fast they went: score places a file by its quarters. The file ends exactly at the loop's end.
< note-offs, then the rest, at a given tick
Member Data Documentation
◆ in_use
| std::atomic_bool Nodes::Looper::midi_export::in_use {} |
A job is writing it: the processing thread does not fill it until the job is over. The job may outlive the looper that made it.
The documentation for this struct was generated from the following file: