<< MOVE And now, for those who are interested in the music editor PSC - here is some interesting information. By the way, soon A new version of Pro Sound Creator should be released soon. It's cooler more convenient and sophisticated. Structure of PSC editor modules. ---------------------------------------------------------------- (c) MVA from E-mage /Grodno/ 1. The structure of the file itself. QQ..24 - bytes "PSC V1.QQ COMPILATIOU OF " 25..44 - 2Q byte of the music name 45..48 - bytes "VU" 49..66 - 18 bytes of the music author 67..68 - reserved (always #2Q,#2Q) 69..7Q - logical address of the beginning of Samples (counted from the beginning module) 71..72 - logical address of the beginning of the Positions table 73..73 - initial Delay (music speed) 74..75 - logical address of the table of logical addresses of ornaments 76.. - logical addresses of the Samples themselves (2 bytes each) .. - logical addresses of the Ornaments themselves (2 bytes each) .. - co6ctbehho Samples : Sample number (1 byte) in the editor, Sample itself Sample number in the editor, Sample itself ... Sample number in the editor, the Sample itself byte #FF .. - co6ctbehho Ornaments : Ornament number in the editor, the Ornament itself Ornament number in the editor, the Ornament itself ... Ornament number in the editor, the Ornament itself byte #FF .. - co6ctbehho Patterns Pattern length, Pattern number in the editor, channel A, #FE, channel B, #FE, channel C, #FE ... Pattern length, Pattern number in the editor, channel A, #FE, channel B, #FE, channel C, #FE byte #FF .. - co6ctbehho Positions Position number (important only for decompilation), Pattern length, adr of A, adr of B, adr of CPosition number, Pattern length, adr of A, adr of B, adr of C ... Position number, Pattern length, adr of A, adr of B, adr of C what position is looped to, byte #FF, log. address in the Positions table to the desired position ---------------------------------------------------------------- 2. Sample's structure. Each “line” of Sample consists of six bytes: Q..1 - tone add (shift for pure tone) 2 - noise add (displacement for noise) 3 - volume (sound volume in Sample - local volume) 4 - free byte (for Player's speed) 5 - Flag: bits: Q - pure tone (Q-is, 1-is not) 1 - increase global volume by 1 (1-yes, Q-no) 2 - decrease global volume by 1 (1-yes, Q-no) 3 - noise (Q-yes, 1-no) 4 - envelope (Q-yes, 1-no) 5 - finish Sample (Q-yes, 1-no) 6 - go to the beginning of the cycle (Q-yes, 1-no) 7 - beginning of the cycle (Q-yes, 1-no) ---------------------------------------------------------------- 3. Строение Ornament`a. Каждая "строка" Ornament`a состоит из двух байт: Q - Флаг + noise add биты: Q..4 - noise add 5 - закончить Ornament (Q-да ,1-нет) 6 - перейти на начало цикла (Q-да ,1-нет) 7 - начало цикла (Q-да ,1-нет)1 - pote add (mix for note) ---------------------------------------------------------------- 4. The structure of Pattern channels. #QQ..#56 - note #57..#66 - volume (#57=envel,#58=1,#59=2,...,#66=F) #67 + 2 bytes of ADR - Sample body address (see point 5) #68 + 2 bytes of ADR - Ornament body address (see point 5) #6A..#79 + 1 byte of value - built-in commands: #6B - glis.dn #6С - glis.up #6D - port. #6E - del. #6F - hld.orn #7Q - sldv. #71 - rls orn #7A + 2 bytes of envelope - oгибaюцaя (4 старших 6uta - номер oru6. ,остальные - значение задержки #7В + 1 byte of noise add - смецение шума после каждой ноты (присутсвует ТОЛЬКО на канале В) #7С - pause #7D - rls #8Q..#9F - номер Sample`a (номер в таблице адресов) #AQ..#BF - Ornament number (number in the address table) #CQ..#FF - pause between the next command (note) in notes. #CQ - 1 note, #C1 - 2 notes, ..., #FF - 64 notes. In each “note” there are some parameters first, and then there are pause until the next note (after this command the required note will be skipped number of notes, and then everything will be discussed further) ---------------------------------------------------------------- 5. Some additional features of the decompiler. (Not supported by Player) If at the address74 modules (address to Samples) is the number #QQQQ, then the decompiler switches to the second operating mode: 1. At address 74 there are already co6ctbehho Samples, i.e. addresses Samples and Ornaments no longer exist. 2. Teams #8Q to #BF no longer exist here. Instead of them the command is a pause between notes (i.e. it is mixed, #81=1 note, #82=2 notes, #83=3 notes,#CQ=64 notes, a command from #С1 to #FF does not exist) 3. To set the desired Sample or Ornament, use commands #67 and #68, where you need to set the address to the block body. This mode was introduced to make writing converters faster.
Share your thoughts about the article