Радио-86РК/Радио 10-88/Музыкальная система

Материал из Emuverse
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Автор: А. АНДРЕЕВ

Источник: http://retro.h1.ru/RK86/Sound/SoundSys.php

Предлагаемая вниманию читателей программная музыкальная система (ПМС) позволяет чисто программными средствами (табл.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

А. АНДРЕЕВ, г. Москва