Plutonium
#02
14 сентября 1998 |
|
Методы - Тут вот статья Дениса Зодченко.
+++++++++++++++++++++++++++++++++++++++++ + МЕТОДЫ + +++++++++++++++++++++++++++++++++++++++++ Sokol/Infotek. Тут вот статья Дениса Зодченко: Есть у AY три регистра, задающие громкость каналов. Если по соответствую- щему каналу включен генератор - это будет громкость тона. Если выключен - это будет 4-битный ЦАП. В обоих случаях у этого значения ло- гарифмическая зависимость. Увеличение на единицу означает увеличение громкости/у- ровня на квадратный корень из двух. Уве- личение на два - соответственно в два ра- за. Это было сделано из эргономических соображений - слух человека имеет лога- рифмическую диаграмму чувствительности, чем меньше громкость - тем более чувстви- тельно ухо к одному и тому же линейному изменению мощности звука (именно мощнос- ти, громкость - это чисто субъективное понятие). То есть, если линейно увеличи- вать число громкости генератора тона, на слух громкость будет расти практически линейно, а мощность - логарифмически. Когда AY работает как ЦАП по одному или нескольким каналам - эта логарифми- ческая зависимость не слишком удобна. Но работает :-) Подключив в свое время AY на БК, я "изобрел" (слишком громко сказано, но все же) метод улучшения качества при проигры- вании одиночной оцифровки (без микширова- ния кучи каналов). Метод следующий: заранее (на бейси- ке, например) просчитываются ДВЕ таблицы. Значения в этих таблицах такие: для каж- дого из желаемых выходных уровней переби- раются все пары записываемых в AY значе- ний таким образом, чтобы среднее арифме- тическое результата было наиболее близко к желаемому уровню. 256 вариантов (пара 4-битных значений) для каждого из 256 ре- зультатов. Проигрывание ведётся так: для каждо- го байта оцифровки берутся два соот- ветствующих значения, и НЕСКОЛЬКО РАЗ по- очередно записываются в порты AY. Это происходит с ультразвуковой частотой, и человеческое ухо этого чередования просто не замечает. Реально ухо слышит то самое искомое среднее значение. В результате ЦАП AY становится как бы даже не че- тырехбитным, а еще лучше :-) Проигрывание при этом ведётся с IDE винчестера, тоже достаточно хитрым спосо- бом. Винту изначально даётся команда чи- тать с нужного места. Когда он выдаст го- товность, программа проигрывала очередной байт оцифровки, и между чередованием зна- чений читала данные с винта (четыре бай- та). Таким образом, пока проигрывалось 128 байт, с винта уже считывался сектор в память. Во время проигрывания следующих 384 байт винт успевал прочитать следующий сектор в свой внутренний буфер и выдать готовность. Скорости даже древнего 20-ме- говника Prairietek 120 хватало на то, чтобы линейно читать и играть восьмибит- ную оцифровку. В это время на фоне кар- тинки на экране крутилось некое грубое подобие осциллографа (делался XOR нового байта - появлялась чёрточка в верти- кальном стобце, XOR старого - исчезала поставленная ранее). Этакий цифровой маг- нитофон :) Впрочем, плеер этот с тем же успехом мог играть и на ковокс.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября