а, вижу в чем косяк, округление вот тут:
Код:
frameSamples = ((unsigned long)71680/*frame*/*44100/*sound freq*/) / 3500000 /*Z80 clock*/;
в каждом кадре надо выводить разное кол-во семплов (+-1), а не одинаковое