libsidplayfp
2.0.2
|
#include <EnvelopeGenerator.h>
Public Member Functions | |
void | setChipModel (ChipModel chipModel) |
void | clock () |
float | output () const |
EnvelopeGenerator () | |
void | reset () |
void | writeCONTROL_REG (unsigned char control) |
void | writeATTACK_DECAY (unsigned char attack_decay) |
void | writeSUSTAIN_RELEASE (unsigned char sustain_release) |
unsigned char | readENV () const |
A 15 bit LFSR is used to implement the envelope rates, in effect dividing the clock to the envelope counter by the currently selected rate period.
In addition, another 5 bit counter is used to implement the exponential envelope decay, in effect further dividing the clock to the envelope counter. The period of this counter is set to 1, 2, 4, 8, 16, 30 at the envelope counter values 255, 93, 54, 26, 14, 6, respectively.
|
inline |
Constructor.
RESID_INLINE void reSIDfp::EnvelopeGenerator::clock | ( | ) |
SID clocking.
|
inline |
Get the Envelope Generator output. DAC imperfections are emulated by using envelope_counter as an index into a DAC lookup table. readENV() uses envelope_counter directly.
|
inline |
Return the envelope current value.
void reSIDfp::EnvelopeGenerator::reset | ( | ) |
SID reset.
void reSIDfp::EnvelopeGenerator::setChipModel | ( | ChipModel | chipModel | ) |
Set chip model. This determines the type of the analog DAC emulation: 8580 is perfectly linear while 6581 is nonlinear.
chipModel |
void reSIDfp::EnvelopeGenerator::writeATTACK_DECAY | ( | unsigned char | attack_decay | ) |
Write Attack/Decay register.
attack_decay | attack/decay value |
void reSIDfp::EnvelopeGenerator::writeCONTROL_REG | ( | unsigned char | control | ) |
Write control register.
control | control register |
void reSIDfp::EnvelopeGenerator::writeSUSTAIN_RELEASE | ( | unsigned char | sustain_release | ) |
Write Sustain/Release register.
sustain_release | sustain/release value |