ОПЕРАТОРЫ БЕЙСИКА 128
Список операторов Бейсика 128 дополнен относительно стандартного лишь двумя новыми операторами SPECTRUM и PLAY, кроме того, модифицированы некоторые старые.
Скорость выполнения программ в режиме 128 BASIC несколько ниже, чем в режиме 48 BASIC. Это связано с тем, что при выполнении многих операторов исиользуюгся подпрограммы стандартного Бейсика и на переключение режимов уходит дополнительное, хотя и небольшое, время.
Ниже описаны новые операторы Бейсика.
SPECTRUM
Оператор SPECTRUM переключает компьютер в режим эмуляции ZX Spectrum 48, то есть выполняет действие, аналогичное опции 48 BASIC главного меню. Отличие только в том, что при переходе с помощью оператора SPECTRUM программа, находящаяся в памяти, сохраняется. Если оператор SPECTRUM выполняется в программе, то она останавливается с сообщением О ОК.
Кроме того, оператор SPECTRUM переопределяет канал, обслуживающий принтер. После выполнения оператора вся информация, поступавшая ранее на принтер, будет выводиться на экран.
PLAY
Print *
Оператор 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.