zxtunes.com новости музыканты софт железо интервью подкасты статистика форум чаво музыка: игровая демошная из прессы с патей ремиксы в MP3
World's largest ZX Spectrum music collection язык rus eng

Софт  

просмотров 6842
обновление
25.12.2007



Cacofony Professional System
version 0.10


скачиваний 750


CACOFONY PRO SYSTEM v0.10
&
CACOFONY COMPILER v0.01

CACOFONY PRO SYSTEM (далее - CACOFONY) является полнофункциональным музыкальным редактором для компьютеров ZX-SPECTRUM с с музыкальным сопроцессором AY-3-8910/12. Для работы программы необходима следующая конфигурация компьютера:
- ОЗУ 48к (желательно 128) - TR-DOS любой версии (используется только точка входа #3D13) - SOS 82 или TURBO 90 (но только для стабильной шины данных).
Не гарантируется работа на "чайниковских" переделках ПЗУ. К таким глюкам как тупая дешифрация порта #7FFD, отсутствию сигнала /M1 на муз. процессоре или порта #FF CACOFONY не критичен.

CACOFONY написан по образу и подобию широко известного редактора SOUND TRACKER и является совместимым с ним снизу вверх. Однако, наличие различных приятных, полезных и просто мощных функций выделяет CACOFONY на фоне других музыкальных редакторов.
Ниже приведена сравнительная таблица известных мне редакторов SOUND TRACKER, ASM и включившего в себя все их "лучшие" черты PSM.

+---------------+-----+-----+-----+-----+
|               | ST  | ASM | PSM | CPS |
+---------------+-----+-----+-----+-----+
|кол-во POSITION| 256 | 100 |     | 256 |
+---------------+-----+-----+-----+-----+
|кол-во PATTERN |  31 |  32 |     |  40 |
+---------------+-----+-----+-----+-----+
|кол-во SAMPLE  |  15 |  32 |  15 |  15 |
+---------------+-----+-----+-----+-----+
|кол-во ORNAMENT|  16 |  32 |  32 |  15 |
+---------------+-----+-----+-----+-----+
|размер PATTERN | 9-64| 1-64| 1-64| 1-64|
+---------------+-----+-----+-----+-----+
|размер SAMPLE  |  32 |1-150| 1-32|1-120|
+---------------+-----+-----+-----+-----+
|размер ORNAMENT|  32 | 1-32| 1-32|1-120|
+---------------+-----+-----+-----+-----+
|независимая    |  -  |  +  |  +  |  +  |
|длина PATTERN  |     |     |     |     |
+---------------+-----+-----+-----+-----+
|изменение ско- |  -  |ко-  | для любой |
|рости          |     |манда| POSITION  |
+---------------+-----+-----+-----+-----+
|LOOP POINT     |  -  |  +  |  +  |  +  |
+---------------+-----+-----+-----+-----+
|модуляция      | PAT-|  -  | PAT-|любой|
|               | TERN|     | TERN|канал|
+---------------+-----+-----+-----+-----+
|громкость      |  -  |  +  |  +  |  -  |
+---------------+-----+-----+-----+-----+
|спец. команды  |  -  |  +  |  -  |  -  |
+---------------+-----+-----+-----+-----+
|авт. ввод дели-|  -  | ++  |  +  | ++  |
|теля ENVELOPE  |     |     |     |     |
+---------------+-----+-----+-----+-----+
|использ. ENV.  |  -  |  +  |  -  |  +  |
|вместе с ORNAM.|     |     |     |     |
+---------------+-----+-----+-----+-----+
|использование  | 20% | 50% | 40% | 90% |
|ENV. в SAMPLE,%|     |     |     |     |
+---------------+-----+-----+-----+-----+
|использование  | 100%| 6.2%| 24% |99.9%|
|TONE в SAMPLE,%|     |     |     |     |
+---------------+-----+-----+-----+-----+
|дополнительные |  -  | ++  |  +  |  -  |
|возможн. SAMPLE|     |     |     |     |
+---------------+-----+-----+-----+-----+
|изменение гром-|  -  |  -  |  -  |  +  |
|кости ENVELOPE |     |     |     |     |
+---------------+-----+-----+-----+-----+
|редактор SAMPLE| **  |  *  |*****| ****|
+---------------+-----+-----+-----+-----+
|автоматическая |  -  |  -  |  -  |  +  |
|генерация SAMP.|     |     |     |     |
+---------------+-----+-----+-----+-----+
|оконная система|  -  |  +  |  -  |  +  |
|& SPEED KEYS   |     |     |     |     |
+---------------+-----+-----+-----+-----+
|EDIT-IN-PLAY   |  -  |  -  |  -  |  +  |
+---------------+-----+-----+-----+-----+
|изменение QUARK|  -  |  -  |  -  |  +  |
+---------------+-----+-----+-----+-----+
|подгрузка любой|  -  |  -  |  -  |  +  |
|таблицы звуков |     |     |     |     |
+---------------+-----+-----+-----+-----+
|индикаторы     |  *  |*****| *** |*****|
+---------------+-----+-----+-----+-----+
|поддержка 48k  |  +  |  -  |  -  |  +  |
+---------------+-----+-----+-----+-----+
|совместимость  |  -  |  -  |  -  | ST  |
+---------------+-----+-----+-----+-----+
1. Музыкальный процессор AY8910/12

Музыкальный сопроцессор AY8910/12 является программируемым синтезатором звука и содержит в себе три независимых генератора прямоугольных колебаний (TONE) A, B и C, генератор белого шума (NOISE), генератор колебаний программируемой формы (ENVELOPE) и трехканальный микшер-усилитель с независимой установкой громкостей для каждого канала. Каждый канал (A,B,C) может воспроизводить звук соответствующего генератора TONE и/или белый шум, Помимо этого громкость каждого канала может быть промодулирована генератором ENVELOPE.

A8912/10 имеет 15/16 програмнодоступных регистра, из которых 14 имеют отношение к музыке:
R0&R1 составляют 12-ти разрядный регистр, определяющий высоту тона генератора A. Высота тона определяется формулой H=110.8375/R, где R - значение регистра R0&R1. Видно, что возможный диапазон лежит в пределах от 27Hz до 110KHz. При этом генератор способен воспроизводить 4095 различных звуков (R=1...4095).

R2&R3 и R4&R5 - аналогично для генераторов B и C. R6 - 5-ти разрядный регистр, определяющий базовую частоту генератора NOISE, которая определяется выражением N=110.8375/R6 KHz R7 - маски микширования (1-генератор отключен, 0-подключен):

D0 - генератор A -> канал A. D1 - генератор B -> канал B. D2 - генератор C -> канал C. D3 - генератор NOISE -> A. D4 - генератор NOISE -> B. D5 - генератор NOISE -> C.

R8,R9,R10 - определяют громкости каналов A,B,C. При этом биты D0..D3 обеспечивают 16 разничных уровней громкости. Если бит D4=1,то амплитудой соответствующего канала управляет генератор ENVELOPE. R11&R12 определяют частоту генератора ENVELOPE: E=6.927/R11&R12 KHz. R13 определяет вид ENVELOPE:
          0 \______
          1 \______
          2 \/|____
          3 \/|____
          4 /|_____
          5 /|_____
          6 /\_____
          7 /\_____
          8 \|\|\|\
          9 \______
          A \/\/\/\
          B \|-----
          C /|/|/|/
          D /------
          E /\/\/\/
          F /|_____
Генератор ENVELOPE испольсуется в CACOFONY в основном для получения непрямоугольных колебаний звуковых частот, поэтому регистр R12=0.

2. Основные термины.

В CACOFONY используется терминология принятая в редакторе ASM. Для тех, кто незнаком с ней, ниже даны краткие описания основных понятий (более подробно они будут описаны далее).

QUARK - минимальный элемент композиции, определяется временем между двумя циклами изменения регистров муз. процессора. Так как общение Z80 и AY8912 осуществляется с периодичностью прерываний, то минимально возможная длина QUARK равна 1/50 секунды. Такая продолжительность является фиксированной и используется во ВСЕХ редакторах. Однако, CACOFONY имеет возможность устанавливать QUARK равным 1/100 секунды, что позволяет увеличить частоту обновления регистров муз. процессора вдвое и улучшить звуковые возможности.

SAMPLE - основной определитель звуков. Позволяет через интервалы времени равные 1 QUARK изменять ВСЕ (кроме R12) регистры муз. процессора по описанному в нем закону. Используется для описания инструментов. (см. INSTRUMENT EDITOR)

ORNAMENT - вспомогательный определитель звуков. Позволяет изменять ТОЛЬКО регистры TONE. Используется для расширения возможностей SAMPLE и имитации аккордов. (см. INSTRUMENT EDITOR)

QUANT - элемент композиции равный по длительности минимально возможной длине ноты. Обязательно кратен QUARK. Может включать в себя ноты, воспроизводимые каждым каналом, а также их определители (SAMPLE & PRNAMENT). (см. PATTERN EDITOR)

PATTERN включает в себя от одного до 64-х QUANTS и является, по сути, музыкальной фразой из которых и состоит композиция.

POSITION - таблица, определяюшая последовательность воспроизводимых PATTERNS, а также скорости их воспроизведения и величины модуляции (т.е. повышения/ понижения) для каждого канала.

SOUNDS - таблица, определяющая частоту (точнее- значения регистров TONE) для каждой ноты. Применение различных таблиц обеспечивает возможность изменения частот звучания нот, что необходимо, в частности, при конвертировании композиций из формата SOUNDTRACKER, поскольку в нем все ноты транспонированы вверх но 10 полутонов по отношению к стандартным частотам.

COMPOSE - включает в себя вышеуказанные модули.

3. Главный экран.

Главный экран CACOFONY разделен на три части. Верхняя - главное меню, из которого осуществляется выбор основных функций редактора. Ниже располагается окно PATTERN EDITOR, в котором происходит редактирование композиции. В нижней части экрана находятся индикаторы шума и частот каналов. Причем последний показывает звуки неполных восьми октав с точностью до полутона; идикация происходит в соответствии со стандартным рядом частот независимо от таблицы SOUNDS.

4. Управление редактором.

Для управления CACOFONY используется система меню, все функции которой можно выбирать либо посредством курсора, либо используя "горячие" клавиши. Передвижение курсора осуществляется клавишами:

- вверх - вниз - влево

- вправо - выбор опции

Помимо этих, задействованы клавиши (CS+4) и (CS+3), которые используются для увеличения / уменьшения различных цифровых параметров или изменения некоторых других.

Горячие клавиши доступны во всех меню; для их индикации необходимо нажать (CS+SS). Горячая клавиша обеспечивает перемещение курсора на опцию и ее выбор. В основном меню горячие клавиши работают только при нажатом .

Выход из всех меню, а также отказ от некоторых функций осуществляется клавишей (CS+1).
Помимо этих, в некоторых случаях шспользуются другие клавиши, описание которых будет приведено в соответствующих разделах.

5. Главное меню.

Ниже приводится описание оций главного меню:

POSITION XX. (CS+I) - указывает номер текущей POSITION (XX=1..256). Клавиши (далее: +) и (далее: -) используются для изменения номера XX. устанавливает POSITION=1 (начало COMPOSE).

EDIT PAT.XX (CS+E) - указывает номер редактируемого PATTERN (1...40). Доступны функции +/-, устанавливает QUANT=0 (начало PATTERN).
CACOFONY позволяет производить редактирование PATTERN _НЕЗАВИСИМО_ от положения курсора в главном меню, т.е. одновременно возможно как редактирование PATTERN, так и выбор/изменение опция главного меню, и все это - без бестолкового переключения режимов работы, как это почему-то принято в других редакторах.
PATTERN EDITOR доступен ВСЕГДА, когда активно главное меню и использует следующие клавиши:

(CS+6) - переход на строку (QUANT) назад (вверх).
(CS+7) - оереход на строку вниз.
(CS+5) - перемещение курсора в PATTREN EDITOR влево.
(CS+8) - перемещение курсора вправо.
Окно PATTERN EDITOR состоит из семи строк, три из котырых являются предудущими текущей строке, и три - последующими. Текущая (редактирумая) строка выделена цветом и содержит в себе мерцающий курсор.
Формат строки PATTERN:
| LL | EE | NNN SO | NNN SO | NNN SO |
(канал A B C)
где LL - номер строки PATTERN'а
EE - номер ENVELOPE (--,01...FF) для текушего QUANT.
NNN - нота (в международной системе) и октава:

            C  - до
            C# - до#
            D  - ре
            D# - ре#
            E  - ми
            F  - фа
            F# - фа#
            G  - соль
            G# - соль#
            A  - ля
            A# - ля#
            B  - си
			
Октавы обозначаются как: U,C,L, S,1,2,3,4 - соответственно суб контр, контр, большая, малая, 1-я, 2-я, 3-я, 4-я.

Пример: C#L - до диез большой октавы. A-2 - ля 2-й октавы. S - номер SAMPLE (-,1...F). O - номер ORNAMENT (-,1...F).

Символы "-" или "0" в позициях EE, NNN, SO, показывают, что в данном QUANT соответствующая величина не изменяется, т. е. продолжает действовать ранее установленное значение. В случаях с ENVELOPE, SAMPLE и ORNAMENT имеет смысл только для экономии размера откомпилированного блока. Если же символы "---" находятся в позиции NNN, то это значит, что в соответствуюшем канале будет продолжать свое звучание определенная ранее нота.

Обпатите внимание, что в отличие от SOUNDTRACKER 0 в посиции ORNAMENT означает не 0-й ORNAMENT, а ранее установленный.
Для изменения значений EE, SO, используются клавиши 0...9, A...F при расположении курсора в необходимой позиции. Изменение NNN осуществляется клавишами Z,S,X,D,C,V,G,B,H,J,M которые соответствуют нотам от До до Си. При вводе ноты осушествляется автоматическая установка SO и EE, если соответствующие им опции SAMPLE, ORNAMENT либо ENV главного меню имеют отличные от "-" параметры. Для установки "---" в позицию ноты используется клавиша "К"; пауза "PSE" вводится клавишей "L" и обеспечивает заглушение канала.

PAT.SIZE XX (1...64) (CS+Z) - определяет размер текущего PATTERN. При уменьшении PAT.SIZE строки выходящие за пределы PATTERN НЕ ОЧИЩАЮТСЯ и при последующем увеличении PAT.SIZE восстанавливаются.

DELAY X (-,1...F) (CS+Y) - скорость воспроизведения композиции в текущеи POSITION (1 - максимальная, F - минимальная). Фактически определяет количество QUARK в QUANT. При значении DELAY равном "-" скорость остается прежней.

/X (SS+V) - X равный 1 или 2 показывает сколько QUARK содержится в интервале времени 1/50 секунды. 1 - стандартный режим использующийся большинством редакторов (обновление регистров AY - 50 раз в секунду). 2 - специальный режим с удвоением частоты выдачи данных на AY, позволяет улучшить качество звучания SAMPLE/ORNAMENTS (QUARK=1/100 сек.).

A+NN, B+NN, C+NN - определяет величину модуляции соответствующего канала PATTERN'а в текущей POSITION. Позволяет воспроизводить один и тот же PATTERN в разных POSITION в различных тональностях.

LEN. XX (1...256) (CS+N) - длина композиции (количество PATTERNS используемых в COMPOSE).

LP. NN (1...256) (CS+L) - номер POSITION, на которую происходит зацикливание COMPOSE при проигрывании ее до конца.

PLAY COMPOSE/PATTERN () - функции +/- переключают режим воспроизведения. При включенном режиме PATTERN происходит проигрывание/редактирование только текущего PATTERN, иначе - всей COMPOSE. При выборе этой опции клавишей (или горячей клавишей ) включается режим воспроизведения. При проигрвании композиции доступны _ВСЕ_ опции главного меню, а также редактирование PATTERN (!), что позволяет при некотором умении редактировать музыку непосредственно в процессе ее воспроизведения. Если же Вы таким умением пока не обладаете, то воспользовавшись возможностью EDIT-IN-PLAY с легкостью поймете происхождение названия редактора.
Выключение режима PLAY осуществляется клавишей или при входе в любое меню. В режиме /2 воспроизведение несколько искажается, т.к. изменение регистров AY происходит апериодично.

PLAY SONG (CS+P) - функция включающая воспроизведение музыки. В режиме /1 полностью аналогична вышеописанной. В режиме /2 обеспечивает реальное воспроизведение композиции (обновление регистров AY 100 раз в секунду через равные промежутки времени).

SAMPLE X (-,1...F) (CS+S)
ORNAMENT X (-,1...F) (CS+O)
При X отличном от "-" нажатие осуществляет вход в INSTRUMENT EDITOR.

INSTRUMENT EDITOR представляет собой совмещенный редактор SAMPLE/ORNAMENT. экран IE разделен на две части: первая (основная) содержит до 15-ти строк(QUARK) SAMPLE/ORNAMENT, вторая часть - это строка, похожая на строку PATTERN, но имеющая нотную позицию только для одного канала - служит для ввода ноты и ENVELOPE, которые используются в IE. В данной строке возможно, также, изменение номеров SAMPLE и ORNAMENT, при этом новые SAMPLE/ORNAMENT становятся текущими. Клавиши редакторования этой строки аналогичны используемым в PATTERN EDITOR.

Основная часть - собственно редактор SAMPLE/ORNAMENT - отображает до 15-ти строк (в зависимости от их длинны). Строка IE состоит из 10-ти позиций и имеет следующий формат:
     LL()+TONE+EN#### ######()+OR
    | ||||   || ||   ||    |||| |
    +++||+-+-++-++-+-++--+-+||+++
     | ||  |   |   |     |  || |
     1 23  4   5   6     7  89 10
	 
Позиции 2...7 относятся к SAMPLE, 8...10 - к ORNAMENT.

1 - номер строки SAMPLE/ORNAMENT
2&3 - символы "(" и ")" в данных позициях обозначают участок SAMPLE, который повторяется при воспроизведении. При воспроизведении SAMPLE проигрывается от начала до конца, затем воспроизводится участок ограниченный скобками.
4 - смещение частоты для генератора TONE, определяет на сколько единиц изменяется содержимое регистров TONE для данного QUARK относительно частоты ноты (но не предыдущего QUARK, как сделано в ASM & PSM). В отличае от SOUNDTRACKER, где возможные значения аналогичного параметра лежат в пределах от -4096 до +4095, в CACOFONY возможный диапозон - -2047... +2046, что практически полностью перекрывает 4096 возможных значений регистров TONE. Знак "+" перед числом соответстует не повышению частоты, как в ST, а увеличению значения регистра TONE, т.е. понижению частоты. При изменении регистров TONE действуют законы операций над числами в дополнительном коде по модулю 4096, т.е увеличение на 1 аналогично уменьшению на 4095, что объясняет в два раза меньший диапазон возможных чисел чем в ST.

Если в данной позиции находятся символы "-----", то генератор TONE отключается.

5 - аналогично предыдущиму параметру,но смещение задается для генератора ENVELOPE. Возможные значения от -80 до +7F (в шестнадцатиричном виде). Необходимо помнить, что частоты TONE и ENVELOPE различаются в 16 раз для одинаковых значений их регистров, поэтому изменению TONE на 32 соответствует изменение ENVELOPE на 2 (типы ENVELOPE 8 & C) или 1 (типы ENVELOPE A & E) для соотношения TONE/ENVELOPE 1/1.

6 - данная позиция определяет громкость QUARK'а (графическое обозначение) либо номер типа ENVELOPE (цифро-буквенное обозначение: -,1...F). Одновременное использование ENVELOPE и громкости невозможно из-за ограниченнсти возможностей AY. Символ "-" в позиции определителя ENVELOPE означает что в данном QUARK тип ENVELOPE не меняется. Внимание! использование повторяющихся одинаковых определителей ENVELOPE вместо "-" сильно меняет звучание SAMPLE, поскольку в случае, когда определитель ENVELOPE отличен от "-" происходит переустановка соответствующего регистра AY и генератор ENVELOPE перезапускается.

Цвет графического обозначения громкости определяет подключен (белый) или нет (синий) генератор TONE (при включенном ENVELOPE и отключенном TONE звучит "чистая" ENVELOPE, т. е. при значениях определителя ENVELOPE равных 8 или C имеем пилообразные, а при A и E - треугольные колебания). Помимо этого возможен особый режим (цвет - зеленый), когда частота TONE устанавливается равной 110KHz; этот режим похож на отключение TONE, поскольку данная частота выходит за диапазон слышимости, одноко, если в QUARK используется также NOISE или ENVELOPE, то громкость их звучания понижается. Как видно CACOFONY позволяет иметь ДВЕ громкости ENVELOPE.

7 - базовая частота NOISE генератора. Цвет данной позиции определяет подключен (белый) или нет (синий) генератор NOISE к выходу канала.

8&9 - аналогичны 2&3, но используются для ORNAMENT'а.

10 - значение модуляции текущего QUARK, показывает на сколько полутонов вверх или вниз изменяется текушая нота.

Необходимо помнить, что AY имеет по одному генератору NOISE и ENVELOPE, и только один определитель типа ENVELOPE, поэтому использование в разных каналах PATTERN'а SAMPLE'ов с различными NOISE или ENVELOPE не приведет к желаемому результату: звучать будет ENVELOPE/NOISE того SAMPLE, который находится в канале имеющем более высокий приоритет (A - наивысший, C - наинизший).

Редактирование параметров и перемещение курсора происходит при помощи стандартных для CACOFONY клавиш; дублируется также клавишей , а - , нажатие последних с приводит к изменинию на несколько единиц сразу. Помимо этих используются еще две клавиши: - обнуление текушего значения и <.> (+ ) - смена знака числа либо маски (в позиции 2&3 - изменение маски TONE). Возможны комбинации из этих клавиш.

Изменение размера SAMPLE или ORNAMENT выполняется при нахождении курсора в позиции 1, причем если до этого курсор находился в позициях SAMPLE'а, то происходит изменение размера SAMPLE, иначе - размера ORNAMENT.

OCTAVE NNN (CS+V) - текущая октава, которая используется при вводе ноты. Октавы обозначаются: SUB, CON, LRG, SML, 1ST, 2ND, 3RD, 4TH - сответственно субконтр, контр, большая, малая, 1...4 октавы. Для изменения октавы доступны также клавиши +<1>...<8>, причем не только из основного меню, но и из INSTRUMENT EDITOR.

ENV.E/T (SS+M) - устанавливает отношение частот ENVELOPE/TONE для автоматического ввода делителя ENVELOPE. При параметре "---" ввод делителя ENVELOPE не происходит. Следует иметь ввиду, что частоты звучания ENVELOPE разных типов (8&C и A&E) различаются вдвое (см. также INSTRUMENT EDITOR). Ввод делителя ENVELOPE осуществляется как в PATTERN EDITOR так и в INSTRUMENT EDITOR.

A+,B+,C+ (CS+A, CS+B, CS+C) - включение/отключение каналов при воспроизведении.

CLEAR (CS+R) - вход в меню очистки. Работа с меню достаточно проста: помещаем курсор на необходимый объект и нажимаем . При ответе на запрос "ARE YOU SURE?" "Y" происходит стирание, любая другая клавиша - отказ.

Строка LINE L1 -- L2 - стирает текст в текущем CHANNEL PATTERN'а от строки L1 до L2, при этом курсор может находиться как в позиции LINE L1, так и в позиции -- L2. L1 и L2 можно устанавливать прямо из PATTERN EDITOR нажатием соответственно + и +. CHANNEL и PATTERN устанавливаются автоматически при входе в меню в зависимости от положения курсора и текущего PATTERN'а.

COPY TEXT (CS+X) - меню копирования. Работа с меню практически полностью аналогична предыдущему. Символы ">>" указывают направление копирования. Копирование строк/каналов возможно как в пределах одного так и разных PATTERN'ов. Опция LINE L1 -- L2 >> L3 копирует строки с L1 по L2 в строки начиная с L3; PATTERN и CHANNEL источника и приемника определяются значениями в соответствуючих опциях. При копиривани строк в пределах одного PATTREN'а и CHANNEL'а строки выходящие за 0-ю или 63-ю строки помещаются соответственно в конец/начало PATTERN'а (происходит циклический здвиг строк).

Опция CREATE INSTRUMENT генерирует SAMPLE и ORNAMENT с соответствующими номерами из текста текущего CHANNEL'а PATTERN'а начиная со строки L3. Генерируются всегда SAMPLE и ORNAMENT длинной 120. Для нормальной работы функции необходимо наличие ноты и ENVELOPE (если используются SAMPLES со смещением ENVELOPE) в текущей строке PATTREN'а, а также необходимо, чтобы SAMPLE/ORNAMENT генерация которых происходит не использовались в тексте PATTERN'а. Полученные SAMPLE/ORNAMENT эквивалентны по звучанию группе строк с L3 и по L3+N, где N=120/DELAY или 60/DELAY для режимов 50/100 QUARKS соответственно) при условии, что SAMPLE/ORNAMENT будут воспроизводиться с нотой/ENVELOPE, установленной в строке L3. После выполнения опции устанавливается строка до которой выполнена конверсия. Данная опция удобна для замены часто повторяющихся групп строк одной нотой.

