Skip to content

Tracker player update order

Persune edited this page Jan 23, 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()
        • (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)
  • 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
Clone this wiki locally