Пре-амбула:
Делаю новую FPGA платформу для эмуляции разных ретро систем. Свой ZX эмулятор, по традиции, использую в качестве пробного шара. Дошел до аудио где требуется представление ввиде знаковых сэмплов (signed samples) - I2S.
Амбула:
Вроде, согласно общему представлению о конвертации достаточно проинвертировать старший бит чтобы 0..65535 сместить в диапазон -32767..+32767... Но я тут поразмыслил - нельзя так делать, как мне кажется..
Ведь в беззнаковом представлении амплитуда это полный диапазон 0-65536, когда как в знаковом амплитуда вроде как 0-32767.. Можно возразить, что амплитуда всё же -32767..+32767 и вроде равна той что в беззнаковом представлении, однако мне кажется что они не равны..
В добавок при инвертировании старшего бита у меня явный перегруз слышен на I2S, когда как в беззнаковом виде при использовании Delta-Sigma ЦАП перегруза нет.
В добавок к этому, уровень "тишины" после такой конвертации -32768, что не есть хорошо.
Есть ли проверенный метод перевода беззнаковых сэмплов в знаковые?
- - - Updated - - -
Чисто "проигав" знаковй сэмпл в уме, прихожу к выводу что нужна более продвинутая конвертация по типу конденсатора, где спокойствие стремится к нулю а любое возмущение с последующим обратным возмущением рождает отрицательную полуволну...