DSPark 1.6.1
Header-only audio DSP framework in pure C++20 — zero dependencies
Loading...
Searching...
No Matches
dspark::wdf::ToneStackFMV< T > Class Template Reference

Exact Fender '59 Bassman treble/bass/middle tone stack. More...

#include <WDF.h>

Public Member Functions

 ToneStackFMV (double sourceResistance=1e3, double loadResistance=1e6)
 
void prepare (double sampleRate) noexcept
 Prepares the network (allocates nothing).
 
void reset () noexcept
 Clears capacitor states. RT-safe.
 
void setControls (T treble, T bass, T middle) noexcept
 Sets the three controls, [0, 1] each.
 
processSample (T input) noexcept
 Processes one sample (input volts -> wiper volts).
 

Detailed Description

template<FloatType T>
class dspark::wdf::ToneStackFMV< T >

Exact Fender '59 Bassman treble/bass/middle tone stack.

Topology and component values after Yeh & Smith, "Discretization of the '59 Fender Bassman Tone Stack" (DAFx-06), figure 1: C1 = 250 pF into the treble pot (R1 = 250 k ohm, output at the wiper), R4 = 56 k ohm into the slope node, C2 = C3 = 20 nF from the slope node to the bass rheostat (l*R2, R2 = 1 M ohm) and to the middle pot wiper (R3 = 25 k ohm) respectively. The source is modelled with a series output resistance (cathode-follower buffer) and the wiper drives a grid-load resistance.

Solved exactly as one 12-port R-type. The suite verifies it sample-exact against the bilinear transform of the paper's symbolic transfer function. Controls are not orthogonal – that interaction is the circuit's character.

Definition at line 807 of file WDF.h.

Constructor & Destructor Documentation

◆ ToneStackFMV()

template<FloatType T>
dspark::wdf::ToneStackFMV< T >::ToneStackFMV ( double  sourceResistance = 1e3,
double  loadResistance = 1e6 
)
inlineexplicit
Parameters
sourceResistanceDriving stage output impedance (default 1 k ohm).
loadResistanceFollowing stage grid load (default 1 M ohm).

Definition at line 814 of file WDF.h.

Member Function Documentation

◆ prepare()

template<FloatType T>
void dspark::wdf::ToneStackFMV< T >::prepare ( double  sampleRate)
inlinenoexcept

Prepares the network (allocates nothing).

Definition at line 838 of file WDF.h.

◆ processSample()

template<FloatType T>
T dspark::wdf::ToneStackFMV< T >::processSample ( input)
inlinenoexcept

Processes one sample (input volts -> wiper volts).

Definition at line 873 of file WDF.h.

◆ reset()

template<FloatType T>
void dspark::wdf::ToneStackFMV< T >::reset ( )
inlinenoexcept

Clears capacitor states. RT-safe.

Definition at line 845 of file WDF.h.

◆ setControls()

template<FloatType T>
void dspark::wdf::ToneStackFMV< T >::setControls ( treble,
bass,
middle 
)
inlinenoexcept

Sets the three controls, [0, 1] each.

Treble and middle pots are linear, the bass pot is a log-taper rheostat (squared approximation), matching the original circuit.

Definition at line 853 of file WDF.h.


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