ivagor, у меня сейчас в проекте, который я пока не хочу показывать, инициализация улучшена -- не обязательно с точки зрения числа тактов, но проще для использования -- песня загружается из массива указателей на потоки и их легко переключать.

Код:
        lxi h, song_0
        call gigachad_init

...

        ; песенка
song_0:
        dw song_00, song_01, song_02, song_03, song_04, song_05, song_06
        dw song_07, song_08, song_09, song_10, song_11, song_12, song_13
Сами данные подготавливаются скриптом, так что на самом деле проблем в настройке и использовании минимум. Ну разве что приходится конвертить музыку в ym, что может быть немного занудно.

Сколько строк допустимо -- это зависит от ситуации. У меня сейчас так удачно сложилось, что с моим многопоточным плеером получилось засунуть звук туда, где я был уверен, что его вообще не будет. Вообще немного детерминизма плеерам не помешало бы, а то ты думаешь, что он отрабатывает за 35, а тут врдуг бах 58. Это конечно существенно только в случае, когда нужна жесткая привязка к развертке. Если ее нет, то в общем все это не так уж важно.