14 сентября 1998

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



Other articles:


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Iron - Connection Spektpumu pisishnyh monitopov.

В этот день...   21 November