ОПЕРАТОРЫ БЕЙСИКА 128
Список операторов Бейсика 128 дополнен
относительно стандартного лишь двумя новыми операторами SPECTRUM и
PLAY, кроме того, модифицированы некоторые старые.
Скорость выполнения программ в режиме 128 BASIC
несколько ниже, чем в режиме 48 BASIC. Это связано с тем, что при
выполнении многих операторов исиользуюгся подпрограммы стандартного
Бейсика и на переключение режимов уходит дополнительное, хотя и
небольшое, время.
Ниже описаны новые операторы Бейсика.
SPECTRUM
Оператор SPECTRUM переключает компьютер в режим
эмуляции ZX Spectrum 48, то есть выполняет действие, аналогичное опции
48 BASIC главного меню. Отличие только в том, что при переходе с
помощью оператора SPECTRUM программа, находящаяся в памяти,
сохраняется. Если оператор SPECTRUM выполняется в программе, то она
останавливается с сообщением О ОК.
Кроме того, оператор SPECTRUM переопределяет
канал, обслуживающий принтер. После выполнения оператора вся
информация, поступавшая ранее на принтер, будет выводиться на экран.
PLAY
Оператор PLAY — основная
достопримечательность Бейсика 128. Он обслуживает встроенный в ZX
Spectrum 128 трехканальный музыкальный процессор101, на порядок увеличивающий звуковые возможности компьютера.
Вслед за ключевым словом PLAY размещаются строки символов
— стринги.
Именно они задают музыкальную программу, то есть определяют, когда и
что играть. В общем виде формат оператора записывается так:
PLAY a$[.b$,c$ld$.102$.<$.g$.h$]
— где а$, Ь$, ..., h$ —
стринги. Как видно из формата, за ключевым словом PLAY может следовать
от 1 до 8 стрингов. Однако сам музыкальный процессор пользуется только
первыми тремя из них
— а$, Ь$ и с$. Они задают программы, соответственно, для каналов А, В
и С музыкального процессора. Эти программы выполняются одновременно,
причем можно заставить звучать как все три канала, так и один или два,
задав необходимое количество стрингов.
Остальные стринги (d$, е$, ..., h$)
предназначены для управления музыкальными инструментами, которые можно
подключить к ZX Spectrum 128 через специальный MIDI-интерфейс*.
Ноты ДО, РЕ, МИ, ФА, СОЛЬ, ЛЯ и СИ записываются латинскими буквами, соответственно, с, d, е, I, д, а и Ь. Например, оператор
PLAY "cdefgabC"
проиграет гамму ДО-мажор.
Ноты следующей октавы обозначаются прописными
латинскими буквами С, D, Е, F, G, А и В. Полутона задаются знаками: #
— диез и $ — бемоль. Например, ДО-диез, запишется как #с,
СИ-бе-моль — $Ь, а гамма ДО-минор — cd$efg$a$bC.
Длительность звучания нот определяется числом
от 1 (минимальная) до 9 (максимальная), стоящим перед нотой (табл. 24),
например: PLAY "3G". Заданная длительность распространяется на все
последующие ноты и паузы (см. команду задания паузы &).
Числами от 10 до 12 программируются триоли.
Ноты триоли следуют непосредственно за числом: 3fed&11fed&fed.
Триоли не изменяют установленной длительности нот.
Возможно сыграть ноту произвольной
длительности. Для этого перед ней через символ подчеркивания (_) ставят
несколько параметров, задающих требуемую длительность. Например, нота
ДО длительностью Ув (V8+J/4) запишется так: 3_5с. Длительность звучания
последующих нот определяет последний параметр.
Кроме нот, в музыкальных программах могут использоваться специальные команды оператора PLAY:
О Изменение октавы.
Номер октавы задается числом от 0 до 8 (по умолчанию установлена 5-я
октава). Все ноты после этой команды будут звучать в выбранной октаве,
пока она не будет сменена103.
Диапазон звучания в переделах заданной октавы
можно расширить, используя серии диезов или бемолей. Например, 06d
можно записать как 04###Вю
Таблица 24. Длительность звучания нот в операторе PLAY.
Число
|
Яота
|
Одиночные ноты
|
1
|
Одна шестнадцатая
|
J»
|
2
|
Одна шестнадцатая с точкой
|
J>.
|
3
|
Одна восьмая
|
J>
|
4
|
Одна восьмая с точкой
|
J>.
|
5
|
Одна четвертая
|
J
|
6
|
Одна четвертая с точкой
|
J.
|
7
|
Одна вторая
|
J
|
8
|
Одна вторая с точкой
|
J.
|
9
|
Целая
|
<э
|
Триоли
|
10
|
Одна шестнадцатая
|
m
|
11
|
Одна восьмая
|
|
12
|
Одна четвертая
|
jjj
|
N Разделитель параметров.
Он используется в том случае, если нужно задать длительность звучания
нот сразу за командой с числовым параметром: 06N4gD; хотя тоже самое
допустимо записывать и с пробелом: Об 4gD.
& Пауза установленной длительности: бс&С (здесь длительность паузы равна 6).
V Громкость звучания.
Громкость задается параметром, следующим за командой: от Ц (минимальная
— выключено) до 15 (максимальная). Минимальная громкость (команда
V0) может использоваться для временного отключения канала.
W Программирование эффектов.
Ноты могут воспроизводиться не только с фиксированной громкостью, но и
со всевозможными эффектами: затуханиями, всплесками и т. д. Характер
эффекта задается числом от 0 до 7, в соответствии с табл. 25.
X Временной параметр звукого эффекта.
Для эффектов 0...3 параметр задает длительность действия эффекта, для 4
и 5 — период, для 6 и 7 — полупериод. Значение параметра
выбирается из диапазона 0...65535. Для эффектов 0...3 оптимальное
значение — около 1000, для 4...7 — около 300. По умолчанию
значение параметра принято равным 65535.
U Включение звукового эффекта.
После этой команды все ноты будут воспроизводиться с эффектом,
установленным командой W. Эффекты отключаются по завершении стринга
либо при изменении громкости (команда V). Следующая программа
продемонстрирует действие всех эффектов: -10 FOR i=0 ТО 7
20 PLAY "UX1000W"+STR$ i+"cdef&" 30 NEXT i
Таблица 25. Программирование звуковых аффектов.
|
Эффект
|
Диаграмма
|
0
|
единичный спад, затем тихо
|
|
|
|
i
|
единичный подъем, затем тихо
|
|
/1
|
|
2
|
единичный спад, затем громко
|
|
N
|
|
3
|
единичный подъем, затем громко
|
|
/
|
|
4
|
повторяющийся спад
|
|
|
NSNNIN
|
5
|
повторяющийся подъем
|
|
/
|
4/И/ИЛ/И/1
|
6
|
повторяющийся подъем-спад
|
|
|
|
7
|
повторяющи йся спад-подъем
|
|
|
|
|
/
|
. Параметр команды X
|
Т Темп исполнения.
Задается числом в интервале от 60 до 240. По умолчанию устанавливается
темп, соответствующий команде Т120. Задать темп можно лишь для всей
мелодии в целом, поэтому он определяется только в стринге канала А (в
других каналах команда Т игнорируется).
() Повтор музыкальной фразы. Музыкальная фраза, взятая в скобки, повторится еще раз: (ec)f'e7d. Допустимо использовать не более 4 пар скобок.
Закрывающая скобка без соответствующей ей
открывающей заставит музыкальную фразу повторяться бесконечно от начала
стринга. Используется это, например, в басовых партиях.
Н Останов оператора PLAY. Встретив эту команду в стринге любого канала, оператор PLAY закончит свою работу. Команда
используется, например, для выхода из «зацикленной» басовой партии, когда заканчивается основная мелодия.
! Ограничитель комментариев. В стринг можно вставлять комментарии — любой текст, ограничивая его знаками !. Например: PLAY "#c!cis!$d!des!"
Знак ! в конце музыкальной программы ставить не обязательно.
М Режим работы каналов.
Каждый канал может не только воспроизводить чистый тон, но и
одновременно генерировать так называемый белый шум. Распределение
режимов задается командой М с параметром в интервале 1 ...63. Значение
параметра определяется суммой кодов, соответствующих режиму каждого из
каналов (табл. 26).
Таблица 26. Режимы работы каналов.
Кана»
|
А
|
В
|
С
|
Тон
|
1
|
2
|
4
|
Шум
|
8
|
16
|
32
|
В следующем примере канал А настраивается на тон, а канал В — на шум:
PLAY "M17cegbdfaCH'7'03cC)"
Y Установка канала MIDI-интерфейса.
Число от 1 до 16, следующее за командой, задает номер канала
интерфейса, в который необходимо направить вывод музыкальных данных. Z Передача управляющих кодов MIDI-интерфейсу104.