Tabula Sonora 0.1.0
A native C++20 implementation of the Roland Sound Canvas VA synth voice
Loading...
Searching...
No Matches
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
 Nts
 NsmfA dependency-free Standard MIDI File reader
 CSongLoopLoop points a file declared, in samples on the render-block grid
 CSongA parsed file: the event list plus what the container knew beyond the events
 CAllpassStageOne allpass stage: a read tap, a write tap and the two coefficients around them
 CAlternateEntryAn entry of the alternate-articulation table
 CChannelMaskPer-channel mute and solo
 CChorusThe GS chorus: a modulated delay line with two anti-phase taps
 CChorusPresetCoefficients for one GS chorus type
 CChorusPresetsThe eight GS chorus types plus the power-on default
 CControllerTimelineA controller's value over time, as breakpoints
 CControlMatrixThe GS controller assignment matrix (40 2x): six sources, each with eleven depths
 CModulationWhat one source contributes, once its depths have been scaled by its current amount
 CLawWhat turns a summed destination into its own unit — part_mod_depth_recalc, once per destination
 CControlUpdateOne parameter set by one message
 CDcBlockerThe engine's DC blocker: one design, instantiated once on each effect input
 CDecodedWaveA wave decoded from the ROM, with everything playback needs
 CDelayParametersCompiled coefficients for one GS delay type
 CDelayPresetsThe ten GS delay types and the two published conversion tables
 CDllIdentityIdentity of the SCCore.dll build every offset in the manifest is pinned to
 CDrumKeyOne drum key's settings within a kit
 CDrumKeyOverridesPer-part coarse-pitch and panpot overrides, set by NRPN
 CDrumKitTableThe drum kit records: for each of 128 keys, which tone sounds and how it is levelled, tuned, panned and grouped
 CEffectA stereo send effect fed from one mono bus
 CEffectPresetsThe coefficient sets for the three GS send effects
 CEffectProgrammerComputes the reverb, chorus and delay coefficient sets from the DLL's own preset tables — the managed re-implementation of the engine's start-up register program
 CEfxRecordOne record of the DLL's own insertion-effect directory
 CEngineNoiseThe engine's shared pseudo-random generator
 CEnvelopeMachineThe segment-rate and segment-shape machine shared by the TVA, TVF and pitch envelopes
 CEqBandOne shelving band: H(z) = (b0 + b1·z⁻¹) / (1 − a1·z⁻¹)
 CEqPresetsThe four-band EQ block's coefficient tables — two bands, two corner frequencies each
 CEqualizerThe GS four-band EQ: a low shelf and a high shelf, in series, on a stereo bus
 CFrameRingA lock-free single-producer, single-consumer ring of interleaved stereo frames
 CInsertionEffectThe GS insertion EFX block: one stereo effect ahead of the send network
 CInterpolatorThe sampler's 4-tap FIR resampler — the single most timbre-defining element of the engine
 CLfoConfigOne LFO's static configuration
 CLfoEngineThe two LFO engines that modulate every partial
 CLimitsDepth clamp and rounding constant for a destination
 CLfoRunnerOne LFO's running state: phase, delay and fade-in accumulators, stepped a control tick at a time
 CLiveRegionA region read straight from the DLL at render time rather than cached to a .bin file — the two wave-ROM banks and the drum-kit lookup tables
 CMidiEventOne scheduled MIDI message
 CMultisampleZoneA key range within a multisample and the wave it selects
 CNoteRecordOne note, with every parameter latched as it was at note-on
 CNoteRendererRenders one note by assembling the whole voice chain: sampler, pitch, filter, amplitude and pan
 CControllersOptional per-note controller curves
 CPanLawThe engine's pan law: an exact 128-entry table, not a computed curve
 CPartOne of the sixteen parts: the channel state a running engine keeps between events
 CPartialParametersA zero-copy typed view over one 0x6e-byte partial parameter block inside a tone record
 CPartModifiersThe GS part modify offsets, as the synthesis chains consume them
 CPartTimelinesPer-channel controller timelines
 CPatchDirectoryThe static patch directory: resolves a program change and a played note to the waves that sound, entirely from ROM tables with no engine involved
 CPitchChainThe pitch side of a voice: key-follow, transposition, the pitch envelope, and bend
 CKeyFollowThe effective pitch key and its fractional crossfade weight
 CPitchEnvelopeThe pitch envelope's decoded segment targets and timings
 CPitchEnvelopeRunnerWalks a pitch envelope one control tick at a time
 CPitchRampThe per-voice pitch ramp that glides the sampler's read rate across a control block
 CProgramReferenceA (map, bank, program) triple that resolves through the same three-level lookup
 CRenderedNoteOne rendered note: stereo output plus the pre-pan mono the send buses are fed from
 CRenderOptionsHow a sequence should be rendered
 CRenderResultA finished render
 CResolvedPartialOne partial that sounds for a given note and velocity
 CResolvedToneThe waves that sound for one tone at a given note and velocity
 CReverbThe GS reverb: a Schroeder/Dattorro tank transcribed from the engine
 CReverbPresetCoefficients for one GS reverb type
 CReverbPresetsThe eight GS reverb types plus the power-on default
 CReverbTankOne reverb tank
 CRomIdentityErrorThrown when the supplied SCCore.dll is not the build the table offsets are pinned to
 CRomImageRead-only access to SCCore.dll as a data file
 CRomLocationWhere a front end looked for the ROM, and what it found
 CRxSwitchesThe GS receive switches, one per message class the module can be told to ignore
 CSamplerWave playback: decode, then resample at a moving rate while honouring the loop
 CSegmentEnvelopeA four-segment envelope with a release, evaluated at any sample position
 CSequenceA parsed sequence: controller timelines, notes, and the global effect selections
 CSequencePlayerDrives a running engine from a MIDI event list
 CStateVariableFilterThe engine's filter: a Chamberlin state-variable filter, with all four responses taken as different taps of the same two-integrator loop
 CSystemDelayThe GS system delay: three taps off one feedback line, behind a fixed input pre-delay
 CTableEntryOne static table sliced byte-for-byte out of the DLL
 CTableManifestThe machine-readable map of everything the engine needs out of SCCore.dll: the pinned build identity, every static table's byte-exact offset, and the live ROM/directory regions
 CTableSetThe static tables the engine needs, loaded from SCCore.dll or from a directory of extracted .bin slices
 CnamesCache file names for every table in the manifest
 CTankAllpassesThe two nested allpasses inside each tank
 CTankTapsOne reverb tank's eight ring offsets, resolved from their names once
 CToneOne melodic tone record: an ASCII name, a master level, and up to two partial parameter blocks
 CToneGeneratorThe real-time engine: MIDI in, audio out, rendered a block at a time
 CToneGeneratorOptionsHow a running engine should behave
 CToneZoneOne key zone of a tone, expressed in MIDI note numbers
 CTvaChainThe amplitude side of a voice: the level chain that turns static bytes into a gain, and the four-segment envelope that moves it
 CTvfChainThe filter side of a voice: the cutoff chain that turns static bytes into the two coefficients the state-variable filter needs, and the envelope that moves the cutoff over time
 COffsetsThe envelope's peak and its five stage offsets, in cutoff units relative to that peak
 CEnvelopeA cutoff envelope and the base cutoff its offsets are added to
 CCoefficientsThe pair of coefficients the filter runs on for one control block
 CVoiceA handle to one voice slot: an index into the pool's parallel arrays plus the control-rate operations that act on it
 CVoicePoolThe voice allocator
 CWaveDescriptorOne entry of the wave-descriptor table: where a sample lives in the wave ROM, how it is tuned, and how it loops
 CWaveRomThe 24 MB wave ROM embedded in SCCore.dll — the literal Sound Canvas hardware mask ROM, two banks addressed in 1 MB regions
 CSplitRegionSplits a descriptor's region byte into a bank and a bank-relative region index
 CWaveStreamsThe two raw streams that make up one wave: a signed delta per sample, and a shift exponent per 16-sample block packed two to a byte
 CXgAddressAn XG message split into the parts a front end needs to act on it