|
Born Dead
#01
24 октября 1998 |
|
Новое в мире звуков - O проблемах качественного цифрового звука на AY.

════════════════════════════════════════════════════════════════
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ НОВОЕ В МИРЕ ЗВУКОВ AY ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
════════════════════════════════════════════════════════════════
В этом разделе, мы предлагаем ознакомиться читателям, интере-
сующимся проблемами качественного цифрового звука на обыкновен-
ном сопроцессоре, с работой известного московского спектрумиста
Дмитрия Григорьева aka Oldman. Чуть ниже вы сможете прочитать
авторитетные комментарии признаных знатоков в области DIGITAL
SOUND ON AY - MONSTЕR'а и UnBEL!EVER'а. Дадим слово автору:
----------------------------------------------------------------
(c) Oldman
Итак, довольно продолжительный треп под сабжем "8бит->4бит" зас-
тавил меня взяться за паяльник... тьфу... залезть в MASM в поис-
ках практических доказательств собственных утверждений. Доказа-
тельств я, собственно, не нашел, но в результате родилась
original idea ;) Но начнем сначала... Утверждение, что многок-
ратная посылка в порт AY одного и того же значения улучшает ка-
чество воспроизведения - бред! Я это повторяю уже в третий раз
и, если кто-нибудь еще меня в этой ошибке упрекнет... укушу :)
Что касается таблиц и формул... Единственно верная (или вся до-
кументация к AY врет) формула преобразования:
LET AY=(LN (V+1)/LN 2)*2-1: IF AY<0 THEN LET AY=0
где AY - значение для AY в диапазоне 0-15, а V - линейный уро-
вень громкости (0-255)
Но! Правильная формула не гарантирует наилучшего воспроизве-
дения! Собственно, приличное качество на четырех битах можно по-
лучить только пробуя разные формулы, искусственно ограничивая
динамический диапазон оригинальной оцифровки и даже просто выку-
сывая отдельные импульсы, вносящие наибольшее искажение. То
есть, не помешал бы приличный редактор сэмплов на Спектруме, но
сейчас не об этом ;) Метод, предложенный Денисом Сотченко (вы-
числение двух значений, среднеарифметическая сумма которых наи-
более близка к правильной и поочередное выкидывание их в порт
AY) не дал значительного улучшения качества проигрываниия и фо-
нировал ТАКИМ свистом, что... Впрочем, вероятно я попросту неб-
режно его реализовал (значения сменялись с частотой 22kHz и вы-
числялись весьма приблизительно)... В любом случае, не в харак-
тере русского кодера развивать чужую разработку, когда имеется
собственная ;-) Итак, представляю:
UltraSound4x3 method for AY chips
(c) OLDMAN 1998
---------------------------------
Идея проста как конструкция веника - у AY ТРИ канала по 4 бита,
следовательно, комбинируя громкости всех трех каналов легко до-
биться больше, чем 16-ти уникальных, а главное, очень близко со-
ответствующих 8 битной шкале 0-255, уровней громкости! Собствен-
но, у меня получалось вычислить от 160 до 206 уровней (но в пос-
леднем случае несколько возрастало соотношение сигнал/шум).
Кстати о шуме... Шумит здорово ;) Но искажений, хрипов и визгов
на слух совершенно не заметно, а это, согласитесь, прогресс! От-
куда шум - понятно. Каналы обрабатываются не одновременно - их
еще нужно переключать. Очевидно, шум можно уменьшить, минимизи-
ровав время между записями в порты. Но, тому, кто сможет уско-
рить нижеприведенный кусок кода, надо будет памятник поставить
при жизни ;)
LD BC,#FFFD
EXX
LD BC,#BFFD
EXX ; 4
OUT (C),L ; 12
EXX ; 4
OUT (C),D ; 12
EXX ; 4
OUT (C),H ; 12
EXX ; 4
OUT (C),E ; 12
EXX ; 4
OUT (C),D ; 12
EXX ; 4
OUT (C),L ; 12 96
Ну, вкратце я объяснил, а дальше те, кому это нужно, сами разбе-
рутся. В крайнем случае, у меня всегда можно спросить (недели 2
я еще буду помнить все подробности :) На всякий случай, если ко-
му-то методика пригодится и он пожелает использовать ее в своих
работах, упомяну: методика, куски кодов, исходники и рассчитыва-
ющие программы - абсолютно фриварны! Делайте все, что заблаго-
рассудится, но, если не влом, упомяните название метода (можно
кратко U43) и его автора в копирайтах, бегущих строчках или где
у вас там документация к вашей программе. И не забудьте меня из-
вестить - потешьте старика ;) Ну, самые наглые, хоть привет мне
передайте ;)
----------------------------------------------------------------
(Мы пропускаем подробное описание содержания архива распростра-
няемых OLDMAN'ом программ в поддержку метода ULTRAS4X3. Отметим
лишь то, что в комплект входят два плеера (11 и 22кHZ) исходники
плееров, небольшая демка с цифрованной речью и программы генери-
рующие таблицы. (см.ниже)
----------------------------------------------------------------
tabcalc.<B> - Страшная программа!!! Вычисляет три значения
для трех портов AY, сумма которых соответствует
диапазону 0-255 и записывает их в три таблицы. По
дороге выводит график, где по X - 0-255, по Y -
сумма громкостей трех каналов. При запуске требует
ввести коэффициент. Как бы проще объяснить...
k=256/3 - это мы как бы поровну делим шкалу 0-255
на три канала и получаем 160 уникальных
"громкостей". k=128 - это мы немного уменьшили
коэффициент, получили 206 "громкостей", но общий
уровень звука упал на треть (а шума - нет).
Написана прога на 100% Бейсике, оперирует
массивами точных чисел размерностью до 1024,
поэтому работает очень медленно. P120, эмулятор
Шалаева на максимальной скорости - полтора часа.
На реальном Спектруме советую запускать на
выходные ;)
Вот, собственно, и все, что удалось проработать за почти месяц.
Надеюсь, из этого выйдет что-то путное...
Best regards, Dmitry (Oldman)
InterNet: oldman@i-connect.ru
FidoNet: 2:5020/689.31
ZXNet: 095/100.1
----------------------------------------------------------------
MMA> После первого прослушивания демонстрационной программы ме-
тод оставляет приятные впечатления. Есть определенный шум, но
трехмерность звука поражает. Однако прослушивание реального
сампла с помощью прилагаемых плееров выявило обратное. Этот же
сампл, будучи сконвертированным старыми дедовскими способами,
играет как 4bit и гораздо чище. К тому же даже при прослушивании
прилагаемой демо-программы на качественной технике (дома у
MMCM'а) где хорошо слышны низкие частоты, доминирует шум, а сам
звук оказываеться где то "на фоне"... Да и хранить 8bit вместо
4bit это расточительно в смысле памяти и обьема проигрываемого
звука. Одним словом однозначно охарактеризовать метод сложно,
надеюсь MONSTER сможет расставить точки над i...
MONSTER> Метод прикольный конечно, но глючный. Слишком высокий
уровень шума портит все впечатление. Кстати, мне удалось сокра-
тить наиболее критичный по времени кусок кода с 96 до 77 (!)
тактов, что собственно не повысило качество воспроизведения !
(по некоторым причинам, которые собственно и не учел Oldman)
Подробности - в следующем номере...
----------------------------------------------------------------
Авторы этого номера:
----------------------------------------------------------------
___
MONSTER / / SAGE GROUP - all codes, some text
MMCM ___ / / SAGE GROUP - music, logo
MARKET SOFT \ \ / / SAGE GROUP - intro gfx, correction
UnBEL!EVER \ \ / / EXTREME - all texts, main idea
\ \ /
\__\/ rulez forever
----------------------------------------------------------------
Контактные адреса:
----------------------------------------------------------------
443074 САМАPА а/я 9966 Мучкаеву Максиму Алексеевичу (UnBEL!EVER)
(8462) 941595 Сергей (MMCM)
speed_co@yahoo.com
----------------------------------------------------------------
Другие статьи номера:
Легенды оживают - О выходе журналов ZX-Power #3 и Oberon #5. |
Новое в мире звуков - O проблемах качественного цифрового звука на AY. |
От авторов - О выходе первого номера Самарской газеты. |
Похожие статьи:
В этот день... 25 октября