ZX Forum #04
19 ноября 1997

Мир звуков Спектрума - глава 4.2: Программирование звуковых эффектов - Управление громкостью.

<b>Мир звуков Спектрума</b> - глава 4.2: Программирование звуковых эффектов - Управление громкостью.
       4.2. Управление громкостью

   Вообще-то,  ZX-Spectrum  абсолютно   не
приспособлен для управления громкостью, но
ее  все-таки  можно  изменять  в   неболь-
ших пределах благодаря относительно  высо-
кой тактовой частоте  микропроцессора  Z80
(около 3,5 мГц).
   Как уже говорилось в главе 2, когда  Вы
посылаете сигнал на динамик, его  мембрана
изменяет свое положение. Если во время  ее
движения послать  обратный сигнал, то  она
вернется  в исходное  положение, не  прой-
дя нужного пути.  Таким образом, амплитуда
(соответственно и громкость) будет  меньше
обычной. Для примера сравните звучание та-
ких двух практически одинаковых программ:
1415.
 10  PROG1     DI                 ; запрет прерываний
 20            LD      B,255      ; B=частота
 30            LD      C,255      ; C=длительность
 40            XOR     A          ; A=цвет бордюра (0)
 50  LOOP1     XOR     16         ; инвертирование бита D4
 60            OUT     (254),A    ; вывод A в порт 254
 70            PUSH    BC         ; сохранение BC
 80  LOOP2     DJNZ    LOOP2      ; задержка
 90            POP     BC         ; восстановление BC
100            DEC     C          ; C=C-1
110            JR      NZ,LOOP1   ; если C<>0, то цикл
120            EI                 ; разрешение прерываний
130            RET                ; возврат в бейсик

 10  PROG2     DI                 ;
 20            LD      B,255      ;
 30            LD      C,255      ;
 40            XOR     A          ;
 50  LOOP1     XOR     16         ; все
 60            OUT     (254),A    ;
 70            XOR     16         ; (кроме этих двух строк,
 80            OUT     (254),A    ; повторяющих предыдущие)
 90            PUSH    BC         ;
100  LOOP2     DJNZ    LOOP2      ; аналогично
110            POP     BC         ;
120            DEC     C          ; предыдущему
130            JR      NZ,LOOP1   ;
140            EI                 ; примеру !
150            RET                ;
2
   Когда Вы их наберете  на  ассемблере  и
запустите,  Вы  сильно  удивитесь.  Однако
против фактов не попрешь - вторая подпрог-
рамма будет звучать в несколько  раз  тише
первой!
   Приведу текст более универсальной  под-
программы:
1415.
 10            DI                 ; запрет прерываний
 20            LD      B,50       ; B=громкость
 30            LD      C,50       ; C=частота
 40            LD      D,15       ; D=длительность
 50            LD      E,50       ; E=количество нот
 60            XOR     A          ; A=цвет бордюра (0)
 70  LOOP1     PUSH    DE         ; сохранение DE
 80  LOOP2     PUSH    BC         ; сохранение BC
 90            XOR     16         ; инвертирование бита D4
100            OUT     (254),A    ; вывод A в порт 254
110  LOOP3     DJNZ    LOOP3      ; задержка (громкость)
120            XOR     16         ; инвертирование бита D4
130            OUT     (254),A    ; вывод A в порт 254
140            LD      B,C        ; B=C
150  LOOP4     DJNZ    LOOP4      ; задержка (частота)
160            POP     BC         ; восстановление BC
170            DEC     D          ; D=D-1
180            JR      NZ,LOOP2   ; если D<>0, то цикл
190            POP     DE         ; восстановление DE
200            NOP                ; резерв
210            NOP                ; резерв
220            NOP                ; резерв
230            DEC     E          ; E=E-1
240            JR      NZ,LOOP1   ; если E<>0, то цикл
250            EI                 ; разрешение прерываний
260            RET                ; возврат в бейсик
2
   В этом эффекте Вы можете подобрать нуж-
ную громкость. Но  не  очень  увлекайтесь:
при  значениях  больших, чем  40-50, гром-
кость уже не увеличивается. Необходимо за-
метить, что  при  изменении  громкости  во
время воспроизведения меняется и  частота.
Поэтому надо предусмотреть ее компенсацию.
   Теперь о трех байтах  резерва  (команды
NOP).  Они  предназначены  для   изменения
громкости (регистр B), частоты (регистр C)
и длительности (регистр D). Если Вы  заме-
ните эти три NOPа на команды DEC B (умень-
шение громкости), INC C (компенсация  час-
тоты) и INC D  (увеличение  длительности),
то у Вас получится интересный эффект с за-
тухающей громкостью.



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

Help - Описание оболочки электронного издания "ZX-FORUM 4".

