88 std::vector<ReverbPreset>
types;
98 std::vector<ChorusPreset>
types;
113 0.0, 0.10, 0.18, 0.28, 0.40, 0.55, 0.70, 0.84};
151 std::array<std::array<EqBand, gain_count>, 2>
low{};
152 std::array<std::array<EqBand, gain_count>, 2>
high{};
213 [[nodiscard]]
const EqPresets&
eq() const noexcept {
return eq_; }
216 [[nodiscard]]
bool has_eq() const noexcept {
return has_eq_; }
223 bool has_eq_ =
false;
The coefficient sets for the three GS send effects.
Definition effect_presets.hpp:167
const ChorusPresets & chorus() const noexcept
Definition effect_presets.hpp:203
static constexpr std::string_view path_variable
Environment variable that overrides where presets are read from.
Definition effect_presets.hpp:170
bool has_eq() const noexcept
Whether EQ coefficients are available.
Definition effect_presets.hpp:216
static void ensure_from(const RomImage &rom)
Computes the presets from the DLL, unless a set is already in force.
const ReverbPresets & reverb() const noexcept
Definition effect_presets.hpp:201
const DelayPresets & delay() const noexcept
Definition effect_presets.hpp:205
static EffectPresets from_parts(ReverbPresets reverb, ChorusPresets chorus, DelayPresets delay, EqPresets eq={})
Assembles a preset set from computed parts.
static EffectPresets parse(std::string_view json)
Parses presets from a JSON document.
static const EffectPresets & defaults()
The presets in use.
static void use(EffectPresets presets)
Supplies presets explicitly, for a host that manages its own data files.
static bool available()
Whether presets are available, without throwing.
const EqPresets & eq() const noexcept
The EQ coefficient tables.
Definition effect_presets.hpp:213
Read-only access to SCCore.dll as a data file.
Definition rom_image.hpp:39
Definition control_decode.hpp:7
One allpass stage: a read tap, a write tap and the two coefficients around them.
Definition effect_presets.hpp:12
double coef_a
Definition effect_presets.hpp:15
int write_tap
Definition effect_presets.hpp:13
double coef_b
Definition effect_presets.hpp:16
int read_tap
Definition effect_presets.hpp:14
Coefficients for one GS chorus type.
Definition effect_presets.hpp:68
int tap1_depth
Definition effect_presets.hpp:72
int tap2_depth
Definition effect_presets.hpp:74
double feedback
Definition effect_presets.hpp:76
double gain_tap
Definition effect_presets.hpp:78
int tap2_base
Definition effect_presets.hpp:75
double lpf_a
Definition effect_presets.hpp:70
int tap1_base
Definition effect_presets.hpp:73
double lpf_b
Definition effect_presets.hpp:71
double gain_write
Definition effect_presets.hpp:77
int lfo_increment
Definition effect_presets.hpp:69
The eight GS chorus types plus the power-on default.
Definition effect_presets.hpp:92
std::vector< ChorusPreset > types
Definition effect_presets.hpp:98
static constexpr double send_at_full_scale
Send-bus gain at controller 127.
Definition effect_presets.hpp:94
ChorusPreset defaults
Definition effect_presets.hpp:97
std::vector< std::string > type_names
Definition effect_presets.hpp:96
The ten GS delay types and the two published conversion tables.
Definition effect_presets.hpp:102
static constexpr std::array< double, 8 > pre_low_pass_coefficients
Pre-lowpass coefficient ladder; index 0 bypasses, which every preset uses.
Definition effect_presets.hpp:112
std::vector< double > time_milliseconds
Definition effect_presets.hpp:116
static constexpr double send_at_full_scale
Send-bus gain at full scale.
Definition effect_presets.hpp:104
std::vector< std::string > type_names
Definition effect_presets.hpp:115
static constexpr int pre_delay_samples
Fixed input pre-delay ahead of the feedback line, in samples — 60 ms at 32 kHz.
Definition effect_presets.hpp:109
std::vector< std::array< int, 10 > > raw_presets
Definition effect_presets.hpp:118
std::vector< double > ratio_percent
Definition effect_presets.hpp:117
One shelving band: H(z) = (b0 + b1·z⁻¹) / (1 − a1·z⁻¹).
Definition effect_presets.hpp:127
double a1
Definition effect_presets.hpp:130
double b1
Definition effect_presets.hpp:129
double b0
Definition effect_presets.hpp:128
The four-band EQ block's coefficient tables — two bands, two corner frequencies each.
Definition effect_presets.hpp:138
std::array< std::array< EqBand, gain_count >, 2 > low
[frequency][gain byte − 0x34].
Definition effect_presets.hpp:151
const EqBand & high_band(int frequency, int gain) const noexcept
std::array< std::array< EqBand, gain_count >, 2 > high
Definition effect_presets.hpp:152
static constexpr std::array< int, 2 > low_frequencies
Corner frequencies each band can be switched between, in Hz, for reporting only — the coefficients ca...
Definition effect_presets.hpp:147
const EqBand & low_band(int frequency, int gain) const noexcept
The band for a SysEx frequency and gain pair, clamped the way the engine clamps them.
static constexpr std::array< int, 2 > high_frequencies
Definition effect_presets.hpp:148
static constexpr int gain_base
The lowest gain byte, subtracted to index the tables.
Definition effect_presets.hpp:143
static constexpr int gain_count
Gain settings per band: 40 02 01 and 40 02 03 accept 0x34–0x4C, which is −12…+12 dB.
Definition effect_presets.hpp:140
Coefficients for one GS reverb type.
Definition effect_presets.hpp:53
ReverbTank tank_a
Definition effect_presets.hpp:55
double gain_feedback
Definition effect_presets.hpp:63
double gain_injection
Definition effect_presets.hpp:62
double damp_input
Definition effect_presets.hpp:60
ReverbTank tank_b
Definition effect_presets.hpp:56
double gain_input
Definition effect_presets.hpp:61
std::array< AllpassStage, 4 > diffusers
Definition effect_presets.hpp:54
TankAllpasses tank_allpasses
Definition effect_presets.hpp:57
double damp_feedback
Definition effect_presets.hpp:59
double gain_output
Definition effect_presets.hpp:64
int injection_tap
Definition effect_presets.hpp:58
The eight GS reverb types plus the power-on default.
Definition effect_presets.hpp:82
ReverbPreset defaults
Definition effect_presets.hpp:87
static constexpr double send_at_full_scale
Send-bus gain at controller 127.
Definition effect_presets.hpp:84
std::vector< std::string > type_names
Definition effect_presets.hpp:86
std::vector< ReverbPreset > types
Definition effect_presets.hpp:88
One reverb tank.
Definition effect_presets.hpp:38
double coef_b
Definition effect_presets.hpp:41
TankTaps taps
Definition effect_presets.hpp:39
double coef_a
Definition effect_presets.hpp:40
The two nested allpasses inside each tank.
Definition effect_presets.hpp:45
AllpassStage b0
Definition effect_presets.hpp:48
AllpassStage b1
Definition effect_presets.hpp:49
AllpassStage a1
Definition effect_presets.hpp:47
AllpassStage a0
Definition effect_presets.hpp:46
One reverb tank's eight ring offsets, resolved from their names once.
Definition effect_presets.hpp:26
int tap1c
Definition effect_presets.hpp:30
int tap14
Definition effect_presets.hpp:28
int tap18
Definition effect_presets.hpp:29
int tap20
Definition effect_presets.hpp:31
int tap10
Definition effect_presets.hpp:27
int tap2c
Definition effect_presets.hpp:34
int tap24
Definition effect_presets.hpp:32
int tap28
Definition effect_presets.hpp:33