ГЛАВА 19
ПРОГРАММИРОВАНИЕ ЗВУКОВ
Краткое содержание: ВЕЕР
ZX Spectrum может воспроизводить звуки при помощи оператора
ВЕЕР.
ВЕЕР t,f ( 0 t 10.499; -60 f 69 )
где t - продолжительность и f - высота звука - некоторые числовые выра-
жения.
Продолжительность задаётся в секундах, а высота в полутонах от основ-
ного тона "ДО": при положительных числах - выше ноты "ДО", а при отрица-
тельных - ниже ноты "ДО".' На диаграмме приведены все значения нот одной
октавы:
Для получения более высоких или более низких нот Вы должны приба-
вить или отнять 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: ВЕЕР l,KEY+2: ВЕЕР .5,KEY+3:
ВЕЕР .5,KEY+2: ВЕЕР l,K£Y+0
Теперь, при выполнении программы. Вы можете присвоить переменной
'KEY' значения: 0 - для ДО, 2 - для РЕ, 12 - для ДО верхней октавы и т.д. Пе-
ременная 'KEY' может также принимать значения кратные 1/2, 1/4 и т.д.
Таким же образом можно изменять и длительность звучания нот. Но
помните, что компьютер может одновременно исполнять только одну ноту,
что не позволяет исполнять сложные мелодии.
Попробуйте запрограммировать собственную мелодию. Начните с са-
мой простой. Если Вы не знаете нотной грамоты, можете изучить её прямо
на компьютере. Например, фрагмент программы-
FOR п=0 ТО 1000: ВЕЕР .5,n: NEXT п
будет исполнять последовательно ноты до предельно высокой и за-
вершится сообщением об ошибке "В ." Вы можете также параллельна вы-
водить значения 'п'. чтобы знать значение исполняемой ноты.
Фрагмент программы:
10 ВЕЕР .5,0: ВЕЕР .5,2: ВЕЕР .5,4: ВЕЕР .5,5: ВЕЕР .5,7:
ВЕЕР .5,9: ВЕЕР .5,11: ВЕЕР .5,12: STOP
исполняет гамму ДО, в которой используются чистые ноты от среднего
ДО до верхнего ДО. Однако в этой гамме неестественные интервалы,
скрипач бы её исполнил так:
20 ВЕЕР .5,0: ВЕЕР .5,2.039: ВЕЕР :5,3.86: ВЕЕР .5,4.98:
ВЕЕР .5,7.02: ВЕЕР .5,8.84: ВЕЕР .5,10.88: ВЕЕР .5,12: STOP
Эти же интервалы будут естественными для гаммы, исполняемой в лю-
бом ключе, отличном от ДО,
Некоторая музыка, например, индийская, использует интервалы
меньшие, чем полутон. Вы можете без особого труда запрограммировать это
в операторе ВЕЕР. Например, для звука на четверть тона выше среднего ДО
надо указать значение высоты звука, равное .5.
Вы можете сделать клавиатуру компьютера со звучащими клавишами,
выполнив переключение:
РОКЕ 23609,255
Второе число здесь определяет продолжительность нахождения в этом
состоянии (попробуйте изменять его от 0 до 255).
Можно также вывести музыку на внешние устройства, подключаемые к
выходному разъёму " EAR "