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

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


          3. Как получается звук

   К сожалению, в ZX-Spectrum для управле-
ния звуком отведен всего-навсего один бит.
Это бит D4  порта 254 (#FE).  Но, несмотря
на это, программисты умудряются  создавать
довольно красивые мелодии и эффекты.
   Когда  этот  бит  установлен, на  дина-
мик (усилитель) подается напряжение, и его
мембрана находится в одном положении. Ког-
да же он сброшен, на  динамике  напряжения
нет, и мембрана находится в другом положе-
нии. Таким образом, если Вы  будете  изме-
нять состояние этого бита с достаточно вы-
сокой частотой, то мембрана будет вибриро-
вать и Вы услышите звук.
   Использовать этот способ можно даже  из
бейсика:

   10 FOR A=1 TO 300: OUT 254,23
   20 OUT 254,7: NEXT A

И так же легко  на ассемблере, но  в  этом
случае придется запрещать прерывания, если
Вы хотите получить качественное звучание:
1415.
 10            DI                 ; запрет прерываний
 20            LD      BC,2560    ; BC=длительность
 30            LD      A,7        ; A=цвет бордюра
 40  BEGIN     XOR     16         ; инвертирование бита D4
 50            OUT     (254),A    ; вывод A в порт 254
 60            LD      D,100      ; D=задержка (частота)
 70  PAUSE     DEC     D          ; D=D-1
 80            JR      NZ,PAUSE   ; если D<>0, то цикл
 90            DEC     BC         ; BC=BC-1
100            LD      D,A        ; сохранение A
110            LD      A,B        ; BC=
120            OR      C          ;    0 ?
130            LD      A,D        ; восстановление A
140            JR      NZ,BEGIN   ; если BC<>0, то цикл
150            EI                 ; разрешение прерываний
160            RET                ; возврат в бейсик
2
   Вы, наверное, заметили, что в этих про-
граммах в порт выводится не  16  и  0, что
соответствовало бы установке и сбросу  би-
та D4, а 23 и 7. Дело в том, что этот порт
кроме динамика управляет еще цветом бордю-
ра и выходом на магнитофон. Познакомимся с
его возможностями поближе:

   Биты D0...D2 определяют цвет бордюра:

  000(0) - черный       100(4) - зеленый
  001(1) - синий        101(5) - голубой
  010(2) - красный      110(6) - желтый
  011(3) - фиолетовый   111(7) - белый

   Бит D3 управляет выходом на магнитофон.
   Бит D4 управляет звуком.  Биты  D5...D7
не используются.
   При вводе байта из порта бит D6 контро-
лирует магнитофонный вход.
   Думаю, теперь  понятно, откуда  взялись
цифры 23 и 7: для установки и сброса  бита
D4 необходимо  последовательно  вывести  в
порт значения 16 и 0.  Но  при  этом  надо
сохранять цвет бордюра равный  7  (белый).
Следовательно, первое значение будет  рав-
но 16+7=23, а  второе - 0+7=7.  Вообще-то,
Вы можете устанавливать любой цвет  бордю-
ра.  Более того, можно  создавать  на  нем
различные цветовые эффекты. Для этого дос-
таточно при инвертировании звукового  бита
использовать разные цвета бордюра.
   Вы, наверное, заметили, что в приведен-
ной выше программе  на  ассемблере  запре-
щаются прерывания. Думаю, стоит это  пояс-
нить. Дело в том, что ZX-Spectrum  устроен
так, что каждую пятидесятую  долю  секунды
вызывается  подпрограмма  ПЗУ, расположен-
ная с адреса 56 (#38).  И, если  Вы хотите
получить качественный (не трещащий) звуко-
вой сигнал, то ее  надо  отключить, что  и
достигается запрещением прерываний (коман-
да DI). При возврате в  бейсик  прерывания
необходимо снова разрешать (команда EI).



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

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


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

Похожие статьи:
Реклама - Реклама и объявления.
IS-DOS - программистам: краткий курс - программирование в среде IS-DOS.
Давайте познакомимся - Новые друзья: Рассказ BROM'а о себе. Интервью с Lom'ой.

В этот день...   27 мая