Tabula Sonora 0.1.0
A native C++20 implementation of the Roland Sound Canvas VA synth voice
Loading...
Searching...
No Matches
smf_reader.hpp File Reference
#include <cstdint>
#include <filesystem>
#include <optional>
#include <span>
#include <string_view>
#include <vector>

Go to the source code of this file.

Classes

struct  ts::MidiEvent
 One scheduled MIDI message. More...
struct  ts::smf::SongLoop
 Loop points a file declared, in samples on the render-block grid. More...
struct  ts::smf::Song
 A parsed file: the event list plus what the container knew beyond the events. More...

Namespaces

namespace  ts
namespace  ts::smf
 A dependency-free Standard MIDI File reader.

Enumerations

enum class  ts::MidiEventKind { ts::channel , ts::sysex }
 What kind of message an event carries. More...

Functions

Song ts::smf::load (const std::filesystem::path &path, int sample_rate=32000)
 Reads a music file, with its loop points.
Song ts::smf::load (std::span< const std::uint8_t > data, int sample_rate=32000, std::string_view name={})
 Parses a music file held in memory, with its loop points.
std::vector< MidiEventts::smf::read (const std::filesystem::path &path, int sample_rate=32000)
 Reads a music file, ordered by position — load without the loop points.
std::vector< MidiEventts::smf::parse (std::span< const std::uint8_t > data, int sample_rate=32000)
 Parses a music file held in memory, ordered by position — load without the loop points.
std::int64_t ts::smf::quantise (double samples) noexcept
 Rounds a sample position onto the render-block grid.

Variables

constexpr int ts::smf::block_grid = 32
 Samples per render block — the grid events are applied on.
constexpr int ts::smf::default_tempo = 500'000
 Default tempo when a file sets none: 120 bpm, in microseconds per quarter note.