-
Notifications
You must be signed in to change notification settings - Fork 27
Tracker player update order
Persune edited this page Jan 24, 2023
·
4 revisions
Documents the player update order of the tracker.
CSoundGen::PlayChannelNotes();
CSoundGen::PlayNote();
CSoundGen::EvaluateGlobalEffects();
CChannelHandler::HandleDelay();
CChannelHandler::HandleNoteData();
// (handle echo buffer)
CChannelHandler::WriteEchoBuffer();
// (clear note cut and note release)
// (handle effects)
CChannelHandler::HandleEffect();
// (handle volume command and Nxy)
// (handle instrument command)
// (switch case note command)
// (handle empty note)
// (handle note cut)
// (handle note release)
// (handle note)
// (handle note slide)
if (new_instrument || note_trigger)
CChannelHandler::HandleInstrument();
CSoundGen::UpdatePlayer();
CSoundGen::UpdateChannels(); // run instruments, effects, etc.
CChannelHandler::ProcessChannel();
UpdateDelay();
UpdateNoteCut();
UpdateNoteRelease();
UpdateNoteVolume(); // // //
UpdateTranspose(); // // //
if (m_iVolSlideTarget < 0) // // !!
UpdateVolumeSlide();
else
UpdateTargetVolumeSlide();
UpdateVibratoTremolo();
UpdateEffects();
if (m_pInstHandler) m_pInstHandler->UpdateInstrument(); // // //
CSoundGen::UpdateAPU(); // write to registers