Это просто концептуально, но как насчет (а) создания массива звуковых имен, которые вы хотите воспроизвести (это может быть во время выполнения), в правильном порядке, затем (б) написания функции, в которой каждый объект типа soundHandler проверяет, где он находится в массиве; если он не последний, он создает soundPlayer, загружает звук, воспроизводит и затем вызывает следующий soundHandler в массиве. (Если он последний, он просто конструирует / загружает / воспроизводит и, возможно, уведомляет родителя о том, что это сделано.) Каждый soundHandler (я просто придумываю это, вам придется написать его), а затем может завершить работу самостоятельно, когда завершится.
Если у вас возникнут проблемы с задержкой / загрузкой, вы всегда можете заставить каждый soundHandler вызывать n + 2 в массиве и, конечно, затем проверить, не является ли он предпоследним, а не концом.
Это больше того, что вы имели в виду?