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'а, советы по использованию ассемблера.


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

Похожие статьи:
Рассказик - Над широкой рекой Андуин летел маленький такой, военный вертолетик Ми-24...
Doomdarks Revenge - полное описание ролевой игры, в которой вам предстоит сражаться со злом.
Сказки чОрного кота - возможности применения конфигов от девборды ZXEvo для ZX Next.

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