Born Dead #09
30 мая 1999
  Звук  

Coding - Проигрыватель музыкальных сэмплов: 101 градация громкости.

╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟
 ╠╬╣║╞╪╡█████████████╡╪╞║╣╬╠ CODING ╠╬╣║╞╪╡█████████████╡╪╞║╣╬╠ 
╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟

(c) UnBEL!EVER^Speed co.^XTM

Сегодня,  продолжая  массированную  пропаганду  MCC  метода,  мы
публикуем  новый  вариант  проигрывателя цифровых самплов, более
простой  для  понимания  и  удобный  в работе. Дело в том, что в
погоне  за минимизацией числа тактов на байт MONSTER использовал
несколько  нестандартный  прием  контроля окончания проигрывания
звука.  Предварительно  нужно было преобразовать сампл с помощью
специальной  процедурки. Однако, это давало ощутимую прибавку во
времени - исходник, опубликованный в приложении к BORN DEAD'у #5
мог  легко  воспроизводить  звук  с  частотой  вплоть  до 26KHz.
Однако,   как   показала   практика,   такая   высокая   частота
воспроизведения  практически  никогда  не нужна, а хитрый способ
контроля   конца   сампла   лишает   проигрыватель  определенной
гибкости.   Вот  поэтому  и  был  сделан  другой  player,  более
медленный   (верхний   предел   всего   24KHz),   но  удобный  в
использовании.  Теперь, как обычно, перед входом в проигрыватель
задается длина и стартовый адрес сампла.

Но  не  только  player  подвергся  изменениям!  Благодаря  новым
данным,  полученным  о  музыкальном  процессоре  из  литературы,
удалось  рассчитать действительно идеальную MCC таблицу, которая
теперь  имеет  108  уровней  громокости.  Да  и  общая громкость
воспроизведения   звука   по   сравнению   со   старой  таблицей
увеличилась.  В  этом  исходнике  таблица  оформлена  как  текст
ассемблера (DEFB), что несколько упрощает жизнь - не надо делать
incbin'ов! Хотя, кому как нравится....

Для   облегчения   конечного  использования  проигрывателя  были
рассчитаны задержки, которые необходимо вставить в основной цикл
для  точного  воспроизведения  оцифровок на стандартных частотах
8,11,16KHz.  Задержки  были  рассчитаны  ALK'ом на PENTAGON'е по
достаточно  интересному  принципу: частота воспроизведения звука
кратна  строчной  развертке  монитора. Возможно, эти задержки не
идеальны  и опытный математик сможет рассчитать что-то поточнее,
но  по крайней  мере  эти цифры больше соответствуют правде, чем
подбор скорости воспроизведения "на слух".

И  еще, на некоторых совершенно глючных паталогах не срабатывает
обращение  к  портам  сопроцессора по схеме OUT (253),A. В таких
тяжелых  случаях (когда стандартный player молчит) рекомендуется
использовать   полную   адресацию   портов   сопроцессора,  _НО_
увлекаться этим (использовать по умолчанию в любых случаях) ни в
коем   случае   нельзя.   При   использовании  полной  адресации
увеличивается  время  между  выдачей основного и корректирующего
сигнала,  а  следовательно, ставится под сомнение сама концепция
MCC метода.

