Лекция: МУЗЫКАЛЬНЫЕ ВОЗМОЖНОСТИ
В ряд версий Бейсика встроен специальный подъязык, который позволяет программировать музыку. Это делается без труда командой PLAY. В команде указывается строковое выражение, составленное из символов, кодирующих ноты.
Общий формат команды PLAY таков:
PLAY AS, B$, CS,
где AS, BS, CS — строки символов, число которых не превышает числа параллельных звуковых каналов в системе. Каждый символ — команда специального языка, задающая ноту, длительность и громкость звучания, другие параметры. Следующие латинские буквы соответствуют основным нотам:
с — «до»,
d — «ре»,
е — «ми»,
f — «фа»,
g — «соль»,
а — «ля»,
b — «си»
Например, команда
PLAY «cdefgab»
осуществляет музыкальное исполнение гаммы (до-ре-ми-фа-соль-ля-си) четвертой октавы с длительностью 1/4 ноты (устанавливаемой, при отсутствии явных указаний, «по умолчанию»).
Нота может звучать на полтона выше (бемоль — знак «минус») или ниже (диез -знак «плюс», либо #). Высота звучания нотьГопределяется октавой. Октава кодируется символом с номером On. помещаемым перед нотой или группой последующих нот. Принято кодировать октавы по порядку с единицы в соответствии с фортепианным рядом, первая октава (01) — контроктава, вторая октава (02) — большая октава, третья октава (03) — малая октава, четвертая октава (04) — первая октава, пятая октава (05) — вторая октава и т.д. Например, команда
PLAY «оЗ а а а»
проигрывает три ноты ля-ля-ля в малой октаве.
Длительность звучания ноты измеряется в специальных единицах — одна целая нота (произнесите четко «раз-и. два-и, три-и, четыре-и», тогда время, затраченное на эту фразу, приблизительно соответствует длительности одной ноты). Выделяют длительность в полноты (1/2 ноты), четверть, одну восьмую, одну шестнадцатую и т.д. — вплоть до одна шестьдесят четвертая. Длительность звучания в программе устанавливают командой Ln (n = 1, 2,… 64), включаемой в символьную последовательность, либо непосредственно в самих командах установки нот. Например,
PLAY«C8D2L16fbe»
означает звучание ноты «до» длительностью в одну восьмую ноты, «ре» — в одну вторую, а ноты фа-си-ми звучат длительностью в одн\ шестнадцатую ноты. Аналогичную размерность имеет пауза, обозначаемая Rn или Рп.
Уровень громкости может быть установлен командой Vn, предшествующей ноте (n = 0, 1,… 15); по умолчанию n = 8 — «средняя» громкость.
Ниже приведен пример кодирования музыкального произведения.
Программа 59
*********** рпезы Шумана **************
10 DATA c8, f2f8, e8, f8, a8, o5c8, f8f2
20 DATA e8, d8, c8, f8, o4g8, a8, b-8, o5d8, o4f8, g8,a8
30 DATA o5c8, o4g2, c4, f2f8, e8, f8, a8, o5c8, a8a4a8
40 DATA g8, f8, d8, c8, f8, o4, g8, a8. b-8, o5, d8, o4, g8, a8, b-8
50 DATA o5d8, o4-d8, e8, f2
60 FOR i = 1 TO 46
70 READ f$
80 PLAY f$
90 NEXT i
Использование функции считывания п символов нажатых клавиш INPUTS(n) позволяет использовать клавиатуру как музыкальный инструмент.
Программа 60
5 ******* компьютер — простейший музыкальный инструмент *******
10 f$ = INPUT$(1)
20 PLAY f$
30 GOTO 10
Контрольные вопросы и задания
1. Составьте программу, исполняющую первые такты полонеза Огинского.
2. Разработайте компьютерный вариант популярной игры «Угадай мелодию».