┌───────────────────────────┐
│ ────── СИСТЕМА ────── │
└───────────────────────────┘
Сегодня мы предлагаем Вам
познакомиться с музыкальным ре-
дактором 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 для дальнейшего
использования в других програм-
мах.
.n0
.k0b0.k1t1.k2t2.k3b6
Выберите часть описания:
1.КОНЦЕПЦИЯ УПРАВЛЕНИЯ
2.СТРУКТУРА МУЗЫКАЛЬНЫХ ДАННЫХ
3.ОПИСАНИЕ ГЛАВНОГО МЕНЮ
КОНЦЕПЦИЯ УПРАВЛЕНИЯ
---------------------
.k0t0.n:
Управление основывается на
использовании 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 система хранения
музыкальных данных. Предполога-
ется знание целого ряда музы-
кальных терминов.
.k0t0.n:
Построение музыки базируется
на 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
воспроизведение аккордов.