libsidplayfp
2.0.2
|
#include <ExternalFilter.h>
Public Member Functions | |
int | clock (int Vi) |
ExternalFilter () | |
void | setClockFrequency (double frequency) |
void | reset () |
The audio output stage in a Commodore 64 consists of two STC networks, a low-pass filter with 3 dB frequency 16kHz followed by a DC-blocker which acts as a high-pass filter with a cutoff dependent on the attached audio equipment impedance. Here we suppose an impedance of 1kOhm resulting in a 3 dB attenuation at 16Hz.
The STC networks are connected with a BJT supposedly meant to act as a unity gain buffer, which is not really how it works. A more elaborate model would include the BJT, however DC circuit analysis yields BJT base-emitter and emitter-base impedances sufficiently low to produce additional low-pass and high-pass 3dB-frequencies in the order of hundreds of kHz. This calls for a sampling frequency of several MHz, which is far too high for practical use.
reSIDfp::ExternalFilter::ExternalFilter | ( | ) |
Constructor.
RESID_INLINE int reSIDfp::ExternalFilter::clock | ( | int | Vi | ) |
SID clocking.
Vi |
void reSIDfp::ExternalFilter::reset | ( | ) |
SID reset.
void reSIDfp::ExternalFilter::setClockFrequency | ( | double | frequency | ) |
Setup of the external filter sampling parameters.
frequency |