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. |
От авторов - О выходе первого номера Самарской газеты. |
Похожие статьи:
В этот день... 21 ноября