TRANSPOSE (CS+T) - меню транспонирования. Транспонирожание осуществляется на величену SEMITONES. в позиции SEMITONES меняет знак последней. В остальном работа с окном аналогична предыдущим. Следует заметить, что применение TRANSPOSE для канала или PATTERN'а может выть заменено использованием модуляции (см. A+NN, B+NN, C+NN) - это оправданно в тех случаях, когда транспонируемый канал встречается в композиции несколько раз, поскольку при компилировании происходит упаковка идентичных каналов.

В 3-х предыдущих окнах помимо SPEED KEYS работают также SPEED KEYS с и для перемещения курсора на опции типа --LN2 и >>LN3.

DISK (CS+D) - меню дисковых функций:
OBJECT: - функции <+>/<-> меняют объект для дисковых операций. NAME: - нажетие осуществляет вход в редактор имени файла. Используются управляющие клавиши: , , , , , или - завершение редактирования. Тип файла не редактируется.

LOAD - загрузка соответствующего объекта. При отсутствии файла выдается сообщение . Обратите внимание, что CACOFONY работает с файлами способными иметь одинаковое имя и тип (т.е. одноименных с точки зрениЯ TR-DOS), но являющихся разными объектами. Тип объекта определяется по длине и адресу загрузки фаила.

SAVE - выгрузка объекта. При существовании одноименного объекта выдается запрос . При OVERWRITE осуществляется перезапись ПОВЕРХ файла, а не удаление/запись, как это обычно принято.

