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

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

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

   С этой главы  начинается  часть  книги,
посвященная музыкальному сопроцессору  AY-
3-8910 (или AY-3-8912), встроенному  в ZX-
Spectrum 128, а также во все его модифика-
ции.
   При включении ZX-Spectrum 128 на  экра-
не появляется меню, предлагающее на  выбор
несколько пунктов. Все они неплохо  описа-
ны в [2], в нашем же случае выберите пункт
128 BASIC. В этом  режиме  Вам  становится
доступен оператор PLAY, обслуживающий  му-
зыкальный сопроцессор.
   В общем виде формат оператора PLAY  вы-
глядит так:

   PLAY A$[,B$,C$,D$,E$,F$,G$,H$]

где  A$...H$ - символьные строки, задающие
музыкальную программу. Сам сопроцессор ис-
пользует для управления своими тремя кана-
лами (A, B и C) только A$, B$ и  C$.  Если
для Вас три канала много, то Вы можете ис-
пользовать только два, или  даже один, за-
дав  соответствующее  количество  стрингов
(пустой стринг также указывает  на то, что
канал не используется).
   Остальные строки (D$...H$) предназначе-
ны для управления музыкальными  инструмен-
тами, которые можно подключить к  ZX-Spec-
trum 128 через MIDI-интерфейс.
   Все заданные стринги исполняются однов-
ременно, что позволяет создавать сложные и
красивые мелодии.
   В стрингах используются специальные ко-
манды. Остановимся на них подробнее.
   Ноты ДО, РЕ, МИ, ФА, СОЛЬ, ЛЯ и СИ  те-
кущей октавы обозначаются строчными латин-
скими буквами, соответственно, c, d, e, f,
g, a и b  (по  международному  стандарту).
Ноты следующей октавы обозначаются пропис-
ными латинскими буквами C, D, E, F, G, A и
B. Например, оператор

   PLAY "cdefgabC"

проиграет гамму ДО-мажор.
  Полутона задаются знаками # (диез)  и  $
(бемоль), стоящими перед нотой.  Например,
ДО-диез запишется как  #c, а  СИ-бемоль  -
$b. Чтобы проиграть гамму ДО-минор, введи-
те

   PLAY "cd$efg$a$bC".

   Допустимо использование нескольких дие-
зов или бемолей подряд. Так, ноту d  можно
записать как ##c.
   Длительность определяется числом  от  1
до 9, стоящим перед нотой (табл. 3). Уста-
новленная длительность распространяется на
все последующие ноты и паузы  (см. команду
&). По умолчанию устанавливается  длитель-
ность, равная 5 (одна четвертая).
   Кроме обычных нот, Вы  можете  задавать
триоли. Для этого используются числа от 10
до 12. Ноты триоли следуют  непосредствен-
но за числом. Например:

   PLAY "3fed&11fed&fed"

   Триоли не изменяют  установленной  дли-
тельности нот. Кроме стандартных  длитель-
ностей нот Вы можете  использовать  произ-
вольные. Для этого перед нотой через  сим-
вол подчеркивания  ("_")  ставят  несколь-
ко параметров, задающих требуемую длитель-
ность. Например, ноту ДО длительностью 3/8
(1/8 +1/4)  можно  записать  так:  "3_5c".
Длительность всех последующих нот  и  пауз
определяет последний параметр в связке.
   Довольно  странные  эффекты  получаются
при соединении длительностей обычных нот и
триолей (например: "3_12cde").  Поэкспери-
ментируйте с этим.
   Про запись нот, вроде бы, все. Теперь о
командах:
   O - изменение октавы. Номер октавы  за-
дается числом от 0 до 8, следующим за  ко-
мандой  (по  умолчанию  установлена октава
5).
   Соответствие параметра команды O  музы-
кальным октавам приведено в табл. 4. Обра-
тите внимание, что ноты ниже  b  октавы  1
без MIDI-интерфейса  воспроизводиться  бу-
дут  неправильно.  Также  немаловажно, что
хотя максимальный номер октавы равен вось-
ми, ничто Вам не мешает использовать  сле-
дующую - девятую, обозначая ноты прописны-
ми буквами.
   N - разделитель параметров. Использует-
ся для отделения двух числовых  параметров
друг от друга. Например, когда надо задать
длительность ноты сразу за установкой  ок-
тавы: "O4N5d". По  существу,  эта  команда
является излишеством, так как  вместо  нее
можно использовать пробел: "O4 5d".
   & - пауза. Длительность паузы  устанав-
ливается так же, как и  длительность  ноты
(см. выше). Например: "6c&de3&de".
   V - установка громкости. Громкость  за-
дается числом от 0 (минимальная - выключе-
но) до 15 (максимальная). Например: "V10".
По умолчанию установлена громкость 15.
   W - программирование эффектов. Ноты мо-
