C-Net Week #08
17 января 1998
  Софт  

Infa #2 - Структура модулей редактора Pro Sound Creator.

<b>Infa #2</b> - Структура модулей редактора Pro Sound Creator.


  ┼─────────────┼                                          KVA
┼─> I N F A # 2 <──────────────────────────────────────────────┼
  ┼─────────────┼                  MDM 318-721 / 500:0152/1.07



Структура модулей редактора PSC.
    ( ** - для PSC 1.04, * для PSC 1.03, остальное - общее )
────────────────────────────────────────────────────────────────

1. Структура самого файла.


00..24 - байты "PSC V1.00 COMPILATION OF "
25..44 - 20 байт имени музыки
45..48 - байты " BY "
49..66 - 18 байт автора музыки
67..68 - зарезервировано (всегда #20,#20)
69..70 - логический адрес начала Sample'ов (считается от начала
 модуля)
71..72 - логический адрес начала таблицы Positions
73..73 - начальный Delay (скорость музыки)
74..75 - логический адрес таблицы лог.адресов орнаментов

76..   - лог.адреса самих Sample'ов (по 2 байта)
 (* - считается от начала модуля,
 ** - считается от начала данных адресов)

  ..   - лог.адреса самих Ornament'ов (по 2 байта)
 (* - считается от начала модуля,
 ** - считается от начала данных адресов)

  ..   - собственно Sample'ы :
номер Sample'а (1 байт) в редакторe, сам Sample
номер Sample'а в редакторе, сам Sample
...
номер Sample'а в редакторе, сам Sample
байт #FF

  ..   - собственно Ornament'ы :
номер Ornament'а в редакторе, сам Ornament
номер Ornament'a в редакторе, сам Ornament
...
номер Ornament'а в редакторе, сам Ornament
байт #FF

  ..   - собственно Pattern'ы
   длина Patterna'а, номер Pattern'а в редакторе,
канал A, #FE, канал B, #FE, канал C, #FE
   длина Patterna'а, номер Pattern'а в редакторе,
канал A, #FE, канал B, #FE, канал C, #FE
...
   длина Patterna'а, номер Pattern'а в редакторе,
канал A, #FE, канал B, #FE, канал C, #FE
   байт #FF

  ..   - собственно Positions
   номер Position (важен токьто для декомпиляции),
длина Pattern'a, adr of A, adr of B, adr of C
   номер Position, длина Pattern'а,
adr of A, adr of B, adr of C
...
   номер Position, длина Pattern'a,
adr of A, adr of B, adr of C
   на какую посицию зациклено, байт #FF,
лог. адрес в таблице Positions на нужную позицию
────────────────────────────────────────────────────────────────

2. Строение Sample'а.

Каждая "строка" Sample'а состоит из шести байт:


