|
Tabula Sonora 0.1.0
A native C++20 implementation of the Roland Sound Canvas VA synth voice
|
The GS reverb: a Schroeder/Dattorro tank transcribed from the engine. More...
#include <tabulasonora/send_effects.hpp>
Public Member Functions | |
| Reverb (const ReverbPreset &preset) | |
| void | reset () override |
| Clears all internal state. | |
| void | process (std::span< const float > input, std::span< float > left, std::span< float > right) override |
| Processes a block. | |
| void | process (std::span< const float > input, std::span< const float > chorus_left, std::span< const float > chorus_right, std::span< float > left, std::span< float > right) |
| Processes a block with the chorus feeding into it; either chorus span may be empty. | |
| Public Member Functions inherited from ts::Effect | |
| virtual | ~Effect ()=default |
Static Public Member Functions | |
| static Reverb | for_type (std::optional< int > type) |
| Creates a reverb for a GS type 0–7, or the default when none is given. | |
| static double | send_gain (int controller) noexcept |
| The send-bus gain for CC#91. Linear in the controller, unlike the volume law. | |
Static Public Attributes | |
| static constexpr int | ring_size = 65536 |
| Size of the shared delay ring. | |
The GS reverb: a Schroeder/Dattorro tank transcribed from the engine.
Input conditioner, then four series allpass diffusers, then two parallel tanks each with a damping lowpass and two nested allpasses, then eight output taps. All eight GS types share this topology — Delay and PanDelay simply zero the diffusers and collapse to a single long tap.
The write cursor decrements, so every tap offset is added to it.
|
inlineexplicit |
|
staticnodiscard |
Creates a reverb for a GS type 0–7, or the default when none is given.
|
inlinestaticnodiscardnoexcept |
The send-bus gain for CC#91. Linear in the controller, unlike the volume law.
|
overridevirtual |
Clears all internal state.
Implements ts::Effect.
|
overridevirtual |
Processes a block.
Implements ts::Effect.
| void ts::Reverb::process | ( | std::span< const float > | input, |
| std::span< const float > | chorus_left, | ||
| std::span< const float > | chorus_right, | ||
| std::span< float > | left, | ||
| std::span< float > | right ) |
Processes a block with the chorus feeding into it; either chorus span may be empty.
|
staticconstexpr |
Size of the shared delay ring.