openMSX
Public Types | Public Member Functions | Public Attributes | List of all members
openmsx::YM2413Okazaki::Slot Class Reference

#include <YM2413Okazaki.hh>

Collaboration diagram for openmsx::YM2413Okazaki::Slot:
Collaboration graph
[legend]

Public Types

enum class  EnvelopeState {
  ATTACK , DECAY , SUSHOLD , SUSTAIN ,
  RELEASE , SETTLE , FINISH
}
 

Public Member Functions

 Slot ()
 
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
 
std::array< unsigned, 8 > dPhase
 
unsigned volume
 
unsigned tll
 
std::span< const int, 16 > dPhaseDRTableRks
 
EnvelopeState state
 
EnvPhaseIndex eg_phase
 
EnvPhaseIndex eg_dPhase
 
EnvPhaseIndex eg_phase_max
 
uint8_t slot_on_flag
 
bool sustain
 
Patch patch
 
Slotsibling
 

Detailed Description

Definition at line 62 of file YM2413Okazaki.hh.

Member Enumeration Documentation

◆ EnvelopeState

Enumerator
ATTACK 
DECAY 
SUSHOLD 
SUSTAIN 
RELEASE 
SETTLE 
FINISH 

Definition at line 64 of file YM2413Okazaki.hh.

Constructor & Destructor Documentation

◆ Slot()

openmsx::YM2413Okazaki::Slot::Slot ( )

Definition at line 388 of file YM2413Okazaki.cc.

Member Function Documentation

◆ calc_envelope() [1/2]

template<bool HAS_AM, bool FIXED_ENV>
ALWAYS_INLINE unsigned openmsx::YM2413Okazaki::Slot::calc_envelope ( int  lfo_am,
unsigned  fixed_env 
)

◆ calc_envelope() [2/2]

template<bool HAS_AM, bool FIXED_ENV>
unsigned openmsx::YM2413Okazaki::Slot::calc_envelope ( int  lfo_am,
unsigned  fixed_env 
)

◆ calc_envelope_outline()

void openmsx::YM2413Okazaki::Slot::calc_envelope_outline ( unsigned &  out)

◆ calc_fixed_env()

template<bool HAS_AM>
unsigned openmsx::YM2413Okazaki::Slot::calc_fixed_env ( ) const

◆ calc_phase()

ALWAYS_INLINE unsigned openmsx::YM2413Okazaki::Slot::calc_phase ( unsigned  lfo_pm)

◆ calc_slot_car() [1/2]

template<bool HAS_AM, bool FIXED_ENV>
ALWAYS_INLINE int openmsx::YM2413Okazaki::Slot::calc_slot_car ( unsigned  lfo_pm,
int  lfo_am,
int  fm,
unsigned  fixed_env 
)

◆ calc_slot_car() [2/2]

template<bool HAS_AM, bool FIXED_ENV>
int openmsx::YM2413Okazaki::Slot::calc_slot_car ( unsigned  lfo_pm,
int  lfo_am,
int  fm,
unsigned  fixed_env 
)

◆ calc_slot_cym()

ALWAYS_INLINE int openmsx::YM2413Okazaki::Slot::calc_slot_cym ( unsigned  phase7,
unsigned  phase8 
)

◆ calc_slot_hat()

ALWAYS_INLINE int openmsx::YM2413Okazaki::Slot::calc_slot_hat ( unsigned  phase7,
unsigned  phase8,
bool  noise 
)

◆ calc_slot_mod() [1/2]

template<bool HAS_AM, bool HAS_FB, bool FIXED_ENV>
ALWAYS_INLINE int openmsx::YM2413Okazaki::Slot::calc_slot_mod ( unsigned  lfo_pm,
int  lfo_am,
unsigned  fixed_env 
)

◆ calc_slot_mod() [2/2]

template<bool HAS_AM, bool HAS_FB, bool FIXED_ENV>
int openmsx::YM2413Okazaki::Slot::calc_slot_mod ( unsigned  lfo_pm,
int  lfo_am,
unsigned  fixed_env 
)

◆ calc_slot_snare()

ALWAYS_INLINE int openmsx::YM2413Okazaki::Slot::calc_slot_snare ( bool  noise)

Definition at line 1011 of file YM2413Okazaki.cc.

References calc_phase().

Referenced by openmsx::YM2413Okazaki::YM2413::generateChannels().

◆ calc_slot_tom()

ALWAYS_INLINE int openmsx::YM2413Okazaki::Slot::calc_slot_tom ( )

◆ isActive()

bool openmsx::YM2413Okazaki::Slot::isActive ( ) const

Definition at line 523 of file YM2413Okazaki.cc.

References FINISH, and state.

Referenced by openmsx::YM2413Okazaki::YM2413::generateChannels().

◆ reset()

void openmsx::YM2413Okazaki::Slot::reset ( )

◆ serialize()