Секреты успешного дизайна - глава для книги "Дизайн Ваших программ"

Экранные эффекты - Бегущая строка из R-Type.

Экранные эффекты - гашения экрана из Zynaps.

Экранные эффекты - "сворачивание" экрана из Comando Tracer.

Экранные эффекты - плавное "затухание" экрана из Сommando Tracer.

Экранные эффекты - модификация символьного набора для получения оригинального стилизованного шрифта из игры Rockstar.

Экранные эффекты - "выбегающая строка" из игры Rockstar.

Экранные эффекты - "наливающийся" экран из игры Rockstar.

Экранные эффекты - сложный многоступенчатый эффект из игры Bubbler.

Новые 40 лучших процедур - скроллинг экрана, слияние двух картинок, инвертирование экрана, поворот символов, замена атрибутов, заливка замкнутого контура, вычисление адресов в экране, копирование части экрана и т.д.

Технология спрайтов - часть 1: введение.

Технология спрайтов - часть 2: охота на спрайты (поиск и выдирание).

Технология спрайтов - часть 3: форматы спрайтов.

Технология спрайтов - часть 4: форматы спрайтов с маской.

Технология спрайтов - часть 5: структура спрайтовых блоков (как уживаются в памяти спрайт и маска, какие данные помогают нам оперативно находить адрес спрайта в памяти и многое другое.)

Технология спрайтов - часть 6: подготовка данных к печати.

Технология спрайтов - часть 8: печать спрайтов (координаты заданы в знакоместах).

Технология спрайтов - часть 9: печать спрайтов (координаты заданы в пикселях).

Технология спрайтов - часть 10: обзор программ для работы со спрайтами и графикой.

Мир звуков Спектрума - глава 1: Физика звука.

Мир звуков Спектрума - глава 2: Оператор BEEP, Создание эффектов на BEEPе, Создание музыки на BEEPе.

Мир звуков Спектрума - глава 3: Как получается звук (устройство BEEP'ра и способы звукоизвлечения).

Мир звуков Спектрума - глава 4: Программирование звука на ассемблере.

Мир звуков Спектрума - глава 4.1: Программирование звуковых эффектов - Тон, Шум, Комплексы эффектов.

Мир звуков Спектрума - глава 4.2: Программирование звуковых эффектов - Управление громкостью.

Мир звуков Спектрума - глава 4.3: Программирование звуковых эффектов - Управление тембром.

Мир звуков Спектрума - глава 4.4: Программирование звуковых эффектов - Программирование музыки.

Мир звуков Спектрума - глава 4.5: Программирование звуковых эффектов - Многоголосые мелодии (полифония).

Мир звуков Спектрума - глава 4.6: Обработка внешних сигналов - оцифровка.

Мир звуков Спектрума - глава 4.7: Обработка внешних сигналов - Реверберация.

Мир звуков Спектрума - глава 4.8: Синтезирование речи.

Мир звуков Спектрума - глава 4.9: воспроизведение звука на прерываниях.

Мир звуков Спектрума - глава 5: Оператор PLAY для музыкального сопроцессора AY- 3-8910 (AY-3-8912).

Мир звуков Спектрума - глава 5.1: Создание эффектов оператором PLAY.

Мир звуков Спектрума - глава 5.2: Создание музыки на PLAYе.

Мир звуков Спектрума - глава 6.1: описание регистров музыкального сопроцессора AY- 3-8910 (AY-3-8912).

Мир звуков Спектрума - глава 6.2: Программирование эффектов и музыки под музыкальный сопроцессор AY- 3-8910 (AY-3-8912).

Мир звуков Спектрума - глава 7: Обзор программного обеспечения ZX-Spectrum для создания звуков и музыки.

Мир звуков Спектрума - глава 7.1: Редактор звуковых эффектов SUPER SOUND.

Мир звуков Спектрума - глава 7.2: Музыкальный редактор Wham the Music Box.

Мир звуков Спектрума - приложения 1, 2: листинги звуковых эффектов SUPER SOUND'а, советы по использованию ассемблера.


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

Похожие статьи:
Игры - HERO QUEST
Синклеры - Потомки Иисуса Христа.
News - Новости, старости: Chaos Construction 2001 состоялся, Pussy стала freeware, новое бумажное издание на спектруме, Raver покинул ряды Phantasy, новая версия эмулятора спектрума Real Speccy, Assembly 2001, новый коммандер Real Commander 2.0, Delirium Tremens уходят со спектрума...
От Автора - Еще пару месяцев назад журнал находился в замороженном состоянии, а теперь он перед тобой дорогой читатель.
Part 10 - A-Z Of Spectrum games reviews (part 10).

В этот день...   31 декабря