ERASE - удаляет объект. Одноименные фаилы других объектов НЕ удаляются.

RENAME - переиминовывает файл на диске. После выбора опции осуществляется редактирование имени файла (если он есть на диске); если имя изменено то оно переписывается в каталог диска.

CATALOG - вывод каталога диска. Выводится имя диска, количество свободных секторов (число в скобках), общее число и число удаленных файлов. Для каждого файла указывается его имя и тип (строчные буквы заменяются прописными), а для файлов CACOFONY так же и тип объекта.
В случае если на диске записано файлов больше, чем может поместиться в окне, выдается сообщение и ожидается нажетие любой клавиши. осуществляет отказ от дальнейшего просмотра каталога.

DRIVE - дисковод (A,B,C,D).

IMPORT ST 1.0 - конвертирование файлов формата SOUNDTRACKER (тип S). Для нормального звучания необходимо подгрузить таблицу STRACKER.M.SOUNDS (так как все звуки в ST подняты на 10 полутонов). Конвертирование музыки осуществляется в большинстве случаев правильно, однако возможны следующие проявления несовместимости форматов:

1. ST имеет 0-й ORNAMENT. При импорте CACOFONY ищет незадействованный ORNAMENT и заменяет им 0-й. Если в COMPOSE задействованы все ORNAMENT (никогда такого не видел) то замена 0-го ORNAMENT'а не происходит и звучание COMPOSE может сильно измениться (в CACOFONY 0-й ORNAMENT означает, что номер ORNAMENT'а не меняется).

