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

Материал из Emuverse
Версия от 14:19, 28 ноября 2008; Panther (обсуждение | вклад) (http://retro.h1.ru/RK86/Sound/SoundSys.php)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Данный материал защищён авторскими правами!

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

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

Источник: 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РК».

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