ZX Power
#04
09 января 2000 |
|
Разное - И СНОВА AY. Статья о коррекции звучания муз. сопроцессора.
Снова об AY3-8910/12 (С) 1999, (R)soft __________________________________________ Не знаю, куда главный редактор поместит эту статью, в "Металлолом" или в "Разное", суть статьи останется той же. Проблема "фальши" музыкального сопроцессора на сов- ковых Спектрумах. К сожалению, как заядлый железячник, я эту проблему без паяльника решить не смог. Иногда проблема несовмес- тимости софта решается не перепатчиванием мегабайтов кода, а просто заменой некор- ректно работающего железа. Это я и сде- лал... * * * Я прочитал третий номер "ZX-Power", и меня буквально потрясли две статьи. Это - "Фальшивые редакторы" by JAM и незаконче- ная статья "Траблы с AY" by TAN. Сразу скажу, что в обоих статьях я заметил неко- торые неточности (да не обидятся на меня авторы ;-). В статье JAM'а указано, что частота тактирования в фирменном "Spectrum 2+" связана с частотой процессора, как fAY=fCPU/2, что не есть правильно. TAN правильно заметил, что она связана с час- тотой цветовой поднесущей PALа 4.4336190 МГц. Если ее разделить на 2.5, то получим 1.773448 МГц, которые и заводятся на зву- ковой сопроцессор. Здесь опять маленькая неточность. Все дело в том, что частоту 4.4336190 МГц получают делением на два стандартной частоты PALовского кварца 8.867238 МГц. Отсюда выходит не целый ко- эффициент делителя у TANа, надо делить частоту кварца на пять, а не частоту под- несущей цвета на 2.5. В общем, у меня родилась идея доработать свой AY так, чтобы он полностью соот- ветствовал фирменному по частоте тактиро- вания. Сначала я проверил, соответствует ли указанная частота (в фирменный Спектрум я, естественно, не заглядывал ;-) реально используемой в "Spectrum 2+"? Пришлось поступить несколько необычным образом. За основу я взял формулу получения частоты ноты на AY (нота = FtaktAY/16/делитель), а также несколько программ, работающие с AY. Как известно, в каждом проигрывателе мело- дии для AY есть табличка делителей частоты для каждой ноты в пределах семи или восьми октав - все зависит от конкретного типа проигрывателя. Для тестирования я взял пять типов программ (точнее, даже четыре ;-). Это муз. редактор ProTracker 3.1, проигрыватель музыки для AY из игры "Bat- man" известнейшей фирмы Ocean, муз. демо "FXSOUND" by Frantishek Fuka и муз. проиг- рыватель из игры "Monty Free". В общем все четыре программы по принципу проигрывания мелодий особо не отличаются. Самое главное - мне нужны были таблицы делителей. В муз. редакторе ProTracker таких таблиц оказа- лось две (от старого SoundTrackera и род- ная). Они переключаемы в редакторе (жаль, что не загружаемы!!!). И вот что получи- лось. В проигрывателе "Monty Free" полной таблицы не было, а ноты получались делени- ем основных двенадцати делителей самой низкой (первой) октавы на два, до требуе- мой октавы. Я посчитал это наиболее грубым пересче- том т.к. частоты нот представляются не це- лым числом герц, а с точностью до сотых и при делении тактовой частоты AY не получит требуемой частоты с достаточной точностью. Хотя в программе "Monty Free" использован довольно правильный метод формирования де- лителей нот, но не в данном случае. В иде- але, как это делается на ЭМИ (электромузы- кальных инструментах) - синтезаторах? Сто- ит двенадцать откалиброванных генераторов частоты. Потом каждая частота делится на два, тем самым получая все требуемые окта- вы и частоты. В данном же случае, конкрет- но с AY точной частоты ноты не получить, в каждом отдельном случае будут некоторые погрешности после округления коэф. деле- ния. Вот например как я проверял пра- вильность делителя для ноты. Получалось так, что из пяти полученных таблиц делите- лей две полностью совпали - SoundTracker'а и Batman'а (для удобства я буду их так на- зывать), остальные несколько отличались друг от друга. Сначала я "схватился" за проигрыватель Frantishek'а т.к. был его давним поклонником и доверял ему на 100%. Мои надежды оправдались. Взял я первый ко- эффициент из таблицы и подставил в формулу с тактовой частотой 1.773448 МГц. Т.е. 1773448/16/4031=27.497023 или получается почти нота ля (A) нулевой (нижней) октавы (в идеале 27.50Гц). Это максимальный коэф- фициент из таблицы нот (Кmax=4095). Далее я распечатал таблицу и надписал возле каж- дого делителя ноту, которая ему соот- ветствует. Взял я табличку частот нот от нулевой до седьмой октавы и начал прове- рять коэффициенты деления, но теперь я де- лил так: 1773448/16/261.63(нота до четвер- той октавы)=423.653633. (Т.е. делил уже не на коэффициент, а на частоту ноты.) При округлении до 424, число соответствовало делителю в таблице. Далее: 1773448/16/ /587.33 (нота ре пятой октавы) =188.7192 или 189 - правильно. В общем, мне это на- доело (пересчет на калькуляторе) и я напи- сал на скорую руку программку на бейсике, которая выдавала коэффициенты делителя для каждой ноты и помечала коэффициент, если он мог округляться либо в большую, либо в меньшую сторону (т.е. десятичное значение равно 5). Как ни странно, но пара коэффи- циентов из 84 нот на единицу не совпадали с моими расчетными. Но в общем погрешность составляла очень малую долю (на слух почти ;-) не отличимо). У Frantishek Fuka табли- ца начиналась с ноты ля нулевой октавы. В Batman, Protracker и Monty Free - с ноты ля-диез нулевой октавы. С таблицей ProT- racker'а у меня вышла некоторая заминка. В общем там коэффициенты деления получались для тактовой частоты AY порядка 1.447 МГц (???), но точно посчитать я так и не смог. Для меня это осталось единственной загад- кой. Теория - теорией, калькулируй - не калькулируй, а результат тот же - проблема фальшивых нот. Я взялся за схему. Вот что у меня получилось: Схема получилась простой и недорогой по деталям. Генератор, собраный на DD1.1 и DD1.2 генерирует с частотой кварцевого ре- зонатора. Подстроечным конденсатором уста- навливается точная частота генерации. Если C1 совсем не устанавливать, то схема будет и так работать. Но кварц будет шунтиро- ваться сопротивлениями R1 и R2. Получается заниженная на несколько десятков килогерц частота. Поэтому лучше C1 поставить. Счет- чик DD2 работает как делитель частоты на пять. Схема нуждается в некоторой наладке - по частотомеру устанавливают точную час- тоту генерации ZQ1, вращая движок C1 (контролируют либо на 14, либо на 8 ноге счетчика). Если нет частотомера, то ем- кость C1 ставят в районе 12-22 пикофарад (идеального кварца все равно нет). У меня получилось отстроить частоту с точностью -10 Гц. Но, естественно, такая точность особо не нужна. Все равно погрешность час- тоты ноты будет при округлении делителя до целого значения. Печатная плата генератора размером 20х30 мм установлена сверху платы звукового сопроцессора. После опробывания муз. редактора (конечно, с таблицей от So- undTracker'a) и попытке подыгрывания люби- мым композициям было замечено довольно точное соответствие реальным нотам. Ну ес- тественно! Теория пересеклась с практикой, т.е. как и должно быть. Наконец-то я смог нормально подыграть композиции "Two Win- ters Only" группы "My Dying Bride". Вооб- ще, кто занимается музыкой, такая нехитрая переделка позволит более продуктивно ис- пользовать свой Спектрум для несложных аранжировок. Помнится, как-то лет пять на- зад я с приятелем пытался с SoundTrackerom сделать аранжировку песни под гитару. В редакторе был написан простейший ритм-бокс и что-то типа звука флейты. Так вот, флей- та ну НИКАК не вписывалась в гитару. Я долго не мог понять почему. Понял намного позже, даже, точнее, мне кто-то подсказал. Как оказалось, все из-за несоответствия частоты. Теперь бы ту композицию прове- рить. ;-) Что же, может я не зря потратил время на устранение этого, мягко говоря, глюка? Ладно! Все это хорошо. А если не все имеют возможность залезть внутрь своего Спектрума с паяльником? Я вижу здесь два выхода из сложившейся ситуации. 1) Как уже правильно говорил JAM (я присо- единяюсь!) - писать новые муз. редакторы с нормальными таблицами делителей под 1.75 МГц. Хотя, по моему, проще пофиксить это дело в самом редакторе (например в ProT- racker'е). Лучше, чтобы была возможность подгрузки таблички с диска. Как сказал Rst7: "Драйвера - рулез!" ;-). 2) Покупка фирменного "Spectrum 2+" ;-) Это, конечно, шутка. Первый вариант более подходит. Ну а если не хотите корячить новый и старый софт (муз. демки, игрушки и т.д.) - собирайте вышеизложенную схему и наслаж- дайтесь "фирменным", не фальшивым звуком. Выражаю особую благодарность главному редактору "ZX-Power" за публикацию статьи. Главное, что идея не пропала. ;-) Да и те- ма вроде бы еще не иссякла. С интересом отвечу на все вопросы и возражения по ниже указанному адресу. С уважением, Бакум Владимир aka (R)soft 2:461/1024.6 (7/11/1999) __________________________________________
Другие статьи номера:
Похожие статьи:
В этот день... 10 октября