2. В CACOFONY номер ENVELOPE указывается непосредственно в SAMPLE, поэтому, если в ST один и тот же SAMPLE используется с разными ENVELOPE, то правильная конверсия такого SAMPLE затруднена. Если же этот SAMPLE используется еще и без ENVELOPE, то придется немного покритиковать тупость опции IMPORT ST1.0 создавая разные SAMPLE для этих случаев вручную. Однако, я надеюсь, что для тех, кто занимается конверсией СВОИХ композиций, а не импортирует украденные из чужих программ, эта неприятная работа не займет много времени.

В результате работы с диском возможны различные ошибочные ситуации. Так, при чтении с плохих секторов и при попытке записи на заклеенную дискету выдается сообщение "RETRY/IGNORE TRK/SEC?"; клавиши "R" и "I" выполняют очевидные функции, ABORT производится нажатием . Такие сообщения как , , в коментариях, надеюсь, не ныждаются.

COMPILE (CS+M) - меню компилирования.
CACOFONY COMPILER - вход в одноименную программу (только для ZX128, владельцам ZX48 придется загружать COMPILER отдельно). Подробности работы описаны в описании компилятора.
MUSIC'S NAME - ввод названия композиции (осуществляется аналогочно вводу имени файла).
AUTHOR(S) - имя автора(ов) композиции.
MUSIC'S NAME и AUTHOR(S) заносятся
в откомпилированный файл при компиляции.
ABOUT - информация о версии и авторе.

