Радио-86РК/Радио 10-88/Музыкальная система
Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. Автор: А. АНДРЕЕВ |
Предлагаемая вниманию читателей программная музыкальная система (ПМС) позволяет чисто программными средствами (табл.1) реализовать на компьютере «Радио-86РК» исполнение трехголосых музыкальных произведений.
Синтезируемые системой звуки по характеру приближаются к звучанию электрооргана. Звуковой сигнал образуется на выходе разрешения прерывания (INTE) микропроцессора КР580ВМ80А и может быть подан на любое звукоусилительное устройство. Партитура музыкального произведения в ПМС записывается в виде программы на специальном языке, в котором символами обозначаются все основные параметры музыкальных звуков. ПМС позволяет просматривать и редактировать готовые партитуры с помощью встроенного строчного редактора, а также вводить с клавиатуры новые партитуры. Любая партитура, созданная средствами ПМС, может быть сохранена на магнитной ленте, а затем считана для дальнейшей работы.
Работа с системой начинается с ее запуска директивой G0 МОНИТОРа, в результате чего в верхней части экрана появятся сообщение о готовности системы к работе и два шестнадцатеричных числа, указывающих начальный и конечный адреса области ЗУ, используемой для хранения партитуры (в начале работы эти адреса будут совпадать, так как партитуры в памяти нет). Появление символа «>» означает, что система готова к приему вашей команды. При начальном запуске ПМС буферная область для партитуры очищается. Для того чтобы система смогла исполнить какой-либо музыкальный фрагмент, его необходимо сначала ввести.
Для демонстрации работы системы введем текст простой музыкальной программы:
0010 NI=45 0020 PA 0030 M1 V1 *G0123456$6543210
Затем подключим выход разрешения прерывания (D6, вывод 16.) к усилителю низкой частоты и дадим системе команду откомпилировать и исполнить введенный отрывок, набрав на клавиатуре R(ВК). Прозвучат сначала восходящая, а потом нисходящая гаммы. Рассмотрим более подробно перечень директив ПМС.
A (AUTO) — Позволяет включить или выключить режим автонумерации строк при вводе партитуры. После ввода директивы приглашающий символ изменится на «+», что означает переход системы в режим автонумерации строк при вводе. Нажатие на клавишу «Пробел» в начале строки будет приводить к выводу номера строки на 10 большего, чем предыдущий. Повторное выполнение директивы «А» приведет к выключению режима автонумерации и восстановлению приглашающего символа в виде «>». При включении режима автонумерации сразу после запуска ПМС или после выполнения директивы очистки программной памяти автонумерация строк начинается со строки 0010. Если в ОЗУ уже находится музыкальная программа, последняя строка которой имеет номер М, автонумерация начнется с номера строки N+10. Предусмотрено и явное задание адреса, с которого должна начаться автонумерация. Для этого после вывода символа «+» необходимо без пробела набрать четырехзначный адрес строки (больший, чем последний номер в текущей программе, если она есть), а затем и саму строку. При нажатии пробела для печати номера следующей строки высветится номер на 10 больший.
D (DELETE) — Позволяет удалить строку или группу строк программы. Для удаления одной строки сразу после символа «D» следует набрать номер удаляемой строки (ведущие нули могут быть опущены) и (ВК). Для удаления группы строк после символа «D» указывают номер первой удаляемой строки, а затем через пробел номер последней удаляемой строки и (ВК).
Е (EDIT) — Позволяет редактировать строку с указанным сразу за символом команды номером (ведущие нули можно опустить). При выполнении этой команды строка с указанным номером вызывается в буфер редактирования, после чего могут быть выполнены следующие команды редактора:
- → или УС+Х — перемещает курсор на одну позицию вправо по редактируемой строке;
- ← или УС+Н — перемещает курсор на одну позицию влево по редактируемой строке,
- УC+D удаляет символ, указанный курсором, из редактируемой строки:
- УС+I переключатель режима вставки. Позволяет включать и выключать режим ввода символов с автораздвижкой редактируемой строки:
- ВК — команда выхода из режима редактирования строки. Строка в отредактированном виде записывается в музыкальную программу под своим номером.
- G (GET)- Позволяет ввести текст ранее набранной партитуры с магнитной ленты. Ввод начинается сразу после нажатия клавиши ВК, поэтому ее следует нажимать лишь после начала воспроизведения «ракорда» записи. В случае ошибки при чтении с магнитной ленты система выдаст сообщение: ОШИБКА ВВОДА.
- L (LIST) — Позволяет просматривать текст введенной партитуры. Ввод команды без параметров вызовет распечатку всей партитуры на экране дисплея. Приостановить вывод можно нажатием на пробел, а повторным нажатием — продолжить его. Возможен просмотр одной строки (указывается номер строки) или строк с «N» по «М» («N» набирается сразу после команды, а «М» — через пробел).
- М (MENU) — Выводит на экран дисплея краткий перечень команд системы.
- N (NEW) — Очищает программную память для ввода новой партитуры. Ранее находившаяся в памяти партитура теряется.
- R (RUN) — Вызывает компиляцию и исполнение введенной партитуры. При обнаружении ошибки в тексте партитуры система выдаст сообщение об ошибке и автоматически перейдет в режим редактирования строки, содержащей ошибку.
- V (VERIFY) -Позволяет определить объем памяти, занимаемой текстом партитуры. При этом распечатываются также начальный и конечный адреса расположения текста партитуры в ОЗУ.
- W — Позволяет сохранить текст введенной партитуры на магнитной ленте. После ввода команды система попросит пользователя подготовить магнитофон к записи и нажать клавишу (ВК), что послужит командой машине начать вывод текста партитуры на магнитофон, После окончания вывода партитуры последует запрос на необходимость проверки качества записанной информации. Ввод в ответ на запрос системы символа «N» вызовет переход ПМС в режим ожидания следующей команды, а ввод любого другого символа вызовет сообщение с просьбой подготовиться к проверке качества записи и нажать клавишу (ВК) (после начала воспроизведения ракорда информации).
Рассмотрим теперь элементы языка, на котором в ПМС записывается музыкальное произведение. Первую группу этих элементов можно назвать музыкальными операторами. Они позволяют смещать по высоте весь нотный строй, задавать ключ игры, определять музыкальные такты и выполнять некоторые другие функции. Рассмотрим музыкальные операторы более подробно:
- / Признак комментария. Обозначает, что все символы, находящиеся в строке правее его, являются комментарием и компилятором обрабатываться не будут.
- Р (СИМВОЛ) — Признак начала параграфа. Определяет начало участка музыкального произведения, который в дальнейшем может быть использован в партитуре в виде ссылки на имя параграфа, указанное в поле СИМВОЛ. В качестве имени параграфа может быть использована одна любая заглавная буква латинского алфавита от А до Z. Если определено два параграфа с одинаковыми именами, то действительным будет последнее по тексту программы определение.
- R (СИМВОЛ) Повтор параграфа. Вызывает включение ранее определенного параграфа с именем, указанным в поле СИМВОЛ, в текст партитуры без его полного повторного описания.
- М (СИМВОЛ) Идентификатор такта. Определяет начали музыкального такта. Любой ранее начатый такт заканчивается. В пределах такта партии могут быть записаны в строках с разными номерами, но при исполнении будут проигрываться в одном такте вплоть до строки с определением следующего такта. В поле СИМВОЛЫ могут использоваться символы латинского алфавита от А до Z и цифры от 0 до 9 общим количеством не более четырех.
- V (ЦИФРА) Идентификатор «Голоса». Определяет, партия какого из трех голосов будет записана непосредственно за оператором. В ноле ЦИФРА может быть указано одно из чисел 1, 2 или 3 в зависимости от номера описываемого голоса. Максимальное число нот, могущих быть записанными за идентификатором одного голоса, составляет 32. Партии разных голосов в пределах одного такта могут быть записаны в строках с разными номерами.
- <(ЦИФРА) Признак понижения строя. Все последующие ноты в данном параграфе смещаются вниз на количество полутонов, указанное в поле ЦИФРА и записанное в виде одной шестнадцатеричной цифры от 1 до F. В пределах одного параграфа может быть определен только один раз.
- >(ЦИФРА) — Признак повышения строя. Все последующие ноты в данном параграфе смещаются вверх на количество полутонов, указанное в поле ЦИФРА и записанное в виде одной шестнадцатеричной цифры от 0 до F. В пределах одного параграфа может быть определен только один раз.
- * Скрипичный ключ. Определяет, что партия голоса, к которому он принадлежит, будет исполняться в скрипичном ключе. В пределах одного такта для конкретного голоса может быть определен только один раз.
- а Басовый ключ. Определяет, что партия голоса, к которому он принадлежит, будет исполняться в басовом ключе. В пределах одного такта для конкретного голоса может быть определен только один раз.
- ^<ЗНАК><ЦИФРА> Признак локального смещения строя. Определяет, что все ноты, принадлежащие текущему голосу, будут повышены или понижены, в зависимости от поля ЗНАК (+ ИЛИ -), на количество полутонов, указанное в поле ЦИФРА (0…F). Для данного голоса в пределах одного такта может быть применен только один раз.
- К <ЧИСЛО><ТИП> — Ключевой знак альтерации. Музыкальный ключ, задаваемый в виде числа от 0 до 7 в поле ЧИСЛОМ и ТИПА # (ДИЕЗ) или & (БЕМОЛЬ) в поле ТИП. Поле ЧИСЛО определяет количество ДИЕЗов или БЕМОЛей. Если оператор «К» не применяется, то игра будет происходить в до-мажоре. Оператор «К» применяется в начале партитуры только один раз.
- N<СИМВОЛ><ЧИСЛО> — Определяет темп, в котором будет исполняться текущий параграф. Задание темпа происходит путем уравнивания длительности звучания нот с числом циклов работы программы задержки, указываемым в поле ЧИСЛО и находящимся в диапазоне от 00 до FF. В поле СИМВОЛ может быть использован один из символов Н, Q, I или S, обозначающих соответственно 1/2, 1/4, 1/8 и 1/16 ноты.
Элементы второй группы, назовем их музыкальными функциями, определяют, как будет играться конкретная нота в музыкальном произведении. Перечислим их:
- # — диез
- & — БЕМОЛЬ
- % — КЛЮЧ ДО
- ' — КРАТКОЕ ЗВУЧАНИЕ
- " ИЛИ ' — СТАККАТО
- . — НОТА С ТОЧКОЙ
- : — ТРИОЛЬ
- $ — СИМВОЛ ПАУЗЫ
- W — ЦЕЛАЯ НОТА
- Н — 1/2 НОТЫ
- Q — 1/4 НОТЫ
- I — 1/8 НОТЫ
- S — 1/16НОТЫ
- Т — 1/32 НОТЫ
- X — 1/64 НОТЫ
Кодирование нот в ПМС
Позиция ноты на нотных линейках определяется относительно среднего ДО. Среднее ДО принимается за 0, и все остальные ноты располагаются в числовом ряду в положительную или отрицательную сторону от него.
Проводимые примеры партитур (табл.2, табл.3, табл.4) помогут вам в написании собственных предложений музыкальных произведений для компьютера «Радио-86РК».
Таблица 2. O010 /BOURREE 0020 /G. F. HANDEL 0030 <6 0040 K1 #1 NS=70 0050 PA 0060 M1 *Q8, V2*Q6, V3@Q3 0070 M2 *Q8,6,I765,4, V2*Q5,4,3-1 V3@Q4365 0080 M3 *Q9HBIA9 V2*Q498I4 V3@Q7010 0090 M4 *Q8I7,6,567,5, V2*Q3$43 V3@Q+130+1 0100 M5 *Q6H4Q5 V2*Q4H1Q3 V3@Q+13A6с 0110 M6 *I67*8,6,?89,7, V2*Q4542 V3@Q3452 0120 M7 *I89A,8,9AB,9 V2*Q5"5"5"7# V3@Q4+10#2 0130 M8 *IABQC$7# V2*H8Q52 V3@Q+1429 0140 M9 *H.8 V2*H.3 V3@Q6I+10#Q+1 0150 PB RA 0160 PC 0170 M17 *QC V2*QA V3@Q6 0180 M18 *QCAIBA98 V2*QA8I8 V3@Q+12+10 0190 M19 *QBHDQ9 V2*Q11-10Q12 V3@Q1I32Q10 0200 M20 *Q8#9AIBC V2*Q3498 V3@Q1521 0210 M21 *QBH9Q8 V2*Q6H4Q3 V3@Q5"5+21 0220 M22 *Q8I76Q7"7 V2*Q2"H2"Q2 V3@Q53#29 0230 M23 *Q7I65Q68 V2*Q1"H1Q4 V3@Q6432 0240 M24 *I9AB9ABCA V2*H45 V3@Q02+10 0250 M25 *IBCDBCDEC V2*H8"8 V3@Q1346 0260 M26 *QDICBABCA V2*Q8I76Q58 V3@Q31+10 0270 M27 *IBCDBQC7 V2*Q8"880 V3@Q1342 0280 M28 *Q6I543453 V2*Q1 V3@Q31+10 0290 M29 *I45645675 V2*I1$$$1 V3@1346 0300 M30 *I67Q86I54 V2*I1#Q$10 V3@Q386D 0310 M31 *H.4 V2*H.-1 V3@H.A 0320 PD RC Таблица 3. 1000 /WHAT I DID FOR LOVE - PROM "A CHORUS LINE" 1010 NS=DF 1020 PA 1030 M1 *I94949494 V2*18$8$7$7$ 1040 M2 *H$I2'S2I.5S24 V2@H24 V3@WA 1050 M3 *W4 V2*I$-31-30-30-3 V3@Q.7'17'Q.7'17' 1060 M4 *Q4I$25432 V2*I1-31-3H0# V3@aQ.9'19'Q.9'19' 1070 M5 *I31H.1 V2*I$-20-2$-4-2-4 V3@Q.6'I6Q.719 1080 M6 *Q1$I5ES4'I.413 V2*I$-2&0-2$Q-210 V3@Q.B'IB'Q.B19& 1090 M7 *H24 V2*I$-30-3$-11-1V3@H7Q.8IA 1100 M8 *w7 V2H3#S023579A#C V3@HD$ 1110 M9 *Q7$I2'25S21 1120 M10 *I1$123Q5&I1 V2*Q$I-2&Q$-21$ V3@H8'Q.8IC& 1130 M11 *I1$1237Q7 V2*Q$I-2 V3@HD'O.D'1D 1140 M12 *W6 V2*Q1'1'1'1' V3@Q.A'IAQ.BSCD 1150 M13 *I6TBA86Q4I2S21.5I2 V2*Q1 V3@WA 1160 M14 *W4 V2*I2-32-30-30-3 V3@Q.7'17'Q.7'17 1170 M15 *Q4I$25432 V2*I2-31-3HO# V3@Q.9'19'Q.9'19 1180 M16 *I31H.1 V2*I$-20-2$-4-2-4 V3@Q.6'I6Q.7%19 1190 M17 *Q1$I5&S4'1.413 V2*I$-2&0-2$Q-210 V3@Q.B'1B'Q.B19& 1200 M18 *H24 V2*I$-30-3$-11-1 V3@H7Q.8IA 1210 M19 *W7 V2*H3#S023579A#C V3@HD$ 1220 M20 *QE$I2'25S21 1230 M21 *I1$123Q5&I1 V2*Q$I-2&Q$I-2 V3@H8'Q.BIC& 1240 M22 *I1$I1237Q7 V2*Q$I-2&Q$I5&Q5 V3@HD'Q.D'lD 1250 M23 *W6 V2*Q1'1'1'1' V3@Q.A'IAQ.B'IB 1260 M24 *H6 V2*Q-1'-1 V3@QCD 1270 PB 1280 M25 *W7 V2*QO'0'0'0' V3@Q.9'19Q.A'IA 1290 M26 *Q7$I6786 V2*QQ254# V3@Q.IBQC'C 1300 M27 *W7 V2*Q2'2'2'2' V3@Q.9'I9Q.A'IA 1310 M28 *Q7$I5675 V2*Q2'2'21# V3@HB#8 1320 M29 *W6 V2*Q3#'32'2 V3@Q.C'IC'Q.C'IC 1330 M30 *Q6$I456&4 V2*Q1*1H0# V3@Q.9'19'Q.9'19 1340 M31 *H5&4 V2*Q0%'0'0'0 V3@Q.D'ID'Q.D'ID 1350 M32 *I$TBA86Q412'S2I.5S24 V3@WA 1360 M33 *W4 V2*I$-31-30-30-3 V3@Q.7'17'Q.7'17 1370 M34 *Q4I$25432 V2*I1-31-3H0# V3@Q.9'I9'Q.9'19 1380 M35 *I31H.1 V2*I$-20-24-4-2-4 V3@Q.6'I6Q.7%19 1390 M36 *Q1$I5&S4'I.4S32 V2*I$-2&0-2$-21.-2S0 V3@Q.B'1B'Q.B19& 1400 M37 *H24 V2*I0-30-3$-11-1 V3@H78 1410 M38 *W7 V2*Q0'0'0'0 V3@Q.9'19Q.A'1A 1420 M39 *H7Q$I9S87 V2*Q543#1.$S5 V3@QB#CD 1430 M40 *Q719S87Q7I9S87 V2*Q5*I.5S4Q4'I.4S3% V3@QB'BC'C 1440 M41 *H78 V2*Q3%'3'3'3 V3@Q.D'1DQ.A'1A 1450 M42 *W7 V2*Q2'20'0 V3@Q.7'17Q.8&'I8 1460 M43 *Q3I123Q.6 V2*H0I0 V3@H9&I9 1470 M44 *H7 V2*Q2'20'0 V3@Q.7'l7Q.8&'18 1480 M45 *Q3I123Q.6 V2*H01D V3@H9&I9 1490 M46 *W7 V3@I$503*2042 1500 M47 *W9 V2*T$W4 V3*T$$W4 Таблица 4. 0010 /AIR WITH VARIATIONS "HARMONIOUS BLACKSMITH" 0020 /G.F. HANDEL 0021 / 0030 <1 0040 K4# NI=50 0050 /THEME 0060 PA 0070 M1 V3@QC1 0080 PB 0090 M2 *I24364S32 V2@Q3I14$3 V3@Q5I68Q5 0100 M3 *I364Q7615# V2*Q-4I.2S2I.1S1Q0 V3@I565C4354 0110 M4 *I.6S$ V2*I.1 V3@I.8 0120 PC RB 0130 PD 0140 M5 *I6S96I76S4696 V2*I24Q2I$-1 V3@I3521$5 0150 M6 *I76S4698'87'76'65T45S6 V2@I+211+6*21+11 0160 V3@123532345 0170 M7 *Q3I6232S6432 V2@Q+1I$101$1 V3@I89A323$3 0180 M8 *S31I26S231543I4S32 V2@I01$121*21 V3@I23$ABC8F 0190 M9 *I.2S$ V2QI.1 V3@I.C 0200 /VAR. I 0210 PE 0220 M10 *S2-14-13-16-14-12-1 V2@I$356$3 V3@IC5Q45 0230 M11 *S3-16-1427217610265# V2@Q45I4354 V3Q156$3 0240 M12 *Q6 V2*3 V3@S8414 0250 PF RE 0260 PG 0270 M13 *S269672526292 V2@Q323 V3@I$Q.5I$5 0280 M14 *S7252629272625124 V2@I20Q1I0$23 V3@Q.5I52345 0290 M15 *S3-11-1624972586249 V2@I643120$1 V3@I89AQ.5I35 0300 M16 *S725862495123I43 V2@Q2I$123*S2-11-2 V3@I5035458F 0310 M17 *Q2 V2@Q1 V3@SC854 0320 /VAR. II 0330 PH 0340 M18 *Q666 V2*I243542 V3@S315161815131 0350 M19 *Q666I65$ V2*I354231Q0 V3@56181513161815374 0360 M20 *Q6666 V2*Q1I243124 V3@S812%131516486A8C5 0370 M21 *Q666I65# V2*I312431Q0 V3@S6486A8C56486574B 0380 M22 *Q6 V2*Q1 V3@S8412% 0390 PI 0400 M23 *Q999 V2*I465764 V3@S3*21202@2+23+25+2 0410 M24 *Q9I$4$$$2 V2*I57697654 V3@SO+22+23+25+22+23+24+151 0420 M25 *Q3676 V2*Q1I$2$2$2 V3@S8192AT56I5S9T56I5SAT56I5 0430 M26 *Q76S1543I4S32 V2*I$2$2$$21 V3@S9T56I5SAT56I5SB659I8F 0440 M27 *Q2 V2@Q1 V3@SCA85 0450 /VAR. III 0460 PJ 0470 M28 *S:456234123-165456234 V2@Q515 V3@I$3$6$3 0480 M29 *S:123-16545#6789345678786365 V2@Q1C V3@I$6$55654 0490 M30 *S:631-165% V2@Q8 V3@I$6 0500 PK RJ 0510 PL 0520 M31 *S:456298789567456298 V2@Q52+2 V3@I$3$0$3 0530 M32 *S:7895676789AB567675454343 V2@Q2*2I2120 V3@I$0$34452 0540 M33 *S:132123-101234012345123456 V2@Q1$98 V3@I$235$4$3 0550 M34 *S:23456789A543987654342-121 V2@Q78A V3@I$2$65398 0560 M36 *S:2-1-3I-5 V2@QC 0570 /VAR. IV 0580 PM 0590 M37 *Q.6I6Q6 V2*I243124 V3@S:321543654876A98C85
А. АНДРЕЕВ, г. Москва