template<typename Archive >
void openmsx::YM2413Okazaki::Slot::serialize ( Archive &  ar,
unsigned  version 
)

Definition at line 1611 of file YM2413Okazaki.cc.

References cPhase, eg_phase, feedback, output, state, and sustain.

◆ setEnvelopeState()

void openmsx::YM2413Okazaki::Slot::setEnvelopeState ( EnvelopeState  state)

◆ setPatch()

void openmsx::YM2413Okazaki::Slot::setPatch ( const Patch patch)

◆ setVolume()

void openmsx::YM2413Okazaki::Slot::setVolume ( unsigned  value)

Definition at line 565 of file YM2413Okazaki.cc.

References volume.

◆ slotOff()

void openmsx::YM2413Okazaki::Slot::slotOff ( )

◆ slotOn()

void openmsx::YM2413Okazaki::Slot::slotOn ( )

Definition at line 529 of file YM2413Okazaki.cc.

References ATTACK, cPhase, eg_phase, and setEnvelopeState().

Referenced by calc_envelope_outline().

◆ slotOn2()

void openmsx::YM2413Okazaki::Slot::slotOn2 ( )

Definition at line 537 of file YM2413Okazaki.cc.

References ATTACK, eg_phase, and setEnvelopeState().

◆ updateAll()

void openmsx::YM2413Okazaki::Slot::updateAll ( unsigned  freq,
bool  actAsCarrier 
)

Definition at line 488 of file YM2413Okazaki.cc.

References updateEG(), updatePG(), updateRKS(), and updateTLL().

◆ updateEG()

void openmsx::YM2413Okazaki::Slot::updateEG ( )

◆ updatePG()

void openmsx::YM2413Okazaki::Slot::updatePG ( unsigned  freq)

Definition at line 407 of file YM2413Okazaki.cc.

References dPhase, enumerate(), openmsx::YM2413Okazaki::Patch::ML, and patch.

Referenced by updateAll().

◆ updateRKS()

void openmsx::YM2413Okazaki::Slot::updateRKS ( unsigned  freq)

Definition at line 428 of file YM2413Okazaki.cc.

References dPhaseDRTableRks, openmsx::YM2413Okazaki::Patch::KR, and patch.

Referenced by updateAll().

◆ updateTLL()

void openmsx::YM2413Okazaki::Slot::updateTLL ( unsigned  freq,
bool  actAsCarrier 
)

Member Data Documentation

◆ cPhase

unsigned openmsx::YM2413Okazaki::Slot::cPhase

◆ dPhase

std::array<unsigned, 8> openmsx::YM2413Okazaki::Slot::dPhase

Definition at line 109 of file YM2413Okazaki.hh.

Referenced by calc_phase(), reset(), and updatePG().

◆ dPhaseDRTableRks

std::span<const int, 16> openmsx::YM2413Okazaki::Slot::dPhaseDRTableRks

Definition at line 114 of file YM2413Okazaki.hh.

Referenced by reset(), updateEG(), and updateRKS().

◆ eg_dPhase

EnvPhaseIndex openmsx::YM2413Okazaki::Slot::eg_dPhase

Definition at line 117 of file YM2413Okazaki.hh.

Referenced by calc_envelope(), calc_fixed_env(), and updateEG().

◆ eg_phase

EnvPhaseIndex openmsx::YM2413Okazaki::Slot::eg_phase

◆ eg_phase_max

EnvPhaseIndex openmsx::YM2413Okazaki::Slot::eg_phase_max

Definition at line 118 of file YM2413Okazaki.hh.

Referenced by calc_envelope(), calc_envelope_outline(), and setEnvelopeState().

◆ feedback

int openmsx::YM2413Okazaki::Slot::feedback

Definition at line 104 of file YM2413Okazaki.hh.

Referenced by calc_slot_mod(), reset(), and serialize().

◆ output

int openmsx::YM2413Okazaki::Slot::output

Definition at line 105 of file YM2413Okazaki.hh.

Referenced by calc_slot_car(), calc_slot_mod(), reset(), and serialize().

◆ patch

Patch openmsx::YM2413Okazaki::Slot::patch

◆ sibling

Slot* openmsx::YM2413Okazaki::Slot::sibling

◆ slot_on_flag

uint8_t openmsx::YM2413Okazaki::Slot::slot_on_flag

◆ state

EnvelopeState openmsx::YM2413Okazaki::Slot::state

◆ sustain

bool openmsx::YM2413Okazaki::Slot::sustain

◆ tll

unsigned openmsx::YM2413Okazaki::Slot::tll

Definition at line 113 of file YM2413Okazaki.hh.

Referenced by calc_envelope(), calc_fixed_env(), reset(), and updateTLL().

◆ volume

unsigned openmsx::YM2413Okazaki::Slot::volume

Definition at line 112 of file YM2413Okazaki.hh.

Referenced by reset(), setVolume(), and updateTLL().


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