Ну и конечно, при использовании метода в конечном продукте нужно
обязательно  дать  возможность  пользователю выбрать центральный
канал  сопроцессора  (тот,  куда будет выдаваться корректирующий
сигнал), то есть раскладку стерео на данной машине: ABC, ACB или
BAC   (и   такое  встречается)!  Иначе,  при  неверном  указании
централього  канала  MCC  метод  просто  теряет  смысл,  а  звук
получится совершенно ужасным :(
 
;Samples Player	with MCC_metod (C)Monster/Sage Group
;24305.556 Hz Discretisation Frequency
;Freeware

MCC_TBL EQU     #6200           ;#200
SAMPLE  EQU     #8000           ;Sample	Adress
SIZE    EQU     #4000           ;Sample	Size

        ORG     #6400

        DI
        LD      BC,#FFFD        ;Init AY
        LD      A,#07
        OUT     (C),A
        LD      A,B
        LD      B,#BF
        OUT     (C),A

        LD      HL,SAMPLE       ;Set Sample Adress
        LD      BC,SIZE         ;Set Size Sample
        LD      D,'MCC_TBL+1
        EXX 
        LD      BC,#FFFD
        LD      DE,#080A        ;Set Right_Left	AY channel
        LD      H,#09           ;Set Center AY cnannel
        EXX 
        CALL    MCC_PLY
        EI 
        RET 

MCC_PLY LD      E,(HL)          ;E =8bit Sample	Data
        LD      A,(DE)          ;A =Correction Data from table
        EX      AF,AF'
        DEC     D
        LD      A,(DE)          ;A'=Main Data
        INC     D
        EXX 
        OUT     (C),D
        OUT     (253),A         ;Set Main Data in Right_Left
        OUT     (C),E           ;AY channels
        OUT     (253),A
        EX      AF,AF'
        OUT     (C),H
        OUT     (253),A         ;Set Correction	Data in	Center
        EXX                     ;AY cannels
        INC     HL              ;next sample data
        DEC     BC              ;dec size sample
;--------------------------------------------------------------
;       LD A,4                  ;80 tackts delay 
;DELAY  DEC A                   ;to use with 16khz samples
;       JR NZ,DELAY
;       OR 0
;       OR 0
;--------------------------------------------------------------
;       LD A,11                 ;182 tackts delay
;DELAY  DEC A                   ;to use with 11KHz samples 
;       JR NZ,DELAY
;       NOP
;--------------------------------------------------------------
;       LD A,18	                ;304 tackts delay 
;DELAY  DEC A                   ;to use with 8KHz samples
;       JR NZ,DELAY
;       OR 0
;       OR 0
;--------------------------------------------------------------

        LD      A,B             ;All code takes
        OR      C               ;     only 
        JP      NZ,MCC_PLY      ;144 tackt per Sample Byte
        RET 

        ORG     MCC_TBL

;MCC Table with 108 syntesed levels for YM2149F
;and 52% mixed center channel

        DEFB    #A0,#A1,#A1,#A2,#A3,#A3,#A4,#A4,#A4,#A5,#A5,#A5
        DEFB    #A6,#A6,#A6,#A6,#A6,#A7,#A7,#A7,#A7,#A7,#A7,#A7
        DEFB    #A8,#A8,#A8,#A8,#A8,#A8,#A8,#A8,#A9,#A9,#A9,#A9
        DEFB    #A9,#A9,#A9,#A9,#A9,#A9,#A9,#A9,#A9,#AA,#AA,#AA
        DEFB    #AA,#AA,#AA,#AA,#AA,#AA,#AA,#AA,#AA,#AA,#AA,#AA
        DEFB    #AB,#AB,#AB,#AB,#AB,#AB,#AB,#AB,#AB,#AB,#AB,#AB
        DEFB    #AB,#AB,#AB,#AB,#AB,#AB,#AB,#AB,#AB,#AB,#AB,#AB
        DEFB    #AB,#AB,#AC,#AC,#AC,#AC,#AC,#AC,#AC,#AC,#AC,#AC
        DEFB    #AC,#AC,#AC,#AC,#AC,#AC,#AC,#AC,#AC,#AC,#AC,#AC
        DEFB    #AC,#AC,#AC,#AC,#AC,#AC,#AC,#AC,#AD,#AD,#AD,#AD
        DEFB    #AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD
        DEFB    #AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD
        DEFB    #AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD
        DEFB    #AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AD,#AE,#AE,#AE
        DEFB    #AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE
        DEFB    #AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE
        DEFB    #AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE
        DEFB    #AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE,#AE
        DEFB    #AE,#AE,#AE,#AF,#AF,#AF,#AF,#AF,#AF,#AF,#AF,#AF
        DEFB    #AF,#AF,#AF,#AF,#AF,#AF,#AF,#AF,#AF,#AF,#AF,#AF
        DEFB    #AF,#AF,#AF,#AF,#AF,#AF,#AF,#AF,#AF,#AF,#AF,#AF
        DEFB    #AF,#AF,#AF,#AF,#A0,#A0,#A1,#A1,#A0,#A1,#A0,#A1
        DEFB    #A3,#A1,#A2,#A3,#A0,#A1,#A2,#A3,#A4,#A0,#A1,#A3
        DEFB    #A4,#A5,#A5,#A6,#A0,#A1,#A2,#A3,#A4,#A5,#A6,#A6
        DEFB    #A0,#A1,#A2,#A3,#A4,#A5,#A6,#A6,#A6,#A7,#A7,#A7
        DEFB    #A8,#A0,#A0,#A1,#A2,#A3,#A4,#A5,#A6,#A6,#A6,#A7
        DEFB    #A7,#A7,#A8,#A8,#A0,#A0,#A1,#A2,#A3,#A4,#A5,#A5
        DEFB    #A6,#A6,#A7,#A7,#A7,#A8,#A8,#A8,#A8,#A9,#A9,#A9
        DEFB    #A9,#A9,#A9,#AA,#AA,#AA,#A0,#A0,#A0,#A1,#A2,#A3
        DEFB    #A4,#A5,#A6,#A6,#A6,#A7,#A7,#A7,#A8,#A8,#A8,#A8
        DEFB    #A9,#A9,#A9,#A9,#A9,#AA,#AA,#AA,#AA,#AA,#AA,#AA
        DEFB    #A0,#A0,#A0,#A1,#A2,#A3,#A4,#A5,#A5,#A6,#A6,#A7
        DEFB    #A7,#A7,#A8,#A8,#A8,#A8,#A9,#A9,#A9,#A9,#A9,#A9
        DEFB    #AA,#AA,#AA,#AA,#AA,#AA,#AA,#AB,#AB,#AB,#AB,#AB
        DEFB    #AB,#AB,#AB,#AB,#AB,#AB,#AC,#AC,#AC,#AC,#AC,#AC
        DEFB    #AC,#A0,#A0,#A0,#A0,#A1,#A2,#A3,#A4,#A5,#A5,#A6
        DEFB    #A6,#A7,#A7,#A7,#A8,#A8,#A8,#A8,#A9,#A9,#A9,#A9
        DEFB    #A9,#A9,#AA,#AA,#AA,#AA,#AA,#AA,#AA,#AB,#AB,#AB
        DEFB    #AB,#AB,#AB,#AB,#AB,#AB,#AB,#AB,#AC,#AC,#AC,#AC
        DEFB    #AC,#AC,#AC,#AC,#AC,#AC,#AC,#A0,#A0,#A0,#A0,#A0
        DEFB    #A1,#A2,#A3,#A4,#A5,#A5,#A6,#A6,#A7,#A7,#A7,#A8
        DEFB    #A8,#A8,#A8,#A9,#A9,#A9,#A9,#A9,#A9,#AA,#AA,#AA
        DEFB    #AA,#AA,#AA,#AA,#AA,#AB,#AB,#AB

        ORG     #6400 



Другие статьи номера:

Coding - Проигрыватель музыкальных сэмплов: 101 градация громкости.

Games - Описание игры Sherwood.

Вступление - Тяжелые невзгоды наступающего лета.

Голос из могилы - Фирменное железо: электронные часы, Interface I, ZX и другие.

Злоба дня - Commandore и человек: хроника перехода на другую платформу.

Мир Амиги - Амига глазами RRA (часть последняя).

Новости - ProTracker'а 3.4, First Association, подведение результатов Complex Compo, приостановке работ над ЧВ-2.

Обзор - Обзор новинок: Awaken demo version, Pussy demo version, Wacky Races, Best View v2.8, Hobby #1, Amazing #2.

Приложение - Spectrum JPG decoder.

Реклама - Новая версия CD-ROM'а от MMA, The High Voltage C64 CD


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

Похожие статьи:
Help - Управление в данной версии листалки.
Разберемся - Подробный отчет о прохождении игры ЗВЕЗДНОЕ НАСЛЕДИЕ - 1.
Экспертиза - прохождение игры Mercenary.

В этот день...   24 июня