|
Think
#30
09 августа 1999 |
|
Программистам - Об AY'ке.

╔═════════════════════════╗ ║ Программистам об AY-шке ║▓ ╚═════════════════════════╝▓▒ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░ ТЕХНИЧЕСКАЯ ИНФОРМАЦИЯ ПО ПРОГРАММИРОВАHИЮ МУЗЫКАЛЬНОГО СОПРОЦЕССОРА "AY" НА SPECCY ! ========================================== Музыкальный сопроцессор подключается к спектруму через два внутренних порта: 1. Порт 49149 (#BFFD) 2. Порт 65533 (#FFFD) Именно через эти два порта процессор Z80 осуществляет обмен данными с муз.сопр. У муз.сопр. имеется шестнадцать внутренних регистров R0...R15.Эти регистры двунаправ- ленные,т.е. информацию можно в них записы- вать и считывать.Для доступа к произволь- ному регистру его неужно сделать теку- щим,для этого надо записать номер этого регистра (0..15) в порт 65533... после этого можно осуществлять обмен данными с этим регистром: Для записи в рег. - вывод в порт 49149 Для чтения из рег. - чтение из порта 65533 Муз.сопр. имеет три независимых канала для формирования звука (A,B и C) и два двунаправленных восьмиразрядных канала ввода/вывода - IRA и IRB: Через канал IRA осуществляется связь с принтером, вывод сигналов для специального интерфейса MIDI и, кроме этого,связь со специальной выносной клавиатурой функцио- нальных клавиш, используемых в расширенном интерпретаторе Бейсика. Но данные функции канал IRA выполняет в натуральном Sinclairе, а у нас в России в наших моделях это не прижилось... ( по крайней мере мной небыло найдено ни одной машины, где бы так использовался канал IRA)... В наше время каналы IRA и IRB некоторыми используються для подключения внешних устройств: AY-Mouse, AY-Covox и т.д. Hеко- торые из них даже стали стандартом, правда не очень распостраненным (Ay-Mouse). Теперь рассмотрим для чего нужны все ре- гистры и как сформировать звук: *** R0/R1, R2/R3, R4/R5 *** Три спаренных регистра R0/R1;R2/R3;R4/R5 используются для выборки частоты тона соответственно для каналов A,B и C. Необходимые двенадцатиразрядные значения образуються из восьми бит младшего по но- меру регистра и четырех младших бит стар- шего по номеру регистра... *** Регистр R6 *** Младшие пять разрядов этого регистра за- дают частоту шума... *** Регистр R7 *** Через этот регистр осуществляется управле- ние звуковыми и шумовыми каналами, а так- же каналами ввода/вывода IRA и IRB: Биты 0..2 если их установить,то будет запрещен вы- вод частоты тона в каналы A,B и C соотв. Биты 3..5 -//- но для частоты шума... Биты 6 и 7 Их состояние определяет режим работы ка- налов IRA и IRB соответственно: если бит=1, то канал работает на ввод... если бит=0, то канал работает на вывод.. *** Регистры R8,R9 и R10 *** Младшие пять разрядов этих регистров уп- равляют соответственно амплитудой каналов A,B и C. *** Регистры R11/R12 *** Спаренные регистры R11/R12 образуют шестнадцатиразрядное значение огибающей выходного сигнала,R11-младш. R12-старш. *** Регистр R13 *** Младшие 4 разряда этого регистра управляют формой и режимом огибающейвыходного сигна- ла: Бит 0 - затухание Бит 1 - чередование Бит 2 - нарастание Бит 3 - продолжение *** Регистры R14/R15 *** R14-связь с IRA R15-связь с IRB ... ------------------------------------------ Теперь конкретно о воспроизведении Digital эффектов: Оцифрованный звук представляет из себя конечный набор восьмиразрядных байт, ха- рактеризующих значения амплитуды цифруемых колебаний в дискретные моменты времени... Для воспроизведения оцифровок нужно пода- вать в порты управления громкостью эти байты с определенной частотой... Распространены два вида форматов Digital звука 1.Wav-файлы: Оцифровка производиться по 256-бальной шкале (0..255), только поло- жительной части звуковой волны... 2.Aif-файлы: Оцифровка производиться по двум 128-бальным шкалам: Положительная часть волны (0...128) Отрицательная часть волны (-128...0) Рассмотрим как же воспроизвести оцифр. звук: Если у вас есть COVOX, то значения байтов из WAV-файла целиком и полностью подаются в порт данных COVOX`а. Для проиг- рывания AIF-файлов к каждому байту перед подачей его на COVOX надо прибавить число 128... Это обуславливается тем, что COVOX -это устройство для воспроизведения восьмибит- ных WAV-файлов... и AIF необходимо преоб- разовать для корректного проигрывания COVOX'ом... А теперь программа: ORG 30000 COVOX EQU #FB START EQU 35000 LENGTH EQU 5000 PAUSA EQU 20 XOR A OUT (COVOX),A LD HL,START LD DE,LENGTH LOOP LD A,(HL) *** ADD A,128 OUT (COVOX),A LD B,PAUSA DJNZ $ INC HL DEC DE LD A,D OR E JR NZ,LOOP RET Если же у вас нет COVOX'а,но есть AY,то можно воспроизвести DIGITAL звук на нем, хотя качество будет похуже: ORG 30000 START EQU 35000 LENGTH EQU 5000 PAUSA EQU 20 CHANEL EQU 10 LD BC,#FFFD LD A,#07 OUT (C),A LD B,#BF LD A,#FF OUT (C),A LD HL,START LD DE,LENGTH LD BC,#FF LD A,CHANEL OUT (C),A LOOP LD B,#BF LD A,(HL) *** ADD A,128 SRL A SRL A SRL A OUT (C),A LD B,PAUSA DJNZ $ INC HL DEC DE LD A,D OR E JR NZ,LOOP RET Переменные используемые в программах имеют следующие значения: START- адресс хранения в памяти оцифровки. LENGTH - длина оцифровки. COVOX - порта COVOX'а (обычно #FB для PENTAGONA 128, и 231 для SCORPIONA 256)... CHANEL-канал для воспроизведения(см. выше) PAUSA-самый главный параметр.Он определяет с какой частотой будет проигрываться оциф- ровка. Вообще говоря PAUSA задает время паузы между двумя соседними выводами в звуковой канал... В обоих случаях звездочкой помечены строч- ки, которые необходимо оставить, если воспроизводятся AIF-файлы, и надо удалить для воспроизведения WAV-файлов... Вот в принципе и все что надо знать чтобы воспроизвести оцифровку... Но данный способ воспроизведения является частото время зависимым, т.е. при измене- нии частоты изменяется соответствующим об- разом и время воспроизведения инструмен- та...
Другие статьи номера:
Похожие статьи:
В этот день... 1 января
SibNews #08,
Woot! #01,
Spectrum Magazine #01,
ACNews #25,
Psychoz #14,
ACNews #14,
Last 128 #08,
Last 128 #06,
Last 128 #05,
Last 128 #04,
Last 128 #03,
Last 128 #02,
Last 128 #09,
Last 128 #3.5,
Last 128 #8.025,
Sinclair Club #05,
Last 128 #M!R 01,
Fantadrom #01,
Buzz #20,
Last 128 #01,
DonNews #13,
Nicron #120,
Promised Land #01,
Inferno #01,
Marazm #25,
Ultimathum #01,
Marazm #21,
Hooy Mag #02,
KrNews #11,
Marazm #22,
Marazm #23,
ZX Football 2000 #01,
Codemania #01,
Always #03,
Bugs #02,
IzhNews #08,
Virtual Worlds #01,
Listok #04,
Scenergy #02,
Flash Info #18,
Marazm #16,
Marazm #17,
Zed #01,
Balagan #02,
ZX Format #08,
ZX Power #03,
Shock #01,
Impulse #02,
Deja Vu #03,
ZX Club #08,
ZX Club #06,
Numberology #01,
Marazm #13,
Marazm #12,
Marazm #14,
Gorodok #02,
Zodiac #01,
Marazm #15,
Deja Vu #07,
Marazm #11,
Deja Vu #07,
Playboy #03,
Crazy News #2,
Crazy News #4,
ZX Light #01,
Crazy News #5,
Playboy #02,
ZX News #03,
ZX Review #1-2,
Read Me #02,
Crazy News #3,
Nicron #13,
Read Me #01,
Public Spirit #01,
Faultless #06,
Faultless #05,
ZX Software #01,
Stump #04,
Speccy #07,
Возраждение #0,
Speccy #03,
On-Line #17,
Scene+ #01,
Welcome Press #01,
ZX Konig #04,
Adventurer #01,
Faultless #05,
Faultless #04,
Di Halt #01,
Faultless #01,
Playboy #01,
Crazy News #1,
Faultless #03,
Pioneer #03,
Sinclair Town #02,
ZX Magazine #01,
Eldorado #01,
ZX Magazine #02,
Spectron #01,
ZX News #01,
ZX Konig #02,
200 #W,
Welcome Press #00,
Dune #07,
Subliminal Extacy #01,
Subliminal Extacy #02,
ZX Konig #01,
Subliminal Extacy #00,
Muchomor #01,
Spectrofon #01,
ZX Revija #02,
Outlet #01,
Outlet #1-3