Немного поигрался с алгоритмом вывода цифрового 8-ми битного звука через YM2149 нестандартным для него методом ,суть такова у нас есть три канала с 4-ех битными уровнями громкости , итого меняя значения каналов в теории мы можем получить 12 битный звук или 4096 значений ,на практике на так все прямо идеально но все же.
Суть состоит в том что на PC мы по алгоритму Витерби кодируем наш WAV , а плеер на спеке отсылает найденные рание значения громкостей с определенными промежутками в три канала YM2149 тем самым просто меняя суммарное выходное напряжение каналов YM2149.
Это было придумано на MSX ,так что моей заслуги тут нет.
Сейчас не спеша работаю над плеером ,но в отличии от MSX где все три канала объединены в один ,у нас они разделены на стерео ,что затрудняет задачу правильного построения звука.
Еще звук упакован в RLE и плеером на ZX распаковывается RLE на лету.
Вот пока небольшой пример 8-ми битный семпл на частоте 11кгц , звук в эмуле тише чем на реале , так что в муле выкручивайте на максимум, проверял на реале и в Unreal.
bas.zip
- - - Добавлено - - -
PS - алгоритм поиска наиболее подходящего списка состояний (называемого путём Витерби), который в контексте цепей Маркова получает наиболее вероятную последовательность произошедших событий.