Глава 19
Программирование звуков
Краткое содержание: ВЕЕР
ZX SPECTRUM может воспроизводить звуки при помощи оператора
ВЕЕР: ВЕЕР <продолжительность>, <высота звука>. Где <продолжи-
тельность> и <высота звука> -некоторые числовые выражения. Про-
должительность задается в секундах, а высота в полутонах от
основного тона "до": при положительных числах-выше ноты ндом, а
при отрицательных-ниже йоты "до". На диаграмме приведены все зна-
чения нот одной октавы:
Для получения более высоких или более низких нот, вы должны
прибавить или отнять 12 для каждой октавы вверх или вниз.
Например:
10 PRINT "FRERE GUSTAV"
20 ВЕЕР 1,0: ВЕЕР 1,2: ВЕЕР.5,3: ВЕЕР.5,2: ВЕЕР 1,0
30 ВЕЕР 1,0: ВЕЕР 1,2: ВЕЕР.5,3: ВЕЕР.5,2: ВЕЕР 1,0
40 ВЕЕР 1,3: ВЕЕР 1,5: ВЕЕР 2,7
50 ВЕЕР 1,3: ВЕЕР 1,5: ВЕЕР 2,7
60 ВЕЕР.75,7: ВЕЕР.25,8: ВЕЕР.5,7: ВЕЕР.5,5: ВЕЕР.5,3:
ВЕЕР.5,2: ВЕЕР 1,0
70 ВЕЕР.75,7: ВЕЕР.25,8: ВЕЕР.5,7: ВЕЕР.5,5: ВЕЕР.5,3:
ВЕЕР.5,2: ВЕЕР 1,0
80 ВЕЕР 1,0: ВЕЕР 1, -5: ВЕЕР 2,0
90 ВЕЕР 1,0: ВЕЕР 1, -5: ВЕЕР 2,0
Когда вы запустите эту программу, вы услышите похоронный марш
из первой симфонии Мольера. , ту часть, когда Гобблииы хоронят
рыцаря. Запись начала этой мелодии в ключе до-минор с указанием
значений нот приведена на рисунке:
Еслй Вы желаете исполнить мелодию в другом ключе, Вы должны
вставить в выражение некоторую переменную 'KEY'. Например для
второй строки программы:
20 ЭЕЕР 1, KEY+0: ВЕЕР 1, KEY+2: ВЕЕР.5, KEY+3:
ВЕЕР.5, KEY+2: ВЕЕР 1, KEY 0
теперь, при выполнении программы вр можете присвоить переменной
'KEY' значения: 0-дл* до-минор,2-для ре-минор,12-для до-минор
верхней октавы и т.д. Переменная 'KEY' может также принимать зна-
чения кратные 1/2,1/4 и т.д.
Таким же образом можно изменять и длительность звучания нот.
Но помните, что компьютер может одновременно исполнять только од-
ну ноту, что не позволяет воспроизводить сложнее мелодии.
Попробуйте запрограммировать собственную мелодию. Начните с
самой простой. Если вы ие знаете нотной грамоты можете изучить ее
прямо на компьютере. Например фрагмент программы:
FOR N«0 то 1000: ВЕЕР.5, N: NEXT N
Будет исполнять последовательно ноты до предельно высокой и
завершится Сообщением об ошибке 'В'. Вы можете также параллельно
выводить значения 'N', чтобы знать значение исполняемой ноты,
фрагмент программы:
10 ВЕЁР* 5,0: ВЕЕР.5,2: ВЕЕР.5,4: ВЕЕР.5,5: ВЕЕР.5.7:
ВЕЕР.5,9: ВЕЕР.5,11: ВЕЕР.5,12: STOP
Исполняет гамму до-минор, в которой используются чистые ноты
от среднего до до верхнего до. Однако в зтой гамме неестественные
интервалы, скрипач бы исполнил ее так:
20 BfcEP.5,0: ВЕЕР.5,2.039: ВЕЕР.5,3.86: ВЕЕР.5,4.98:
ВЕЕР.5,7.02: ВЕЕР.5,8.84: ВЕЕР.5,10.88: ВЕЕР.5,10.88:
ВЕЕР.5,12: STOP
Эти же интервалы будут естественными для гаммы, исполняемой в
любом клк^че, отличном от до.
Некоторая музыка, например индийская, использует интервалы
меньшие, чем полутон, вы можете без особого труда запрограммиро-
вать это в операторе ВЕЕР. Например, для звука на четверть тона
выше среднего до, надо указать значение высоты звука равное .5.
Вы можете сделать клавиатуру компьютера клавишами музыкального
инструмента, выполнив переключение:
РОКЕ 23609,255
Второе число здесь определяет продолжительность нахождения в
этом состоянии (попробуйте изменять его от 0 до 255).
Можно также вывести музыку на внешние устройства, подключаемые
к выходным разъемам 'MIC' и 'EAR'.