Инструменты пользователя

Инструменты сайта


msx:maestro:med:med

Музыкальный пакет MEDIA

FIXME

Автор: Сергей Новосельцев (1987-1988).

Музыкальный пакет «MEDIA» является инструментальным программным средством (ПС) для разработки музыкального сопровождения учебных, игровых и демонстрационных программ для ПЭВМ MSX. Пакет состоит из музыкального редактора MED и библиотеки функций для языка C.

ПЭВМ MSX оснащены трёхголосным программируемым звукогенератором (PSG) GI AY-3-8910, имеющим диапазон 8 октав и генератор шума. Для программной поддержки PSG в языке MSX BASIC имеется оператор PLAY с встроенным языком MML (Music Macro Language), позволяющим в символической форме представлять нотную запись а также управлять громкостью и формой звукового сигнала; однако среда MSX BASIC мало приспособлена для создания программ профессионального уровня. В системе же MSX-DOS музыкальные средства отсутствуют.

Пакет «MEDIA» предоставляет разработчикам программ в MSX-DOS удобный инструмент подготовки музыкальных фрагментов для PSG, включения их в программу и управления исполнением, создания музыкальных и шумовых эффектов.

Пакет «MEDIA» разработан в рамках идеологии ПС "МАЭСТРО" и предназначен для использования вместе с ним.

Автор выражает благодарность А.Родионову за идейную и техническую поддержку разработки.

Дополнительную информацию о музыкальных возможностях MSX BASIC можно узнать тут:

Язык MML+

В качестве основы нотной записи использован язык MML, реализованый в MSX BASIC со следующими дополнениями:

  • при записи нот большие и малые буквы обозначают разные октавы, большие буквы относятся к октаве, указанной в операторе О, a a малые — к O+1 ; это существенно сокращает количество операторов О в нотной записи.

Например

о3AbCda

A,C — октава 3, а b,d,a — октава 4.

  • оператор Zn[-] повышает (а если указан «-» — понижает) все последующие звуки на «n» полутонов.
  • оператор Un[-] понижает или повышает все последующие звуки, увеличивая или уменьшая на «n» единиц делитель частоты PSG.
  • знак : устанавливает на первую следующую за ним ноту или паузу указатель начала цикла для очереди пакетов данного голоса (см. описание функции play()).
  • разрешено произвольное количество пробелов в строке, они игнорируются; это позволяет поддерживать «вертикальность» записи аккордов.
  • текст между операторами < и > рассматривается как комментарий и не транслируется.
  • трансляция заканчивается, если встречен символ «%» или «\0».