6. CACOFONY COMPILER

Компилятор представляет собой независимую программу, которую может запускаться независимо от редактора. При запуске CACOFONY на 128-х машинах происходит автоматическая подзагрузка компилятора и вызов его возможен непосредственно из редактора.
Компилятор имеет всего одно меню, большинство опций которого аналогичны опциям DISK MENU и служат для загрузки/выгрузки файлов. Загружаться могут только файлы *.M.COMPOSE а выгружаться - типа C.
Непосредственно компиляция происходит при выборе опции COMPILE MODULE. При этом создается блок пригодный к использованию вне CACOFONY.
Функция +/- PLAY ROUTINE позволяет выгружать откомпилированный блок как с процедурами воспроизведения, так и без них. Размер PLAYER'а можно увидеть при запуске Kомпилятора в строке MODULE LENGHT.
MUSIC ON/OFF включает/выключает музыку (если она откомпилирована).

Откомпилированная музыка может выть загружена по любым разумным адресам и воспроизводиться путем огращения к несколькимточкам входа (N - адрес загрузки блока):

N+00 - инициализация музыки, которая располагается непосредственно за проигрываюшими процедурами . При первом вызове происходит так же настройка под адрес загрузки. При инициализации прерывания не меняются; при первом вызове желапельно прерывания запретить, или делать вызов данной точки непостредственно после HALT (при разрешенных прерываниях).

