openMSX
|
#include <YM2413Okazaki.hh>
Public Member Functions | |
void | reset () |
void | setEnvelopeState (EnvelopeState state) |
bool | isActive () const |
void | slotOn () |
void | slotOn2 () |
void | slotOff () |
void | setPatch (const Patch &patch) |
void | setVolume (unsigned value) |
unsigned | calc_phase (unsigned lfo_pm) |
template<bool HAS_AM, bool FIXED_ENV> | |
unsigned | calc_envelope (int lfo_am, unsigned fixed_env) |
template<bool HAS_AM> | |
unsigned | calc_fixed_env () const |
void | calc_envelope_outline (unsigned &out) |
template<bool HAS_AM, bool FIXED_ENV> | |
int | calc_slot_car (unsigned lfo_pm, int lfo_am, int fm, unsigned fixed_env) |
template<bool HAS_AM, bool HAS_FB, bool FIXED_ENV> | |
int | calc_slot_mod (unsigned lfo_pm, int lfo_am, unsigned fixed_env) |
int | calc_slot_tom () |
int | calc_slot_snare (bool noise) |
int | calc_slot_cym (unsigned phase7, unsigned phase8) |
int | calc_slot_hat (unsigned phase7, unsigned phase8, bool noise) |
void | updatePG (unsigned freq) |
void | updateTLL (unsigned freq, bool actAsCarrier) |
void | updateRKS (unsigned freq) |
void | updateEG () |
void | updateAll (unsigned freq, bool actAsCarrier) |
template<typename Archive > | |
void | serialize (Archive &ar, unsigned version) |
template<bool HAS_AM, bool FIXED_ENV> | |
ALWAYS_INLINE unsigned | calc_envelope (int lfo_am, unsigned fixed_env) |
template<bool HAS_AM, bool FIXED_ENV> | |
ALWAYS_INLINE int | calc_slot_car (unsigned lfo_pm, int lfo_am, int fm, unsigned fixed_env) |
template<bool HAS_AM, bool HAS_FB, bool FIXED_ENV> | |
ALWAYS_INLINE int | calc_slot_mod (unsigned lfo_pm, int lfo_am, unsigned fixed_env) |
Public Attributes | |
int | feedback |
int | output |
unsigned | cPhase |
unsigned | dPhase [8] |
unsigned | volume |
unsigned | tll |
const int * | dPhaseDRTableRks |
EnvelopeState | state |
EnvPhaseIndex | eg_phase |
EnvPhaseIndex | eg_dPhase |
EnvPhaseIndex | eg_phase_max |
uint8_t | slot_on_flag |
bool | sustain |
Patch | patch |
Slot * | sibling |
Definition at line 59 of file YM2413Okazaki.hh.
ALWAYS_INLINE unsigned openmsx::YM2413Okazaki::Slot::calc_envelope | ( | int | lfo_am, |
unsigned | fixed_env | ||
) |
Definition at line 930 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::arAdjustTab, openmsx::YM2413Okazaki::ATTACK, calc_envelope_outline(), eg_dPhase, eg_phase, eg_phase_max, openmsx::YM2413Okazaki::FINISH, state, openmsx::YM2413Okazaki::SUSHOLD, tll, and openmsx::FixedPoint< FRACTION_BITS_ >::toInt().
|
inline |
void openmsx::YM2413Okazaki::Slot::calc_envelope_outline | ( | unsigned & | out | ) |
Definition at line 899 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::ATTACK, openmsx::YM2413Okazaki::DECAY, openmsx::YM2413Okazaki::Patch::EG, eg_phase, eg_phase_max, openmsx::YM2413Okazaki::FINISH, patch, openmsx::YM2413Okazaki::RELEASE, setEnvelopeState(), openmsx::YM2413Okazaki::SETTLE, sibling, slotOn(), state, openmsx::YM2413Okazaki::SUSHOLD, openmsx::YM2413Okazaki::SUSTAIN, and UNREACHABLE.
Referenced by calc_envelope().
unsigned openmsx::YM2413Okazaki::Slot::calc_fixed_env |
Definition at line 959 of file YM2413Okazaki.cc.
References eg_dPhase, eg_phase, openmsx::YM2413Okazaki::FINISH, state, openmsx::YM2413Okazaki::SUSHOLD, tll, and openmsx::FixedPoint< FRACTION_BITS_ >::toInt().
Referenced by openmsx::YM2413Okazaki::YM2413::calcChannel().
|
inline |
Definition at line 892 of file YM2413Okazaki.cc.
References cPhase, openmsx::YM2413Okazaki::DP_BASE_BITS, and dPhase.
Referenced by calc_slot_car(), calc_slot_mod(), calc_slot_snare(), calc_slot_tom(), and openmsx::YM2413Okazaki::YM2413::generateChannels().
ALWAYS_INLINE int openmsx::YM2413Okazaki::Slot::calc_slot_car | ( | unsigned | lfo_pm, |
int | lfo_am, | ||
int | fm, | ||
unsigned | fixed_env | ||
) |
Definition at line 973 of file YM2413Okazaki.cc.
References calc_phase(), openmsx::YM2413Okazaki::dB2LinTab, output, patch, openmsx::YM2413Okazaki::PG_MASK, and openmsx::YM2413Okazaki::Patch::WF.
|
inline |
|
inline |
Definition at line 1017 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::dB2LinTab, and openmsx::YM2413Okazaki::PG_BITS.
Referenced by openmsx::YM2413Okazaki::YM2413::generateChannels().
|
inline |
Definition at line 1031 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::dB2LinTab, and openmsx::YM2413Okazaki::PG_BITS.
Referenced by openmsx::YM2413Okazaki::YM2413::generateChannels().
ALWAYS_INLINE int openmsx::YM2413Okazaki::Slot::calc_slot_mod | ( | unsigned | lfo_pm, |
int | lfo_am, | ||
unsigned | fixed_env | ||
) |
Definition at line 984 of file YM2413Okazaki.cc.
References calc_phase(), openmsx::YM2413Okazaki::dB2LinTab, openmsx::YM2413Okazaki::Patch::FB, feedback, output, patch, openmsx::YM2413Okazaki::PG_MASK, and openmsx::YM2413Okazaki::Patch::WF.
|
inline |
|
inline |
Definition at line 1007 of file YM2413Okazaki.cc.
References calc_phase(), and openmsx::YM2413Okazaki::dB2LinTab.
Referenced by openmsx::YM2413Okazaki::YM2413::generateChannels().
|
inline |
Definition at line 999 of file YM2413Okazaki.cc.
References calc_phase(), openmsx::YM2413Okazaki::dB2LinTab, patch, openmsx::YM2413Okazaki::PG_MASK, and openmsx::YM2413Okazaki::Patch::WF.
Referenced by openmsx::YM2413Okazaki::YM2413::generateChannels().
|
inline |
Definition at line 519 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::FINISH, and state.
Referenced by openmsx::YM2413Okazaki::YM2413::generateChannels().
void openmsx::YM2413Okazaki::Slot::reset | ( | ) |
Definition at line 391 of file YM2413Okazaki.cc.
References cPhase, dPhase, openmsx::YM2413Okazaki::dPhaseDrTab, dPhaseDRTableRks, feedback, ranges::fill(), openmsx::YM2413Okazaki::FINISH, output, setEnvelopeState(), slot_on_flag, sustain, tll, and volume.
Referenced by openmsx::YM2413Okazaki::Channel::reset().
void openmsx::YM2413Okazaki::Slot::serialize | ( | Archive & | ar, |
unsigned | version | ||
) |
|
inline |
Definition at line 493 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::Patch::AR, openmsx::YM2413Okazaki::ATTACK, openmsx::FixedPoint< EP_FP_BITS >::create(), openmsx::YM2413Okazaki::DECAY, openmsx::YM2413Okazaki::EG_DP_INF, openmsx::YM2413Okazaki::EG_DP_MAX, eg_phase, eg_phase_max, openmsx::YM2413Okazaki::FINISH, patch, openmsx::YM2413Okazaki::RELEASE, openmsx::YM2413Okazaki::SETTLE, openmsx::YM2413Okazaki::Patch::SL, state, openmsx::YM2413Okazaki::SUSHOLD, openmsx::YM2413Okazaki::SUSTAIN, and updateEG().
Referenced by calc_envelope_outline(), openmsx::YM2413Okazaki::Channel::keyOn(), reset(), setPatch(), slotOff(), slotOn(), and slotOn2().
|
inline |
Definition at line 551 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::Patch::EG, patch, setEnvelopeState(), state, openmsx::YM2413Okazaki::SUSHOLD, and openmsx::YM2413Okazaki::SUSTAIN.
Referenced by openmsx::YM2413Okazaki::Channel::setPatch().
|
inline |
Definition at line 561 of file YM2413Okazaki.cc.
References volume.
|
inline |
Definition at line 540 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::arAdjustTab, openmsx::YM2413Okazaki::ATTACK, eg_phase, openmsx::YM2413Okazaki::FINISH, openmsx::YM2413Okazaki::RELEASE, setEnvelopeState(), state, and openmsx::FixedPoint< FRACTION_BITS_ >::toInt().
Referenced by openmsx::YM2413Okazaki::Channel::keyOff().
|
inline |
Definition at line 525 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::ATTACK, cPhase, eg_phase, and setEnvelopeState().
Referenced by calc_envelope_outline().
|
inline |
Definition at line 533 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::ATTACK, eg_phase, and setEnvelopeState().
|
inline |
Definition at line 485 of file YM2413Okazaki.cc.
References updateEG(), updatePG(), updateRKS(), and updateTLL().
|
inline |
Definition at line 433 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::Patch::AR, openmsx::YM2413Okazaki::ATTACK, openmsx::FixedPoint< EP_FP_BITS >::create(), openmsx::YM2413Okazaki::DECAY, dPhaseDRTableRks, openmsx::YM2413Okazaki::Patch::DR, openmsx::YM2413Okazaki::Patch::EG, eg_dPhase, openmsx::YM2413Okazaki::FINISH, patch, openmsx::YM2413Okazaki::RELEASE, openmsx::YM2413Okazaki::Patch::RR, openmsx::YM2413Okazaki::SETTLE, state, openmsx::YM2413Okazaki::SUSHOLD, openmsx::YM2413Okazaki::SUSTAIN, and sustain.
Referenced by setEnvelopeState(), and updateAll().
|
inline |
Definition at line 405 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::DP_BITS, dPhase, enumerate(), openmsx::YM2413Okazaki::Patch::ML, patch, and openmsx::YM2413Okazaki::pmTable.
Referenced by updateAll().
|
inline |
Definition at line 426 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::dPhaseDrTab, dPhaseDRTableRks, openmsx::YM2413Okazaki::Patch::KR, and patch.
Referenced by updateAll().
|
inline |
Definition at line 421 of file YM2413Okazaki.cc.
References openmsx::YM2413Okazaki::Patch::KL, patch, openmsx::YM2413Okazaki::Patch::TL, tll, and volume.
Referenced by updateAll().
unsigned openmsx::YM2413Okazaki::Slot::cPhase |
Definition at line 100 of file YM2413Okazaki.hh.
Referenced by calc_phase(), openmsx::YM2413Okazaki::YM2413::generateChannels(), reset(), serialize(), and slotOn().
unsigned openmsx::YM2413Okazaki::Slot::dPhase[8] |
Definition at line 101 of file YM2413Okazaki.hh.
Referenced by calc_phase(), reset(), and updatePG().
const int* openmsx::YM2413Okazaki::Slot::dPhaseDRTableRks |
Definition at line 106 of file YM2413Okazaki.hh.
Referenced by reset(), updateEG(), and updateRKS().
EnvPhaseIndex openmsx::YM2413Okazaki::Slot::eg_dPhase |
Definition at line 109 of file YM2413Okazaki.hh.
Referenced by calc_envelope(), calc_fixed_env(), and updateEG().
EnvPhaseIndex openmsx::YM2413Okazaki::Slot::eg_phase |
Definition at line 108 of file YM2413Okazaki.hh.
Referenced by calc_envelope(), calc_envelope_outline(), calc_fixed_env(), serialize(), setEnvelopeState(), slotOff(), slotOn(), and slotOn2().
EnvPhaseIndex openmsx::YM2413Okazaki::Slot::eg_phase_max |
Definition at line 110 of file YM2413Okazaki.hh.
Referenced by calc_envelope(), calc_envelope_outline(), and setEnvelopeState().
int openmsx::YM2413Okazaki::Slot::feedback |
Definition at line 96 of file YM2413Okazaki.hh.
Referenced by calc_slot_mod(), reset(), and serialize().
int openmsx::YM2413Okazaki::Slot::output |
Definition at line 97 of file YM2413Okazaki.hh.
Referenced by calc_slot_car(), calc_slot_mod(), reset(), and serialize().
Patch openmsx::YM2413Okazaki::Slot::patch |
Definition at line 114 of file YM2413Okazaki.hh.
Referenced by calc_envelope_outline(), calc_slot_car(), calc_slot_mod(), calc_slot_tom(), openmsx::YM2413Okazaki::YM2413::calcChannel(), openmsx::YM2413Okazaki::YM2413::generateChannels(), setEnvelopeState(), setPatch(), updateEG(), updatePG(), updateRKS(), and updateTLL().
Slot* openmsx::YM2413Okazaki::Slot::sibling |
Definition at line 115 of file YM2413Okazaki.hh.
Referenced by calc_envelope_outline(), and openmsx::YM2413Okazaki::Channel::Channel().
uint8_t openmsx::YM2413Okazaki::Slot::slot_on_flag |
Definition at line 111 of file YM2413Okazaki.hh.
Referenced by openmsx::YM2413Okazaki::Channel::keyOff(), openmsx::YM2413Okazaki::Channel::keyOn(), and reset().
EnvelopeState openmsx::YM2413Okazaki::Slot::state |
Definition at line 107 of file YM2413Okazaki.hh.
Referenced by calc_envelope(), calc_envelope_outline(), calc_fixed_env(), openmsx::YM2413Okazaki::YM2413::generateChannels(), isActive(), serialize(), setEnvelopeState(), setPatch(), slotOff(), and updateEG().
bool openmsx::YM2413Okazaki::Slot::sustain |
Definition at line 112 of file YM2413Okazaki.hh.
Referenced by reset(), serialize(), openmsx::YM2413Okazaki::Channel::setSustain(), and updateEG().
unsigned openmsx::YM2413Okazaki::Slot::tll |
Definition at line 105 of file YM2413Okazaki.hh.
Referenced by calc_envelope(), calc_fixed_env(), reset(), and updateTLL().
unsigned openmsx::YM2413Okazaki::Slot::volume |
Definition at line 104 of file YM2413Okazaki.hh.
Referenced by reset(), setVolume(), and updateTLL().