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

Go to the source code of this file.

Classes

struct  ts::ControlUpdate
 One parameter set by one message. More...
struct  ts::XgAddress
 An XG message split into the parts a front end needs to act on it. More...

Namespaces

namespace  ts

Enumerations

enum class  ts::ControlTarget {
  ts::volume , ts::expression , ts::pan , ts::modulation ,
  ts::damper , ts::reverb_send , ts::chorus_send , ts::delay_send ,
  ts::bank , ts::bend_range , ts::vibrato_rate , ts::vibrato_depth ,
  ts::vibrato_delay , ts::tvf_cutoff , ts::env_attack , ts::env_decay ,
  ts::env_release , ts::velocity_depth , ts::velocity_offset , ts::channel_pressure ,
  ts::matrix_modulation_pitch , ts::matrix_pressure_pitch , ts::eq_low_frequency , ts::eq_low_gain ,
  ts::eq_high_frequency , ts::eq_high_gain , ts::eq_enabled
}
 Every part parameter a MIDI message can set to a value. More...
enum class  ts::XgMessage {
  ts::none , ts::system_on , ts::all_parameter_reset , ts::system_parameter ,
  ts::effect1 , ts::multi_part , ts::drum_setup
}
 What an XG message is, for a caller deciding whether it has the machinery to act. More...

Functions

std::optional< ControlUpdatets::decode_control_change (int channel, int controller, int value) noexcept
 Which parameter a Control Change writes, if it writes one.
std::optional< ControlUpdatets::decode_gs_sysex (std::span< const std::uint8_t > bytes, int port=0) noexcept
 Which parameter a Roland GS DT1 message writes, if it writes one.
bool ts::gs_checksum_ok (std::span< const std::uint8_t > bytes) noexcept
 Whether a GS DT1 message is well formed and its checksum folds to zero.
XgAddress ts::decode_xg_sysex (std::span< const std::uint8_t > bytes) noexcept
 Classifies an XG message and remaps its part number, without deciding what to do about it.
std::optional< ControlUpdatets::decode_xg_multi_part (const XgAddress &address) noexcept
 Which parameter an XG Multi Part message writes, if it writes one this vocabulary covers.