0..1 - tone add (смещение для чистого тона)
2    - noise add (смещение для шумов)
3    - volume (громкость звука в Sample'е - локальная громкость)
4    - свободный байт (для быстроты Player'a)
5    - Флаг:
 биты:0 - чистый тон (0-есть, 1-нету)
1 - увеличить на 1 глобальную громкость (1-да, 0-нет)
2 - уменьшить на 1 глобальную громкость (1-да, 0-нет)
3 - шум (0-есть ,1-нет)
4 - огибающая (0-да ,1-нет)
5 - закончить Sample (0-да ,1-нет)
6 - перейти на начало цикла (0-да ,1-нет)
7 - начало цикла (0-да ,1-нет)
────────────────────────────────────────────────────────────────

3. Строение Ornament'а.

Каждая "строка" Ornament'а состоит из двух байт:

0 - Флаг + noise add
 биты:0..4 - noise add
5    - закончить Ornament (0-да ,1-нет)
6    - перейти на начало цикла (0-да ,1-нет)
7    - начало цикла (0-да ,1-нет)
1 - note add (смещение для ноты)
────────────────────────────────────────────────────────────────

4. Строение каналов Pattern'ов.


#00..#56 - нота
#57..#66 - volume (#57=envel,#58=1,#59=2,...,#66=F)
#67 + 2 bytes of ADR - адрес тела Sample'а (см.пункт 5)
#68 + 2 bytes of ADR - адрес тела Ornament'a (см.пункт 5)
#6A..#79 + 1 byte of value - встроенные команды:
#6B - glis.dn
#6C - glis.up
#6D - port.
#6E - del.
#6F - hld.orn
#70 - sldv.
#71 - rls orn
#7A + 2 bytes of envelope - огибающая (4 старших бита - номер
    огиб. ,остальные - значение задержки
#7B + 1 byte of noise add - смещение шума после каждой ноты
    (присутсвует ТОЛЬКО на канале B)
#7C - pause
#7D - rls

#80..#9F - номер Sample'а (номер в таблице адресов)
#A0..#BF - номер Ornament'а (номер в таблице адресов)
#C0..#FF - пауза между следующей командой (нотой) в нотах.
   #C0 - 1 нота, #C1- 2 ноты, ..., #FF - 64 ноты.

   В каждой "ноте" сначала идут какие-то параметры, а затем идет
пауза до следующей ноты  ( после этой команды пропустится нужное
количество нот, а затем уже будет все обрабатываться дальше)
────────────────────────────────────────────────────────────────

5. Некоторые дополнительные возможности декомпилятора.
   (Player'ом не поддерживаются)

    Если по адресу 74 модуля (адрес на Sample'ы) находится число
#0000, то декомпилятор переходит во второй режим работы :
    1. По адресу 74 лежат уже собственно Sample'ы, т.е.  адресов
       Sample'ов и Ornament'ов уже не существует.
    2. Команд с #80 по #BF здесь уже не существует.
       Место них команда пауза между нотами (т.е. она смещается,
       #81=1 нота, #82=2 ноты, #83=3 ноты,#C0=64 ноты , а команд
       с #C1 по #FF не существует)
    3. Для задания  нужного Sample'а или Ornament'а используются
       команды #67 и #68,где нужно задавать адрес на тело блока.

Этот режим был введен для более  быстрого написания конвертеров.
────────────────────────────────────────────────────────────────
KVA from E-mage 1998 (c)




Другие статьи номера:

Новины - у редакции сменился сетевой адрес.

Мнение - Scratcher разбирает письма одного жаждущего мести поклонника C-NET.

Infa #2 - Структура модулей редактора Pro Sound Creator.

Железо - как можно, да и нужно подключить AY Covox.

График - график работы BBS.

Rectime - продолжение описания Emage Work Station.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Этюды - Процедура прорисовки символа с помощью атрибутов.
BBS - список станций BBS ZXNet.
Техпомощь - Dos Review 3: материал по формату дисковых операционных систем CP/M, ASC SOUND MASTER, RT11, СМ ЭВМ РАФОС.
Вступление - Пермская компьютерная газета.
Юмор - GuuMаniа. Глава II.

В этот день...   1 января

SibNews #08, Woot! #01, Spectrum Magazine #01, ACNews #25, Psychoz #14, ACNews #14, Last 128 #08, Last 128 #06, Last 128 #05, Last 128 #04, Last 128 #03, Last 128 #02, Last 128 #09, Last 128 #3.5, Last 128 #8.025, Sinclair Club #05, Last 128 #M!R 01, Fantadrom #01, Buzz #20, Last 128 #01, DonNews #13, Nicron #120, Promised Land #01, Inferno #01, Marazm #25, Ultimathum #01, Marazm #21, Hooy Mag #02, KrNews #11, Marazm #22, Marazm #23, ZX Football 2000 #01, Codemania #01, Always #03, Bugs #02, IzhNews #08, Virtual Worlds #01, Listok #04, Scenergy #02, Flash Info #18, Marazm #16, Marazm #17, Zed #01, Balagan #02, ZX Format #08, ZX Power #03, Shock #01, Impulse #02, Deja Vu #03, ZX Club #08, ZX Club #06, Numberology #01, Marazm #13, Marazm #12, Marazm #14, Gorodok #02, Zodiac #01, Marazm #15, Deja Vu #07, Marazm #11, Deja Vu #07, Playboy #03, Crazy News #2, Crazy News #4, ZX Light #01, Crazy News #5, Playboy #02, ZX News #03, ZX Review #1-2, Read Me #02, Crazy News #3, Nicron #13, Read Me #01, Public Spirit #01, Faultless #06, Faultless #05, ZX Software #01, Stump #04, Speccy #07, Возраждение #0, Speccy #03, On-Line #17, Scene+ #01, Welcome Press #01, ZX Konig #04, Adventurer #01, Faultless #05, Faultless #04, Di Halt #01, Faultless #01, Playboy #01, Crazy News #1, Faultless #03, Pioneer #03, Sinclair Town #02, ZX Magazine #01, Eldorado #01, ZX Magazine #02, Spectron #01, ZX News #01, ZX Konig #02, 200 #W, Welcome Press #00, Dune #07, Subliminal Extacy #01, Subliminal Extacy #02, ZX Konig #01, Subliminal Extacy #00, Muchomor #01, Spectrofon #01, ZX Revija #02, Outlet #01, Outlet #1-3