Операторы для управления LFO и шумом (LFO — Low Frequency Oscillation — изменение частоты звучания генератора относительно основной загруженной ноты):

  • операторы [ и ] включают и выключают LFO для соответствующего голоса; за оператором [ может следовать цифра 0, 1 или 2, задающая форму LFO:
    • ╱╲
    • ╲╱
    • _∏
  • операторы { и } включают и выключают LFO для шума; за оператором { может следовать цифра 0, 1 или 2, задающая форму LFO:
    • ╱╲
    • ╲╱
    • _∏
  • операторы ( и ) включают и выключают шум в соответствующем голосе.
  • оператор *a задаёт амплитуду LFO для данного голоса.
  • оператор *t задаёт период LFO для данного голоса.
  • оператор /a задаёт амплитуду LFO для шума.
  • оператор /t задаёт период LFO для шума.
  • оператор /f задаёт период шума.

Исключён из языка оператор X подстановки переменной MSX BASIC.

Данный язык будет в дальнейшем обозначаться MML+.

Работа с музыкальным редактором MED

Музыкальный редактор MED позволяет вести экранное редактирование нотной строки, состоящей из четырёх строк - по одной для каждого из трёх голосов и строки комментариев. При этом осуществляется горизонтальный скроллинг нотной строки.

MED транслирует нотную запись MML+ в формат системной музыкальной очереди, обеспечивает прослушивание полученных фрагментов однократно или в цикле. Можно также включать шум в каждом из голосов, менять характеристики шума, управлять LFO независимо в каждом голосе. При этом текущее состояние параметров LFO и шума непрерывно отображается на экране.

Записанные музыкальные фразы могут быть сохранены на диске в исходной (MML+) форме или в виде оттранслированного, готового к исполнению программой пользователя музыкального фрагмента, а также могут быть загружены с диска.

Редактор снабжён четырьмя страницами подсказок, которые высвечиваются в верхнем окне экрана. Первая страница описывает клавиши управления редактированием, вторая - операторы языка MML+, третья - операторы MML+ для прямого управления PSG, четвёртая - формы огибающих для оператора S MML+.

После вызова программы MED на экране появляются нотная строка, CUT/PASTE буфер, окно музыкальной очереди, окно прямого управления PSG и строка главного меню с подсвеченным курсором.

Нажатием клавишей и курсор меню устанавливается на нужную функцию; для вызова функции надо нажать пробел или Ввод .

Из главного меню вызываются функции:

Во всех четырёх дисковых функциях: LOAD, SAVE, BLOAD, BSAVE после выбора функции в верхнем окне экрана появляется запрос: «enter file name:», в ответ на который следует ввести требуемое имя файла.

Для отмены функции и возврата в меню можно нажать STOP или ESC.

EDIT

Переход в режим редактирования.

Режим редактирования.

После выбора функции «EDIT» главного меню строка меню стирается с экрана, на её месте появляется строка подсказки; кроме того, в верхней части экрана появляется текущая страница подсказки. Переключение страниц подсказки производится нажатием SHIFT+F5.

Редактирование осуществляется в режиме скроллинга строки при неподвижном курсоре. При этом номер позиции, в которой находится курсор, высвечивается над нотной строкой.

Клавиши управления редактированием:

и перемещают курсор со строки на строку.
и
SHIFT+ и SHIFT+двигают строку с шагом 20 символов.
HOMEустанавливает курсор на начало строки.
HOME+SHIFTустанавливает курсор на последний символ в строке.
INSпереключает режимы вставки/замены символов (текущий режим указан надписью >INSERT< / OVERTYPE в правой части экрана).
BS (backspace)стирает символ слева от курсора.
DELстирает символ, на который указывает курсор.
SHIFT+CTRL+DELстирает все символы текущей строки справа от курсора.
GRAPHPASTE: содержимое CUT/PASTE буфера копируется в нотную строку, начиная с позиции курсора.
SELECTтранслирует содержимое строчных буферов голосов 1-3 в музыкальную очередь; в каждой из строк трансляция прекращается по достижении последнего не пробела или символа '%'. В окне музыкальной очереди высвечивается информации о длине музыкальной очереди для каждого из голосов и общей длине музыкального фрагмента, а также продолжительность звучания каждого голоса - в тиках и в секундах.
Запускает исполнение музыки.
Ввод play; запускает исполнение музыки, однократно или в цикле. Во время исполнения можно продолжать редактирование.
STOP«выключает» музыку.
STOP+SHIFTприостанавливает/продолжает исполнение музыки.
F1, F2, F3, F4включает/выключает LFO для голосов 1-3 и шума. Для голосов, в которых включён LFO, подсвечивается соответствующая колонка в строке «LFO on» окна прямого управления.
F5устанавливает/сбрасывает признак циклического исполнения.
Если установлен признак цикла, на экране появляется подсвеченная надпись «CYCLE».
F1+SHIFT, F2+SHIFT, F3+SHIFTвключает/выключает шум в голосах 1-3.
Для голосов, в которых включён шум, подсвечивается колонка в строке «Noise on» окна прямого управления.
F1+CTRL, F2+CTRL, F3+CTRL, F4+CTRLменяет форму LFO для голосов 1-3 и шума.
+CTRL, +CTRLперемещение курсора LFO по строке параметров LFO.
В этой строке отображаются текущие значения параметров *a, *t для каждого из голосов и /a, /t, /f для шума.
+CTRL, +CTRLувеличение или уменьшение параметра LFO, на который указывает курсор LFO.
ESC+SHIFTсброс всех параметров LFO, выключение LFO и шума.
ESCвыход из режима редактирования в главное меню. Окно подсказки стирается, музыка выключается.
SHIFT+F5Вывод справки (подсказки)

CUT/YANK

TAB (1-е нажатие)переход из режима редактирования в режим CUT/YANK; в этом режиме можно только управлять движением нотной строки; при этом помечается блок текста.

Выход из режима CUT/YANK может осуществляться следующими способами:

TAB (2-e нажатие)YANK: отмеченный блок копируется в CUT/PASTE буфер; возврат в режим редактирования.
TAB (2-e нажатие)+SHIFTCUT: отмеченный блок пересылается в CUT/PASTE буфер; возврат в режим редактирования.
TAB (2-e нажатие)+CTRLвозврат в режим редактирования.

LOAD

Загрузка символического файла для редактирования.

Если первым символом файла является «%», файл загружается в строчные буфера, начиная с буфера комментариев. Загрузка в каждом буфере начинается с позиции, в которой находился курсор. Разделителями голосов являются знаки «%» или «\0»(0). Знаки–разделители в буфер не переписываются. Также подавляются знаки с шестнадцатеричным значением < 0x20. Максимальная длина каждого голоса 700 байт. Если редактор при вызове функции LOAD находился в режиме замены (OVERTYPE), то старое содержимое буферов, начиная с позиции курсора, стирается; если был включён режим вставки (>INSERT<), это старое содержимое добавляется в конец буфера после вновь загруженного; при этом стирается буфер CUT/PASTE.

Если первый символ файла не «%», файл переписывается в буфер CUT/PASTE (700 байтов), а строчные буфера не изменяются.

SAVE

Строчные буфера переписываются в файл на диске.

Если в записи содержится символ «%», то символы, стоящие в строке данного голоса правее %, не записываются на диск.

Первым символом файла, а также после каждого голоса записываются «%».

BLOAD

Файл с диска ( музыкальный фрагмент ) переписывается в область музыкальной очереди редактора (до 10500 байтов).

Фрагмент можно затем прослушать функцией play редактора.

Дальнейшее редактирование фрагмента невозможно.

BSAVE

Готовый музыкальный фрагмент из области музыкальной очереди редактора записывается на диск.

QUIT

msx/maestro/med/med.txt · Последние изменения: 2022-04-01 21:40 — GreyWolf