гут воспроизводиться не только с  фиксиро-
ванной громкостью, но и  со  всевозможными
эффектами: затуханиями, всплесками  и т.д.
Характер эффекта задается числом от  0  до
7, в соответствии с табл. 5.  По умолчанию
установлен эффект 0.
   X - временной параметр звукового эффек-
та. Для  эффектов  0...3  параметр  задает
длительность действия, для 4 и 5 - период,
6 и 7 - полупериод  (см. табл.5). Значение
параметра  выбирается  из  диапазона  0...
65535. По умолчанию установлено 65535.
   Эффекты отключаются по завершении стри-
нга  либо при изменении громкости (команда
V).
   Следующая  программа   продемонстрирует
действие всех эффектов:

   10 FOR A=0 TO 7
   20 PLAY "UX1000W"+STR$ A+"cdef&"
   30 NEXT A

   К сожалению, в музыкальном  сопроцессо-
ре всего один  генератор огибающей, поэто-
му Вам не удастся настроить несколько  ка-
налов на разные эффекты одновременно.  Хо-
тя одинаковые эффекты Вы можете  использо-
вать  сразу в  нескольких  каналах, причем
параметры  огибающей   необходимо   задать
только в одном из них, а в остальных  дос-
таточно указать команду U (см. выше).
   T - темп исполнения. Задается числом от
60 до 240.  По  умолчанию  устанавливается
темп, соответствующий  команде  T120.  За-
дать темп можно лишь для  всей  мелодии  в
целом, поэтому он  определяется  только  в
стринге канала A (в других каналах  коман-
да T игнорируется).
   (.)  -  повтор  (репризы).  Музыкальная
фраза, взятая в скобки, повторится два ра-
за. Допустимо использовать скобки в  скоб-
ках (до 4  вложений).  Закрывающая  скобка
без соответствующей ей открывающей  заста-
вит музыкальную фразу  повторяться  беско-
нечно от начала стринга. Используется это,
например, в басовых и ударных партиях.
   H - останов  оператора  PLAY.  Встретив
эту команду в стринге любого канала,  опе-
ратор PLAY закончит свою  работу.  Команда
используется, например, для выхода из "за-
цикленной" басовой партии, когда  заканчи-
вается основная мелодия.
   !.!  -  комментарий.  Используется  для
вставки пояснений. Например:

   PLAY "!SCALE:!cdefgabC".

   Если после комментария в стринге  ника-
ких команд нет, то  закрывающий  знак  "!"
ставить необязательно.
   M - устанавливает режим работы каналов.
Каждый канал может воспроизводить не толь-
ко чистый тон, но и так  называемый  белый
шум. Распределение режимов  задается  чис-
лом от 1 до 63, определяемым суммой кодов,
соответствующих режиму каждого из  каналов
(табл. 6).  Как и генератор огибающей, ге-
нератор шума  в  музыкальном  сопроцессоре
только один, поэтому Вам не  удастся  нас-
троить несколько каналов  одновременно  на
шум с разной частотой.  По  умолчанию  все
три канала настроены на тон (команда M7).
   В следующем примере  канал  A  настраи-
вается на тон, а канал B - на шум:

   PLAY "M17cegbdfaCH","O3cC)".

   Если Вы укажете команду M0, то все  ка-
налы будут молчать, а Вы услышите  потрес-
кивание.
   Y - установка  канала  MIDI-интерфейса.
Число от 1 до 16, следующее  за  командой,
задает номер канала интерфейса, в  который
необходимо  направить  вывод   музыкальных
данных.
   Z - передача управляющих кодов MIDI-ин-
терфейсу. Код MIDI (число  от  0  до  255)
должен располагаться  сразу  за  командой.
Допустимо передавать сразу  два  байта.  В
этом случае  их  значения  нужно  отделить
друг от друга пробелом или командой N.
   Обратите внимание, что все команды опе-
ратора PLAY должны быть набраны  прописны-
ми буквами!
   В заключение приведу краткую сводку ко-
манд оператора PLAY (табл. 7) и  сообщения
об  ошибках, которые  могут  возникать  во
время его выполнения (табл. 8).




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

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


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

Похожие статьи:
Тема - DIGITAL звук, как он есть (проигрыватель .wav файлов).
Дискуссия - Письмо от IMPERIO: о "продуктах" творческой деятельности синклеристов.
Железо - обзор микропроцессора Zilog Z380, продолжение.
Хит-парад - 10 лучших программ,по итогам продаж фирмы Welcome.
Предисловие - Ищите газету на BBS'ках.
Список BBS - Список работающий BBS.
Споем?! - 2 песни Агаты Кристи.
Печатается с продолж. - Кащей бессмертный (окончание, глава 13 и эпилог).

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