N+03 - инициализация музыки, адрес которой находится в регистрах DE. Если DE содержит адрес по которому нет музыки, то последствия непредсказуемы.

N+06 - заглушение AY.

N+09 - резерв.

N+12 - воспроизведение одного QUARK. При длительности QUARK=1/50 (параметр /N=1) вызов данной точки осуществляется один раз в прерывание (из процедуры обработки IM2 или после HALT). При QUARK= 1/100 вызов данной точки необходимо осучествлять ДВА раза за прерывание, причем через одинаковые промежутки времени, что требует специального подхода к построению програмы использующей такую музыку. Следующий пример покажет возможный вариант: MM HALT
* CALL N+12
* CALL P28000; процедуры, общей длительностью приблизительно равные 28000 тактам прицессора.
* CALL N+12
CALL OTHERS; процедуры, не превышающие по длительности 28000 тактов.
JR MM

N+14 - в случае QUARK=1/50 полностью аналогичен предыдущей точке. При QUARK=1/100 выполняет строки из приведенного выше примера, помеченнуе символом "*", что позволяет обращаться к данной точке ОДИН раз за прерывание (например, из процедуры обработки прерываний). Следует, однако, заметить, что в этом случае процедурой P28000 является бесполезная пауза, что приводит к пустой трате процессорного времени, поэтому, данной функцией рекомендуется пользоваться при воспроизведении музыки в различных меню и т.п.

(c) 20.03.1996, S.T.A.S.


© 2006—2014
ZXTUNES — World's largest ZX Spectrum music collection