Tabula Sonora 0.1.0
A native C++20 implementation of the Roland Sound Canvas VA synth voice
Loading...
Searching...
No Matches
ts::EfxRecord Struct Reference

One record of the DLL's own insertion-effect directory. More...

#include <tabulasonora/insertion_effect.hpp>

Public Attributes

std::string name
 Display name, exactly as the DLL spells it (Equalizer, Lo-Fi, OD / OD2, …).
std::uint16_t type_key = 0xFFFF
 GS type key, (MSB << 8) | LSB.
std::uint16_t dispatch = 1
 Index into the algorithm dispatch table.
std::array< std::uint8_t, 0x1C > defaults {}
 The 0x1C default bytes the type loads: the 20 GS parameters (40 03 0316), the three send levels (1719), and the internal routing bytes behind them.

Detailed Description

One record of the DLL's own insertion-effect directory.

The engine names its 65 EFX types itself: a 0x28-byte record carries the display name, the GS type key 40 03 00/01 selects, the index into the algorithm dispatch table, and the default parameter block the type loads on selection. The record layout — and the fact that the Ghidra symbol lands 12 bytes into it, on the type key — is documented in the spec's FINDINGS; the directory sits at 0x181895660, 66 records, the 66th being the blank 0xFFFF "no effect assigned" state.

Member Data Documentation

◆ name

std::string ts::EfxRecord::name

Display name, exactly as the DLL spells it (Equalizer, Lo-Fi, OD / OD2, …).

◆ type_key

std::uint16_t ts::EfxRecord::type_key = 0xFFFF

GS type key, (MSB << 8) | LSB.

◆ dispatch

std::uint16_t ts::EfxRecord::dispatch = 1

Index into the algorithm dispatch table.

A scramble of the type order — Spectrum is type 01 01 but algorithm 6 — so it is read from the record, never inferred.

◆ defaults

std::array<std::uint8_t, 0x1C> ts::EfxRecord::defaults {}

The 0x1C default bytes the type loads: the 20 GS parameters (40 03 0316), the three send levels (1719), and the internal routing bytes behind them.


The documentation for this struct was generated from the following file: