Из журнала Spectrofon #2, Москва, 1994 +---------------------------+ | ------ СИСТЕМА ------ | +---------------------------+ Сегодня мы предлагаем Вам познакомиться с музыкальным ре- дактором ASC Sound Master (ASM). Это полнофункциональный музы- кальный редактор для ZX-Spectrum 128 Кb. Мы связались с автором прог- раммы - Андреем Сендецким и предложили ему представить для всех читателей нашего журнала свою программу. Предложение по- лучило поддержку и, в конечном результате, нам удалось догово- риться с автором об опубликова- нии на страницах журнала фирмен- ного описания программы, а так же о включении в "ПРИЛОЖЕНИЕ" последней версии этого музы- кального редактора. Итак, Андрей Сендецкий стал первым автором, который поделил- ся с нами своей разработкой и создал прецедент в становлении рынка программного обеспечения в нашей стране. Приятно сознавать тот факт, что для любителей компьютера ZX-Spectrum нет не политических, не экономических барьеров. И нам всем будет только лучше, когда к нашему общему делу активно подключатся и жители стран ближ- него зарубежья. Тем более, что опыт такого сотрудничества у нас уже есть. В первом номере мы писали о том, что "SPECTROFON" будет вся- чески поддерживать российских авторов системных, прикладных и игровых программ. Мы уже сообщали, что готовы предоставлять страницы журнала для авторских описаний, а так же для размещения демонстрационных и полных версий программ. Мы да- ем авторам возможность начать наконец-то нормальную, серьезную работу, за которую можно будет что-то получить. Теперь у многих появится стимул писать программы не только для себя и своих дру- зей, но и на благо всех пользо- вателей ZX-Spectrum. SPECTROFON донесет Ваши программы до всех желающих приобрести их. О том, как начать действо- вать, подробно рассказано в пер- вом номере журнала "ZX-РЕВЮ" за 1994 год в статье "К вопросу о дистрибуции программного обеспе- чения". А сейчас мы предоставляем слово автору музыкального редак- тора "ASM". (c) Андрей Сендецкий. ИСКУССТВО ЗВУКА --------------- Прошли те времена, когда компьютеры ( ЭВМ !) занимались "перемалыванием" колонок никому не нужных цифр, будоража умы пи- онеров компьютерной индустрии. Помянем добрым словом их теперь уже седые "яйцеобразные" головы (англ. egghead). Теперь, когда миром правит Amiga и даже "сине- го гиганта" (IBM) стали волно- вать не только размеры и бестол- ково разбазариваемые мегагерцы своих компьютеров, люди все еще ждут от компьютера чуда, кото- рое уже стало реальностью. Не секрет, что звуковое оформление программы может пол- ностью перевернуть отношение к ней и поднять ее рейтинг от без- надежной до приемлемой, от хоро- шей до сенсационной. Имена компьютерных музыкантов (Rob Hubbard, David Whittaker, Allister Brimble ...) среди компьютерных фанов не менее по- пулярны, чем имена рок-музыкан- тов. А что же Spectrum? Есть ли у него шансы успеть на набирающий ход экспресс? Конечно нет ... Если не совершить для него ма- ленького чуда: заставить людей поверить, что он - несколько больше, чем достаточно дешевая и простая в обращении "игрушка". Главной целью при написании ASM было доказать себе - что я что-то понимаю в программирова- нии, людям - что на ZX-Spectrum можно создавать достаточно неп- лохую музыку, самому ZX-Spectrum - что его время еще не прошло. Единственным серьезным ограниче- нием явились звуковые возможнос- ти AY. Что из всей этой затеи полу- чилось - решать пользователям, тем более теперь, когда ASM стал широко доступен благодаря сот- рудничеству с редакцией журнала "SPECTROFON". Пользуясь возможностью, хочу открыть маленький секрет: вряд ли стоит ожидать появления на свет ASM v1.13 (как никогда не существовало и ASM v0.13 - суе- верие!). Но в то же время сейчас есть все шансы на появление ASM v2.00, работа над которым уже ведется. Есть основания считать, что та- кого звучания, как в ASM v2.00, никто на AY еще не слышал. Воз- можно, впервые ASM v2.00 будет продемонстрирован на страницах "SPECTROFON"a. Но это уже дело будущего. А пока я буду считать свою работу небесполезной, если ZX Spectrum и ASM позволят найти себя новым талантливым компью- терным музыкантам, которые под- готовятся к тем временам, когда в нашу жизнь придут другие компьютеры и другие программы. КРАТКАЯ ИНСТРУКЦИЯ К МУЗЫКАЛЬНОМУ РЕДАКТОРУ A S M ------------------------------ Дата последней редакции: 17.1.94 Действующая версия: ASM v.1.12 Музыкальный редактор ASC Sound Master (далее ASM) - пол- нофункциональный музыкальный ре- дактор для ZX Spectrum 128k и более старших моделей с музы- кальным процессором AY-3-8912A либо AY-3-8910A и TR-DOS v. 5.01, 5.03 и совместимых с ними. Основные характеристики (описа- ние терминологии - ниже): - хранение нотного текста в системе Position/Pattern/Quant; - 100 Позиций (Position); - 32 Паттерна (Pattern); - 32 Инструментa (Sample); - 32 Орнамента (Image); - оконный интрфейс; - универсальное управление; - дисковая система ADS (MS-DOS style): 12-bit FAT, 255 Dir Entries, 790kb free; - запись откомпилированных мо- дулей в TR-DOS для дальнейшего использования в других програм- мах. КОНЦЕПЦИЯ УПРАВЛЕНИЯ --------------------- Управление основывается на использовании 8 управляющих функций: - движение вверх (up); - движение вниз (down); - движение влево (left); - движение вправо (right); - выбор (select); - уменьшение (sub); - увеличение (add); - выход (escape); Каждую из них реализует нес- колько различных клавиш либо их сочетаний. Как видно, первые 5 - функции джойстика. Естественно, их и ре- ализуют джойстики: Sinclair I, Sinclair II, Kempston, Cursor (+Enter), QAOP (+Space). С помо- щью этих функций производится перемещение по меню и выбор оп- ций в меню. Уменьшение (TRUE VIDEO (Caps+3) или R) и увеличение (INV VIDEO (Caps+4) или T) ис- пользуются для изменения пара- метра текущей опции меню. Выход (BREAK (Caps+Space) или EDIT (Caps+1)) служит для выхода из текущего меню в предыдущее без выбора какой-либо его опции. Кроме того, для выбора прак- тически всех опций во всех меню назначены определенные буквенные клавиши. Они нигде явно не ука- заны, но, как правило совпадают с первой буквой названия соот- ветствующей опции. При нажатии такой клавиши происходит переме- щение курсора к соответствующей опции и ее выбор. При этом надо помнить, что если какая-либо клавиша выполняющая функции джойстика (Q,A,O,P) , назначена на выбор опции, то в данном меню функцию джойстика она выполнять не будет. Существует только 2 исключе- ния из схемы: - в режиме редактирования Pattern при нахождении курсора в поле октавы/ноты 2 нижних ряда клавиатуры используются как кла- виатура фортепиано, 'I' - для установки 'PSE', 'K' - для уста- новки 'RLS', 'L' - для установки '___', 'U' для входа в режим ре- дактирования команд; - в режиме редактирования Pattern, Sample, Image одновре- менное нажатие 'вверх' и 'вниз' используется для перехода на на- чало Pattern, Sample, Image со- ответственно. СТРУКТУРА МУЗЫКАЛЬНЫХ ДАННЫХ ---------------------------- В этом разделе описывается принятая в ASM система хранения музыкальных данных. Предполога- ется знание целого ряда музы- кальных терминов. t0.n:.kad Построение музыки базируется на 6 основных понятиях: - Quant; - Pattern; - Position; - Sample; - Image; - Quark. Наиболее фундаментальным из этих понятий является Quant: на- именьшая длительность ноты, ис- пользуемая в данном музыкальном произведении. В этом случае для того, чтобы указать длительность любой ноты, достаточно будет указать, сколько Quants она составляет. Обычно в качестве Quant выбира- ется длительность 1/16 либо 1/32. Тогда, например, для Quant=1/16 длительности 1/8 бу- дут соответствовать 2 Quants, длительности 1/4 с точкой - 6 Quants и т.д. Если известно, что данная но- та должна длиться определенное количество Quants, то для указа- ния этого надо, чтобы в первом Quant было указано обозначение ноты, а последующие должны ос- таться незанятыми ('___'). Таким образом, все время зву- чания композиции оказывается по- деленным на Quants. Для удобства манипулирования отдельными частями музыкального произведения Quants группируются в Patterns. Pattern - совокуп- ность из нескольких Quants. Мак- симальный размер Pattern - 64 Quants. Тогда для Quant=1/16 но- ты по длительности звучания Pattern будет составлять 64*(1/16)=4 целых ноты или 4 такта для размера 4/4. Размер Pattern можно изменять (минимум=1, максимум=64), но всегда удобно, чтобы Pattern по длительности составлял целое число тактов (для размера 3/4 и Quant=1/16 удобен размер Pattern=48 Quants, что составит 48*(1/16)/(3/4)=4 такта). Patterns малого размера (ме- нее 1 такта) могут, например, применяться для создания затак- тов. В ASM имеется 32 Patterns, имеющих номера 00 .. 31. Как те- перь ясно, Pattern, как правило, содержит нотный текст части му- зыкального произведения (музы- кальной фразы). Для того, чтобы на основе Patterns конструиро- вать композицию, надо указать последовательность номеров Patterns, которые должны будут воспроизводиться. Эта последова- тельность называется списком по- зиций (Positions). Понятно, что в списке Positions номер одного и того же Pattern может быть указан любое количество раз. Размер списка Positions - 100. Positions имеют номера 00 .. 99. Теперь от описания структуры музыкального текста в целом пе- рейдем к кодированию нот и их характеристик. Музыкальный процессор AY-3-8912A/10A имеет 3 програм- мируемых генератора прямоу- гольных сигналов (tone) с 16-ю градациями громкости по логариф- мической шкале, 1 генератор бе- лого шума (white noise) 32-х ви- дов, а также генератор огибающих (envelope) 8-ми типов. При этом надо учитывать, что громкость генератора noise контролируется регистрами громкости tone гене- раторов, что не позволяет счи- тать его полноценным 4-м кана- лом. Envelope генератор также не обладает достаточными для полно- ценного контроля огибающей воз- можностями, поэтому в ASM он ис- пользуется нестандартным образом для получения сигналов непрямоу- гольной формы. При редактировании музы- кального текста каждый Quant представляется в виде строки текста, в которой указываются параметры, контролирующие работу генератора envelope, генератора noise и tone генераторов. Формат строки Quant: |00|027\12|2#G 1 3 15|...|...| A B CDEF G H I J K L A. Порядковый номер Quant в Pattern. B. Код частоты envelope генера- тора. При сложении колебаний tone генератора и колебаний envelope генератора, если часто- ты колебаний соотносятся между собой как небольшие целые числа (1:1, 2:3 и т.д.), то в ре- зультате получаются колебания с достаточно сложной формой сигна- ла, вносящие приятное разнообра- зие в не слишком богатое звуча- ние AY. C. Символ типа огибающей. Тип Символ |\|\|\|\ \ /|/|/|/| / /\/\/\/ /\ \/\/\/\ \/ D. Код запрета смещения noise - цифра от 0 до 7, показывающая, к каким каналам относится, а к ка- ким не относится указанное в п. E смещение noise: 0 - cмещение относится ко всем каналам; 1 - смещение запрещено для ка- нала A; 2 - смещение запрещено для ка- нала B; 4 - смещение запрещено для ка- нала C. Суммируя эти значения, можно указывать смешанные запреты (5 - запрет смещения для каналов A и C). E. Базовый номер noise, относи- тельно которого будут затем про- водиться смещение noise, указан- ные в Sample (см. ниже). Задание базы для генератора noise аналогично указанию ноты (т.е. частоты) для tone генера- тора. Можно указать 1 из 32-х возможных баз, обозначаемых сле- дующим образом: 0..9 и далее A..V. F..J. Параметры, контролирующие канал A: F. Указатель наличия команды (# - есть, | - нет). Команды (Command) - мощное средство до- полнительного управления данным каналом либо композицией в це- лом. Список команд - в описании редактора Pattern. G. Октава и нота. В ASM допусти- мы 1 неполная и 7 полных октав: U - субконтр октава (в ней только 2 ноты: #A и B); C - контр октава; L - большая октава; S - малая октава; 1 - первая октава; 2 - вторая октава; 3 - третяя октава; 4 - четвертая октава. Ноты обозначаются в соот- ветствии с международным стан- дартом: C - до; #F - фа диез; #C - до диез; G - соль; D - ре; #G - соль диез; #D - ре диез; A - ля; E - ми; #A - ля диез; F - фа; B - си. H. Указание номера Sample, ис- пользуемого при воспроизведении данной ноты. В ASM можно опреде- лить 32 Samples, первые 10 из которых обозначаются цифрами (0..9), а остальные - буквами (A..V). Sample является основным оп- ределителем звука. В Sample ука- зываются характеристики огибаю- щей, задействование tone, noise и envelope генераторов, смещение номера noise относительно базо- вого и смещение частоты tone от- носительно заданной ноты (в еди- ницах частоты AY). Подробное описание структуры и возможностей Sample - в описа- нии редактора Sample (см. ниже). I. Указание номера Image, ис- пользуемого при воспроизведении данной ноты. В ASM можно опреде- лить 32 Images, первые 10 из ко- торых обозначаются цифрами (0..9), а остальные - буквами (A..V). Image является вспомога- тельным определителем звука. В Image указываются смещение номе- ра noise относительно базового (как и в Sample) и смещение час- тоты tone относительно заданной ноты (в полутонах). Подробное описание структуры и возможностей Image - в описа- нии редактора Image (см. ниже). J. Громкость. Допустимые значе- ния: 01..15. Указание громкости означает то, что диапозон значе- ния громкостей 0..15 при воспро- изведении данной ноты будет про- масштабирован в диапазон от 0 до заданного значения. Указание EN в данном поле разрешает ис- пользование envelope генератора (если кроме того его использова- ние указано в Sample (см. п. H)). K. и L. Аналогично F..J для ка- налов B и C соответственно. Теперь рассмотрим взаимосвязь работы программы с некоторыми жизненно важными параметрами ZX Spectrum. Как известно, в ZX Spectrum генерируются прерывания с часто- той 50 Гц. Интервал времени 1/50 секунды, равный интервалу между двумя соседними прерываниями, называется кварком (Quark). По импульсам прерываний осуществля- ется синхронизация работы прог- раммы, и, кроме того, взаимо- действие компьютера с AY также происходит с этой частотой. Это означает, что лишь 50 раз в се- кунду могут быть изменены значе- ния в регистрах AY. Исходя из этого факта легко прийти к мыс- ли, что время звучания одного Quant (см. выше) должно быть равно целому числу Quarks (нельзя начать воспроизводить новую ноту, не изменив значений в регистрах AY). Время одного Quant указывает- ся для каждой композиции в глав- ном меню. (например, QV.06 - Quant равен 6 Quarks). Допусти- мые значения длительности Quant - от 3 до 50 Quarks. Если Quant равен 6 Quarks и соответствует 1/16 ноты, то тог- да темп звучания композиции бу- дет состовлять примерно 125 уда- ров в минуту. То же самое можно сказать, если Quant равен 3 Quarks, но соответствует 1/32 ноты. К сожалению, изменение времени Quant является довольно грубым, но единственным способом задания темпа композиции. Описатели звука Sample и Image неявно также используют понятия Quark: каждая строка в описании Sample или Image соот- ветствует одному Quark, что обеспечивает задание характерис- тик звука с максимальной допус- тимой дискретностью (как уже от- мечалось, менять параметры зву- чания AY в ASM нельзя через ин- тервал времени меньше чем Quark). Максимальный размер Sample - 150, Image - 30 Quarks. Формат строки Sample: |002|()|+05|-002|12|TN-| A B C D E F A. Порядковый номер Quark в Sample. B. Метки зацикливания. '(' - начало цикла, ')' - конец цикла. При воспроизведении Sample будут проигрываться Quarks 'внутри' этих меток до тех пор, пока не начнется воспроизведение другой ноты, паузы (Pause - PSE) либо не будет разрешено начать фазу послезвучания (Release - RLS). В этом последнем случае при достижении Quark с меткой ')' произойдет переход на следующий Quark (если он есть), а не на Quark с меткой '('. C. Смещение номера noise относи- тельно воспроизведенного в пре- дыдущем Quark. Это означает, что при каждом последующем воспроиз- ведении данного Quark (т.к. в примере он указан внутри цикла) номер noise будет изменяться согласно последовательности: n+5,n+10,n+15 и т.д., где n - номер noise, воспроизводившегося в Quark с порядковым номером 01. D. Аналогично C, но для частоты tone генератора. Надо учитывать, что это изменение частоты зада- ется в единицах частоты AY. Как известно, каждый tone генератор AY может в данный момент воспро- изводить одну из 4095 частот, номер которой заносится в соот- ветствующие регистры AY. При этом частоту можно опре- делить по формуле: F=110.83/n [kHz], где n - номер частоты (1..4095). Из формулы видно, что на низ- ких частотах интервал между дву- мя соседними частотами AY сос- тавляет доли герца, тогда как на высоких частотах он достигает нескольких килогерц. Это надо учитывать при зада- нии смещения частоты в Sample. На практике для нот первой окта- вы суммарное смещение частоты обычно не превышает 5-10 единиц. E. Громкость. Т.к. tone генера- тора AY имеет 16 градаций гром- кости, то допустимые здесь зна- чения : 00..15. F. Режим работы канала. Содержит 3 позиции: 1. задействование tone генерато- ра: 'T' -да, '_' -нет; 2. задействование noise генера- тора: 'N' -да; '_' -нет; 3. дополнительные возможности: '_' -не использовать дополни- тельные возможности; 'E' -использовать envelope ге- нератора, если в Pattern будет указано EN; '+' -увеличить на 1 смещение громкости; '-' -уменьшить на 1 смещение громкости; Смещение громкости означает отличие реально воспроизводимой громкости от указанной в п. E. В начале воспроизведения Sample оно равно нулю, а затем его зна- чения могут накапливаться, оста- ваясь в диапазоне -15..+15. Если указан режим работы 'T_E' или '__E', то смещение, указанное в п. C, относится не к noise, а к частоте envelope генератора. Формат строки Image схож с форматом строки Sample за исклю- чением того, что отсутствуют пп. E. и F., а смещение частоты в п. D. указывается в полутонах, что позволяет задавать в Image воспроизведение аккордов. ГЛАВНОЕ МЕНЮ ПРОГРАММЫ ---------------------- Теперь перейдем к описанию опций основного меню ASM в по- рядке их отображения на экране. Попутно будут прокомментированы и все вложенные меню. В заглавии каждого пункта в квадратных скобках будут указаны клавиши, нажатием которых можно быстро выбирать данную опцию меню. (см. 'Концепция управления'). Функция escape в основном ме- ню служит для выхода из програм- мы. При этом запрашивается подтверждение с помощью специ- ального подменю. PLAY COMPOSE / PLAY PATTERN [P] Функцией select начинается воспроизведение композиции, на- ходящейся в данный момент в па- мяти, в том случае, если в теку- щей Position указан номер како- го-либо Pattern (т.е. если Position не пуста). В случае PLAY PATTERN будет воспроизводиться только Pattern, указанный в данной Position (циклически), а в случае PLAY COMPOSE по окончании проигрыва- ния Pattern в текущей Position произойдет переход к Pattern, указанному в следующей Position. Если следующая Position пуста, то программа будет анализировать последующие Position, пока не будет достигнута последняя Position. В этом случае произойдет переход к Position, помеченной как точка цикла (Loop Point - LP - см. ни- же). Переключение варианта опции - функциями sub/add без выбора оп- ции. При включении PLAY COMPOSE автоматически производится пере- ход к Position с номером 00 (это самый быстрый способ перехода на начало композиции). Во время проигрывания функци- ями sub/add можно изменять время Quant (Quant Value - QV -см. ни- же), т.е. подбирать подходящий темп звучания композиции. Оста- новка проигрывания - функцией escape. POSITION 00 [N] Функциями sub/add можно уста- новить текущую Position для про- игрывания или редактирования Pattern, указанного в этой Position. Функцией select производится вход в редактор Position. В ре- дакторе Position отображается весь список Positions с указани- ем номеров Pattern в каждой Position по 10 каждой строке (10 строк=100 Positions). '--' вмес- то номера Pattern означает, что данная Position пуста. Up/down/left/right служат для перемещения по списку Position: -10/+10/-1/+1 соответственно. Select включает/выключает ре- жим DEL<>INS. Если он выключен, то sub/add изменяют номер Pattern в текущей Position, а если включен, то sub 'удаляет' данную Position (сдвигая номера Pattern в последующих Positions на 1 влево), а add раздвигает список (номера Pattern в после- дующих Positions смещаются на 1 вправо, а номер в текущей Position дублируется в следующую Position). Выход из редактора Position -функцией escape. EDIT PAT. -- [E] Функциями sub/add можно уста- новить номер Pattern, указанного в текущей Position (не входя в редактор Position). '--' означает, что текущая Position пуста. Функцией select производится вход в редактор Pattern. В редакторе Pattern отобража- ются 7 Quants: 3 предшествующих текущему, текущий, 3 следующих за текущим. Термины 'предшеству- ющий' и 'следующий' соответству- ют порядку воспроизведения Quants при проигрывании. Например, если установлен ре- жим PLAY PATTERN и текущим явля- ется Quant 01, а размер текущего Pattern 64, то предыдущими будут Quants 62, 63 и 00 того же Pattern, а последующими - 02, 03 и 04. Если установлен режим PLAY COMPOSE, то при переходе через границу Pattern предыдущие Quants будут выбираться из Pattern, номер которого указан в предыдущей Position, а следующие - из Pattern, номер которого указан в следующей Position. Кроме того, если текущая Position помечена как Loop Point, то для нее предыдущей считается последняя занятая Position, а для последней заня- той Position следующей считается Position, помеченная как Loop Point. Перемещение в редакторе Pattern: up/down - перейти к предыдущему/следующему Quant. Учитывая вышеописанную систему определения предыдущих и следую- щих Quants, очевидно, что не вы- ходя из редактора Pattern можно переместиться в любую часть ком- позиции. Одновременное нажатие up и down используется для быстрого перехода на начало Pattern. Перемещение по текущему Quant: left/right - перейти к предыдущему/следующему элементу строки Quant (см. описание фор- мата строки Quant). Действие sub, add и select изменяется в зависимости от то- го, на каком элементе строки Quant находится в данный момент курсор: - если курсор указывает на ок- таву/ноту канала A,B или C, то sub/add изменяют текущую октаву, select включает PLAY PATTERN / PLAY COMPOSE (в зависимости от того, что установлено в главном меню) с той лишь разницей, что проигрывание продолжается не до нажатия escape, а пока удержива- ется какая-либо клавиша; - иначе sub/add изменяют значе- ние в данном элементе строки, select проигрывает текущий Quant без перехода к последующему, по- ка удерживается какая-либо кла- виша. Как уже указывалось, в режиме редактирования Pattern при на- хождении курсора в поле октавы - ноты 2 нижних ряда клавиатуры используются как клавиатура фор- тепиано. При вводе ноты в соот- ветствующем канале могут автома- тически устанавливаться ос- тальные параметры (Sample,Image, Volume) канала так, как они ука- заны в опциях SM.--, IM.--, VOL.-- основного меню в том слу- чае, если вместо '--' указаны какие-либо значения. Иначе соот- ветствующий параметр не изменя- ется. Существует и обратная связь: если при редактировании Pattern изменить какой-либо па- раметр канала, то установленное значение будет перенесено в со- ответствующую опцию основного меню (SM,IM,VOL) и, значит, при дальнейшем вводе нот будет уста- навливаться автоматически. Особо следует сказать о вводе нот с клавиатуры в том случае, если в главном меню указано 'VOL.EN'. При этом в поле симво- ла типа огибающей подставляется символ, указанный в главном меню (\,/,/\,\/), а код частоты envelope генератора для введен- ной ноты подсчитывается автома- тически с учетом указанного в главном меню соотношения (3:1, 5:2, 2:1, 3:2, 1:1, 3:4, 1:2, 1:4, причем первая цифра указы- вает множитель для частоты envelope генератора, а вторая - для tone генератора). Кроме того, клавиша 'I' слу- жит для установки 'PSE' (паузы -Pause), 'K' - для установки 'RLS' (разрешение начать фазу Release -см. описание Sample), 'L' - для установки '___' (канал в данном Quant продолжает воспроизведение ранее указанной ноты). При нахождении курсора в поле октавы/ноты клавиша'U' использу- ется для установки команды в те- кущем Quant для данного канала AY. При нажатии этой клавиши на месте параметров канала появля- ется строка с названием команды и ее аргументом. Список команд: NO COMMAND - нет команды; HLD SAMPLE - продолжить воспро- изведение Sample с началом новой ноты; HLD IMAGE - продолжить воспроиз- ведение Image с началом новой ноты; HLD INSTR. - продолжить воспро- изведение Sample и Image с нача- лом новой ноты; QUANT = 03 - задать новую дли- тельность Quant (смена темпа звучания композиции); GLIS.UP 01 - смещать значение частоты канала на 1 вверх (в об- ласть высоких звуков) каждый Quark; GLIS.DN 01 - смещать значение частоты канала на 1 вниз (в об- ласть низких звуков) каждый Quark; PORT.-S 01 - плавный переход к указанной ноте от воспроизводив- шейся ранее за 1 Quark; Sample, который использовался при воспроизведении предыдущей ноты, продолжает свое звучание; PORT.+S 10 - как предыдущая ко- манда, но в момент начала пере- хода Sample, указанный в данном канале, начинает свое звучание с начала. * Надо учитывать, что при выпол- нении двух последних команд всегда будет продолжать свое звучание Image, использовавшийся при воспроизведении предыдущей ноты. То же можно сказать и о Sample в случае выполнения ко- манды PORT.-S. Кроме того, ко- манда PORT.-S учитывает предыду- щее смещение частоты канала, по- этому ее можно применять после команд GLIS и PORT. Если в теку- щем Quant канала, где применяет- ся команда PORT, не указана но- та, к которой надо делать пере- ход (т.е. указано '___' или 'RLS'), и если до этого выполня- лась команда GLIS или PORT, то произойдет возврат к той ноте, из которой происходил переход по команде GLIS или PORT; иначе ко- манда ничего не делает. * Команды GLIS и PORT кроме сме- щения высоты тона изменяют также и текущий номер noise, если noise разрешен в соответствующим Sample, в соотношении 16:1 (т.е. команда GLIS UP 32 будет смещать номер noise на 2 единицы каждый Quark в сторону меньших номе- ров). Из-за особенностей реали- зации команды PORT применение ее для изменения номера noise дос- таточно сложно, тогда как коман- да GLIS действует достаточно эф- фективно. В режиме установки команды up/down/left/right - смена ко- манды, sub/add - изменение аргу- мента команды (если он есть в данной команде), select - воспроизведение текущего Quant. Выход из режима редактирования Pattern - функцией escape. QNT. PLAY -- [Y] Отображает номер текущего Quant. '--' означает, что теку- щая Position пуста. Функции sub/add служат для перехода к предыдущему/последую- щему Quant по там же законам, что и up/down в редакторе Pattern. Функция select вызывает PLAY PATTERN / PLAY COMPOSE, причем проигрывание производится, пока нажата какая-либо клавиша. Данная опция используется редко и в основном служит для контроля номера текущего Quant. PAT. SIZE -- [Z] Показывает размер текущего Pattern. '--' означает, что те- кущая Position пуста. Функции sub/add позволяют ме- нять размер текущего Pattern в пределах от 1 до 64. При этом если Pattern уменьшается, то удаляется его последний Quant, а если увеличивается, то в конце его добавляется пустой Quant. A+ B+ C+ [A,B,C] С помощью этих трех опций можно запрещать воспроизведение соответствующего канала AY при проигрывании композиции. Перек- лючение +/- производится функци- ей select. LP.00 [J] Показывает номер Position, на которую производится зациклива- ние (Loop Point). Необходимое значение устанавливается функци- ями sub/add. QV.06 [Q] Время Quant в Quarks - т.е. задание темпа композиции. Пара- метр изменяется функциями sub/add в пределах от 3 до 50. SM.-- [S] Служит для отображения номера Sample, подставляемого при вводе ноты в редакторе Pattern, и од- новременно является входом в ре- дактор Sample. Sub/add позволяют установить нужный номер Sample. При '--' номер Sample в редакто- ре Pattern не подставляется и вход в редактор Sample не произ- водится. В редакторе Sample отображаются до 7 строк текущего Sample и появляется меню редак- тора Sample: HEAR SAMPLE 00 [H] Функциями sub/add можно уста- новить номер текущего Sample, select - воспроизведение Sample (пока нажата какая либо клавиша). NAME: <-X--X-> [N] Имя текущего Sample. Select - ввод нового имени. В режиме вво- да имени select - завершение ввода, escape - возврат к преды- дущему имени. EDIT PLACE 000 [E] Номер текущей строки Sample. Sub/add - смена текущей строки, select - вход в редактирование строки Sample. В режиме редакти- рования строки Sample up/down - перемещение по Sample вверх/вниз (смена текущей строки Sample), left/right - перемещение по строке Sample (см. описание фор- мата строки Sample), sub/add - изменение значения элемента те- кущей строки Sample, select - воспроизведение Sample, escape - выход из редактирования строки Sample в меню редактора Sample. При нахождении курсора в первой позиции (содержащей номер строки Sample) sub/add вызывают измене- ние размера Sample по описанным ниже правилам. ENTRY SIZE 000 [Z] Размер текущего Sample в Quarks. Sub - уменьшение размера (удаляется текущая строка Sample), add - увеличение разме- ра (текущая строка Sample дубли- руется). (: 000 ): 000 [J,K] Начало и конец цикла Sample. Syb/add - перемещение метки на- чала/конца цикла. 1_C 0 0 15 N00 [B,S,I,V,нет] Параметры канала, используе- мые при воспроизведении Sample (октава, нота, Sample, Image, Volume и базовый номер Noise). Sub/add - изменение соответству- ющего параметра. В отличии от редактора Pattern здесь октава и нота считаются одним парамет- ром. Select - воспроизведение Sample. DISK [D] Вход в меню операций с диском для данного Sample. Оно анало- гично меню операций с диском для композиции в целом и его описа- ние помещено ниже. Типы данных для операций с диском (см. опи- сание меню операций с диском) при вызове меню дисковых опера- ций из этого подменю: 'SAMPLE #00' - текущий Sample и 'SM.00 IM.00' - текущий инструмент (со- вокупность Sample и Image). GET < 00 [G] Копирование указанного Sample в текущий. Sub/add - изменение номера Sample-источника, select - копирование. Выход из редактора Sample - функцией escape. IM.-- [I] Выполняет действия, аналогич- ные только что описанному редак- тору Sample, но для Image. 1:1 [F] Соотношение частот envelope и tone генераторов используемое при вводе нот для VOL.EN (см. описание редактора Pattern). Sub/add - смена соотношения (3:1, 5:2, 2:1, 3:2, 1:1, 3:4, 1:2, 1:4), select - пересчет значений частоты envelope гене- ратора с учетом данного соотно- шения и формы колебаний envelope генератора для всех нот в теку- щем Pattern. \ [W] Форма колебаний envelpoe ге- нератора, используемая при вводе нот для VOL.EN (см. описание ре- дактора Pattern). Sub/add - сме- на формы колебаний (\, /, /\, \/), select - пересчет значений частоты envelope генератора с учетом данного соотношения и формы колебаний envelope генера- тора в текущем Pattern. .kad.n: VOL.-- [V] Значение Volume, подставляе- мое при вводе нот в режиме ре- дактирования Pattern. При '--' значение Volume при вводе нот подставляться не будет. Sub/add - изменение Volume (--, 01..15, EN). 1-ST OCTAVE [O] Название октавы, ноты которой будут вводиться при редактирова- нии Pattern. Sub/add - смена ок- тавы (SUBCN, CONTR, LARGE, SMALL, 1-ST, 2-ND, 3-RD, 4-TH). ASM COMPILER [M] Вход в меню компилятора ком- позиций. В верхней части меню (недоступной для курсора) отоб- ражается справочная информация о находящейся в памяти композиции (количество Positoins, Pattern, суммарный объем памяти, занятой Samples и Images). Ниже помеща- ются строки меню компилятора: COMPILE MODULE [C] Компиляция находящейся в па- мяти композиции. Select - начать компиляцию. После нормального завершения компиляции в нижней строке меню будет выдано сообще- ние о размере полученного в ре- зультате блока. Иначе будет вы- дано сообщение об ошибке (нечего компилировать, либо размер полу- ченного блока превышает 16384b). MUSIC'S NAME: SOUND MASTER'S MUSIC [N] Название композиции. Select - ввести новое название. Escape при вводе названия - возврат к предыдущему названию. DESIGNED BY: ANDREW SENDETSKI ASC [D] Имя автора композиции. Select - ввести новое имя авто- ра. Escape при вводе имени - возврат к предыдущему имени. BLOCK'S NAME: ANY-NAME [B] Имя файла, под которым скомпилиро- ванный блок будет записан на диск в формате TR-DOS. Select - ввести новое имя файла. Escape при вводе имени файла - возврат к предыдущему имени файла. SAVE COMPILED BLOCK TO TRDOS [S] Select - запись откомпилирован- ного блока в TR-DOS под указан- ным в предыдущей строке меню именем файла. По окончании запи- си в нижней строке меню будет выведено сообщение либо об ус- пешном завершении либо об ошибке (нечего записывать, неподходяший формат диска и т.д.). Откомпили- рованный блок после записи его на диск в формате TR-DOS затем может быть загружен в память по любому адресу. Воспроизводить откомпилиро- ванный блок может следующая BASIC-программа: 1 RANDOMIZE USR X+11 11 RANDOMIZE USR X+14 : PAUSE 1 : GO TO 11 где X - адрес, по ко- торому загружен блок. После останова этой программы клавишей BREAK 'заглушить' AY можно командой: RANDOMIZE USR X+17 Как видно, откомпилированный блок имеет 3 стандартные точки входа: X+11 - INIT - инициализирует (устанавливает на начало) компо- зицию, 'заглушает' AY, а при первом вызове еще и производит настройку программы на адрес загрузки; вызов этой точки входа первый раз после загрузки реко- мендуется производить при запре- щенных прерываниях (DI); X+14 - NEXT - формирование очередного набора значений в ре- гистрах AY (собственно воспроиз- ведение композиции); необходимо вызывать с частотой 50 Гц (т.е. с частотой следования прерыва- ний); X+17 - MUTE - 'заглушение' AY. Как правило, вызов этой точки входа производится, если необхо- димо завершить воспроизведение композиции. Надо учесть, что если после вызова MUTE затем возобновить вызовы NEXT, то воспроизведение композиции будет продолжено. INFORMATION ABOUT PROGRAM [I] Выдача информации об авторе программы и об условиях ее распространения. Любая клавиша - возврат в меню компилятора. Вы- ход из меню компилятора - escape. CLR A [L] Очистка указанной части теку- щего Pattern. Sub/add - выбор части Pattern, которая будет очищена (A, B, C - каналы A, B и C соответственно, E - значения частоты envelope генератора, N - значения базового Noise). Select - выполнение очистки. UNDO [U] Отмена изменений, только что внесенных в текущий Pattern при редактировании, очистке, копиро- вании или альтерации (см. ниже). Следует помнить, что если в ходе редактирования Pattern произошел переход в другой Pattern, то функция UNDO действовать не бу- дет. GET A < 00 A [G] Копирование в указанный канал текущего Pattern информации из определенного канала этого же или другого Pattern. Эта строка меню разделена на 3 части, в каждой из которых функциями sub/add можно установить один из параметров операции (канал-при- емник, Pattern-источник и канал- -источник). Функция select осуществляет копирование, когда курсор нахо- дится на любой из этих трех час- тей. KEY A < +000 Транспозиция (смещение на указанное количество полутонов) всех нот в указанном канале те- кущего Pattern. Эта строка меню разделена на 2 части, в каждой из которых функциями add/sub можно установить один из пара- метров операции (канал и коли- чество полутонов). Функция select осуществляет транспози- цию, когда курсор находится на любой из этих двух частей. DISK OPTIONS [D] Вход в меню дисковых операций для композиции: MUSIC MODULE: [Y] Задание типа данных, для ко- торых будут производится диско- вые операции (не считая трех операций), имеющих глобальный характер и выделенных в от- дельную группу в нижней части меню). Исходя из указанного типа данных программа будет автомати- чески составлять список расшире- ний имен файлов, по отношению к которым будут производиться фай- ловые операции. Сам список рас- ширений нигде не отображается и для пользователя знание его не- существенно. Допустимые типы данных: - MUSIC MODULE - все данные, описывающие композицию; - PATTERNS - идентификатор программы, название композиции, имя автора, темп, список Positions и все используемые в нем Patterns; - INSTRUMENTS - 32 Samples и 32 Images; - SAMPLES - 32 Samples; - IMAGES - 32 Images; LOAD [L] Чтение с диска файлов с ука- занных именем, составляющих выб- ранный тип данных; SAVE [S] Запись на диск файлов с ука- занным именем, составляющих выб- ранный тип данных; CHOOSE NAME [C] Выбор имени файла (файлов), по отношению к которому применя- ются все файловые дисковые опе- рации, из списка имеющихся на диске. Select - вызов списка имен файлов на диске, соот- ветствующих выбранному типу дан- ных. Если тип данных требует на- личия нескольких файлов с разны- ми расширениями, то автоматичес- ки будет проверяться наличие файлов со всеми необходимыми расширениями дла всех имен, ко- торые затем будут выведены в списке. При выборе имени из списка up/down/left/right - перемещение по текущей странице имен, sub/add - переход к предыду- щей/последующей странице имен, select - выбор имени, на которое указывает курсор (с возвратом в меню дисковых операций), escape - возврат к предыдущему имени (с возвратом в меню дисковых опера- ций). NAME: ANY_NAME [N] Имя файла (файлов), по отно- шении к которому применяются все файловые дисковые операции. Select - ввод нового имени. В режиме ввода нового имени escape - возврат к предыдущему имени. Вместе с именем файла может быть указан и дисковод (B:FILENAME). ERASE [E] Удаление с диска файлов с указанным именем, составляющих выбранный тип данных. PROTECT [P] Защита файлов с указанным именем, составляющих выбранный тип данных. Защита заключается в установке флага 'только для чте- ния' (Read Only). Защищенные файлы нельзя будет удалить функцией ERASE, пока не будет проведена отмена защиты (см. ни- же). UNPROTECT [U] Отмена защиты файлов с ука- занным именем, составляющих выб- ранный тип данных. RENAME: NEW_NAME [M] Переименование файлов с ука- занным именем, составляющих выб- ранный тип данных. Select - ввод нового имени. Select в режиме ввода имени - произвести переименование, escape - отказ от ввода нового имени и от переименования. LOGGED DRIVE :A [D] Задание дисковода, на котором будут производиться все дисковые операции. Sub/add - смена диско- вода (A, B). FORMAT DISK [F] Форматирование диска в форма- те 'ADS 1.00 (C) ASC' (790Kb). Select - вывод запроса о начале форматирования, затем 'Y' - на- чать форматирование, любая дру- гая клавиша - отказ от формати- рования. IMPORT ASM 0.1X [I] Чтение композиции, записанной предыдущей версией редактора, с диска в формате TR-DOS. Эта функция действует только для ти- па данных 'MUSIC MODULE'. Выход из меню дисковых опера- ций - escape.