01 BGM Playback
  • Voice duration split equally — every BGM trimmed to a fixed slot regardless of natural length
  • A 60s BGM could be cut to 40s if the equal split demanded it
  • Every BGM plays at its full natural length — no trimming on non-final BGMs
  • BGM 1 full, BGM 2 full, BGM 3 full — remaining gap filled after all play
02 Gap Filling
  • No gap detection — last user BGM looped on repeat to cover remaining silence
  • General category BGMs were never pulled in automatically
  • Gap calculated after all user BGMs finish — General BGMs auto-loaded to cover it
  • Multiple General BGMs chained in sequence until the full gap is closed
03 Final BGM
  • Final BGM trimmed exactly to remaining voice duration — music stops when wish ends
  • Abrupt cut if the BGM was shorter than its remaining slot
  • Final BGM plays remaining time plus a 5–8s cinematic tail with natural fade-out
  • If BGM is shorter than target, loop_to_length fills the rest seamlessly
04 Freeze Rules
  • General BGMs bypassed the cooldown system — same tracks reused every mix
  • Download only froze mood BGMs; General fillers were never tracked
  • Mood BGMs and General BGMs follow identical freeze and cooldown rules
  • Download freezes every BGM used — mood picks and General fillers together
05 Frozen Fallback
  • No fallback defined — all General BGMs frozen could produce silence or a crash
  • Edge case was unhandled with no recovery path
  • If all General BGMs are frozen, last user BGM loops via loop_to_length to fill the gap
  • No silence, no crash — system always produces a complete output