
Сообщение от
NEO SPECTRUMAN
да и я щитаю что тупое сумирование всех значения вполне допустимо
Вообще-то нет. Downsampling при эмуляции звуковых чипов существовал очень давно. Без этого beeper'ный звук нормально не будет звучать. И в Unreal фактически с зарождения, и в Ay_emul, да даже в Z80Stealth такое уже было.

Сообщение от
NEO SPECTRUMAN
тем меньше будет алиасинг...
Альясинг тут вообще не столько важен, сколько достоверность передискретезированной звуковой волны. Важно чтобы АЧХ сохранялась (а она сейчас поломана), и важно чтобы отражения гармоник не создавались (а оно было до изменений). И то и другое - плохо. Без корректного фильтра децимации для оверсамплиного сигнала получится ***** с разными оттенками. В Unreal идёт оверсамплинг в 64 выборки, и КИХ фильтр на 128 значений. В Ay_emul то же самое (кто у кого заимствовал - ХЗ). Но алгоритм хитрый, он не просто все 128 значений фильтра обрабатывает. Он учитывает что исходный сигнал - достаточно статичный. Т.е. либо есть напряжение, либо нет, без промежуточных значений. И имеет таблицу с заранее вычесленными значениями для разного положения "перехода" в окне оверсэмпла (точнее, там псевдо-оверсэмплинг).
Сам Sinc filter такой:
Код:
-^-
/ \
/ \
_-`_______`-_
А filter_diff для вычисления итога такой:
Код:
__
.-`
/
/
/
/
.
_-`__________
При множественных переходах через 0/1 внутри одного окна (т.е. при "децимации" значений), соответствующие значения из таблицы то прибавляются то вычитаются.
Хотя лично мне того что в Unreal и ay_emul более чем хватает, это - далеко не идеальный вариант. Ayumi всё-таки звучит намного "чище".

Сообщение от
NEO SPECTRUMAN
первые n (0...4095) значения в выходное значение 1
вторые n (4096...8191) значение в выходное значение 2
Извини, но ты какую-то фигню придумал.

Сообщение от
NEO SPECTRUMAN
хотя аффтар сам такое морозит что просто...
Для тех кто в танке - это описание разницы при переключении опции ay_emul (Avarager/FIR filter).