]> 4ch.mooo.com Git - 16.git/blob - 16/PCGPE10/MODFORM.TXT
reverted my open watcom to 1.9 an recompiled everything~
[16.git] / 16 / PCGPE10 / MODFORM.TXT
1 \r
2 Protracker 1.1B Song/Module Format:\r
3  \r
4 Offset  Bytes  Description\r
5    0     20    Songname. Remember to put trailing null bytes at the end...\r
6  \r
7 Information for sample 1-31:\r
8  \r
9 Offset  Bytes  Description\r
10   20     22    Samplename for sample 1. Pad with null bytes.\r
11   42      2    Samplelength for sample 1. Stored as number of words.\r
12                Multiply by two to get real sample length in bytes.\r
13   44      1    Lower four bits are the finetune value, stored as a signed\r
14                four bit number. The upper four bits are not used, and\r
15                should be set to zero.\r
16                Value:  Finetune:\r
17                  0        0\r
18                  1       +1\r
19                  2       +2\r
20                  3       +3\r
21                  4       +4\r
22                  5       +5\r
23                  6       +6\r
24                  7       +7\r
25                  8       -8\r
26                  9       -7\r
27                  A       -6\r
28                  B       -5\r
29                  C       -4\r
30                  D       -3\r
31                  E       -2\r
32                  F       -1\r
33  \r
34   45      1    Volume for sample 1. Range is $00-$40, or 0-64 decimal.\r
35   46      2    Repeat point for sample 1. Stored as number of words offset\r
36                from start of sample. Multiply by two to get offset in bytes.\r
37   48      2    Repeat Length for sample 1. Stored as number of words in\r
38                loop. Multiply by two to get replen in bytes.\r
39  \r
40 Information for the next 30 samples starts here. It's just like the info for\r
41 sample 1.\r
42  \r
43 Offset  Bytes  Description\r
44   50     30    Sample 2...\r
45   80     30    Sample 3...\r
46    .\r
47    .\r
48    .\r
49  890     30    Sample 30...\r
50  920     30    Sample 31...\r
51 \r
52 Offset  Bytes  Description\r
53  950      1    Songlength. Range is 1-128.\r
54  951      1    Well... this little byte here is set to 127, so that old\r
55                trackers will search through all patterns when loading.\r
56                Noisetracker uses this byte for restart, but we don't.\r
57  952    128    Song positions 0-127. Each hold a number from 0-63 that\r
58                tells the tracker what pattern to play at that position.\r
59 1080      4    The four letters "M.K." - This is something Mahoney & Kaktus\r
60                inserted when they increased the number of samples from\r
61                15 to 31. If it's not there, the module/song uses 15 samples\r
62                or the text has been removed to make the module harder to\r
63                rip. Startrekker puts "FLT4" or "FLT8" there instead.\r
64 \r
65 Offset  Bytes  Description\r
66 1084    1024   Data for pattern 00.\r
67    .\r
68    .\r
69    .\r
70 xxxx  Number of patterns stored is equal to the highest patternnumber\r
71       in the song position table (at offset 952-1079).\r
72 \r
73 Each note is stored as 4 bytes, and all four notes at each position in\r
74 the pattern are stored after each other.\r
75 \r
76 00 -  chan1  chan2  chan3  chan4\r
77 01 -  chan1  chan2  chan3  chan4\r
78 02 -  chan1  chan2  chan3  chan4\r
79 etc.\r
80 \r
81 Info for each note:\r
82 \r
83  _____byte 1_____   byte2_    _____byte 3_____   byte4_\r
84 /                 /        /                 /\r
85 0000          0000-00000000  0000          0000-00000000\r
86 \r
87 Upper four    12 bits for    Lower four    Effect command.\r
88 bits of sam-  note period.   bits of sam-\r
89 ple number.                  ple number.\r
90 \r
91 Periodtable for Tuning 0, Normal\r
92   C-1 to B-1 : 856,808,762,720,678,640,604,570,538,508,480,453\r
93   C-2 to B-2 : 428,404,381,360,339,320,302,285,269,254,240,226\r
94   C-3 to B-3 : 214,202,190,180,170,160,151,143,135,127,120,113\r
95 \r
96 To determine what note to show, scan through the table until you find\r
97 the same period as the one stored in byte 1-2. Use the index to look\r
98 up in a notenames table.\r
99 \r
100 This is the data stored in a normal song. A packed song starts with the\r
101 four letters "PACK", but i don't know how the song is packed: You can\r
102 get the source code for the cruncher/decruncher from us if you need it,\r
103 but I don't understand it; I've just ripped it from another tracker...\r
104  \r
105 In a module, all the samples are stored right after the patterndata.\r
106 To determine where a sample starts and stops, you use the sampleinfo\r
107 structures in the beginning of the file (from offset 20). Take a look\r
108 at the mt_init routine in the playroutine, and you'll see just how it\r
109 is done.\r
110  \r
111 Lars "ZAP" Hamre/Amiga Freelancers\r
112  \r
113 --------------------------\r
114  \r
115 Found that document...\r
116  \r
117 Mark J Cox ------------------------------------------- m.j.h.cox@bradford.ac.uk\r
118 University of Bradford ---------------------------- bc732@cleveland.freenet.edu\r
119 Mark\r
120  \r
121              EFFECT COMMANDS\r
122              ---------------\r
123  Effect commands on protracker should\r
124  be compatible with all other trackers.\r
125  0 - None/Arpeggio     8 - * NOT USED *\r
126  1 - Portamento Up     9 - SampleOffset\r
127  2 - Portamento Down   A - VolumeSlide\r
128  3 - TonePortamento    B - PositionJump\r
129  4 - Vibrato           C - Set Volume\r
130  5 - ToneP + VolSlide  D - PatternBreak\r
131  6 - Vibra + VolSlide  E - Misc. Cmds\r
132  7 - Tremolo           F - Set Speed\r
133  \r
134  \r
135               E - COMMANDS\r
136               ------------\r
137  The E command has been altered to\r
138  contain more commands than one.\r
139  E0- Filter On/Off     E8- * NOT USED *\r
140  E1- Fineslide Up      E9- Retrig Note\r
141  E2- Fineslide Down    EA- FineVol Up\r
142  E3- Glissando Control EB- FineVol Down\r
143  E4- Vibrato Control   EC- NoteCut\r
144  E5- Set Finetune      ED- NoteDelay\r
145  E6- Patternloop       EE- PatternDelay\r
146  E7- Tremolo Control   EF- Invert Loop\r
147  \r
148  \r
149   Cmd 0. Arpeggio [Range:$0-$F/$0-$F]\r
150   -----------------------------------\r
151  Usage: $0 + 1st halfnote add\r
152            + 2nd halfnote add\r
153  Arpeggio is used to simulate chords.\r
154  This is done by rapidly changing the\r
155  pitch between 3(or 2) different notes.\r
156  It sounds very noisy and grainy on\r
157  most samples, but ok on monotone ones.\r
158  Example: C-300047  C-major chord:\r
159           (C+E+G  or C+4+7 halfnotes)\r
160           C-300037  C-minor chord:\r
161           (C+D#+G or C+3+7 halfnotes)\r
162  \r
163  \r
164   Cmd 1. Portamento up [Speed:$00-$FF]\r
165   ------------------------------------\r
166  Usage: $1 + portamento speed\r
167  Portamento up will simply slide the\r
168  sample pitch up. You can NOT slide\r
169  higher than B-3! (Period 113)\r
170  Example: C-300103  1 is the command,\r
171             3 is the portamentospeed.\r
172  NOTE: The portamento will be called as\r
173  many times as the speed of the song.\r
174  This means that you'll sometimes have\r
175  trouble sliding accuratly. If you\r
176  change the speed without changing the\r
177  sliderates, it will sound bad...\r
178  \r
179  \r
180   Cmd 2. Portamento down [Speed:$00-FF]\r
181   -------------------------------------\r
182  Usage: $2 + portamento speed\r
183  Just like command 1, except that this\r
184  one slides the pitch down instead.\r
185  (Adds to the period).\r
186  You can NOT slide lower than C-1!\r
187  (Period 856)\r
188  Example: C-300203  2 is the command,\r
189             3 is the portamentospeed.\r
190  \r
191  \r
192  Cmd 3. Tone-portamento [Speed:$00-$FF]\r
193  --------------------------------------\r
194  Usage: Dest-note + $3 + slidespeed\r
195  This command will automatically slide\r
196  from the old note to the new.\r
197  You don't have to worry about which\r
198  direction to slide, you need only set\r
199  the slide speed. To keep on sliding,\r
200  just select the command $3 + 00.\r
201  Example: A-200000  First play a note.\r
202           C-300305  C-3 is the note to\r
203                slide to, 3 the command,\r
204                and 5 the speed.\r
205  \r
206  \r
207  Cmd 4. Vibrato [Rate:$0-$F,Dpth:$0-$F]\r
208  --------------------------------------\r
209  Usage: $4 + vibratorate + vibratodepth\r
210  Example: C-300481  4 is the command,\r
211        8 is the speed of the vibrato,\r
212    and 1 is the depth of the vibrato.\r
213  To keep on vibrating, just select\r
214  the command $4 + 00. To change the\r
215  vibrato, you can alter the rate,\r
216  depth or both. Use command E4- to\r
217  change the vibrato-waveform.\r
218  \r
219  \r
220  Cmd 5. ToneP + Volsl [Spd:$0-$F/$0-$F]\r
221  --------------------------------------\r
222  Usage: $5 + upspeed + downspeed\r
223  This command will continue the current\r
224  toneportamento and slide the volume\r
225  at the same time. Stolen from NT2.0.\r
226  Example: C-300503  3 is the speed to\r
227                 turn the volume down.\r
228           C-300540  4 is the speed to\r
229                          slide it up.\r
230  \r
231  \r
232  Cmd 6. Vibra + Volsl [Spd:$0-$F/$0-$F]\r
233  --------------------------------------\r
234  Usage: $6 + upspeed + downspeed\r
235  This command will continue the current\r
236  vibrato and slide the volume at the\r
237  same time. Stolen from NT2.0.\r
238  Example: C-300605  5 is the speed to\r
239                 turn the volume down.\r
240           C-300640  4 is the speed to\r
241                          slide it up.\r
242  \r
243  \r
244  Cmd 7. Tremolo [Rate:$0-$F,Dpth:$0-$F]\r
245  --------------------------------------\r
246  Usage: $7 + tremolorate + tremolodepth\r
247  Tremolo vibrates the volume.\r
248  Example: C-300794  7 is the command,\r
249        9 is the speed of the tremolo,\r
250    and 4 is the depth of the tremolo.\r
251  To keep on tremoling, just select\r
252  the command $7 + 00. To change the\r
253  tremolo, you can alter the rate,\r
254  depth or both. Use command E7- to\r
255  change the tremolo-waveform.\r
256  \r
257  \r
258  Cmd 9. Set SampleOffset [Offs:$00-$FF]\r
259  --------------------------------------\r
260  Usage: $9 + Sampleoffset\r
261  This command will play from a chosen\r
262  position in the sample, and not from\r
263  the beginning. The two numbers equal\r
264  the two first numbers in the length\r
265  of the sample. Handy for speech-\r
266  samples.\r
267  Example: C-300923  Play sample from\r
268                     offset $2300.\r
269  \r
270  \r
271  Cmd A. Volumeslide [Speed:$0-$F/$0-$F]\r
272  --------------------------------------\r
273  Usage: $A + upspeed + downspeed\r
274  Example: C-300A05  5 is the speed to\r
275                 turn the volume down.\r
276           C-300A40  4 is the speed to\r
277                          slide it up.\r
278  NOTE: The slide will be called as\r
279  many times as the speed of the song.\r
280  The slower the song, the more the\r
281  volume will be changed on each note.\r
282  \r
283  \r
284    Cmd B. Position-jump [Pos:$00-$7F]\r
285    ----------------------------------\r
286  Usage: $B + position to continue at\r
287  Example: C-300B01  B is the command,\r
288                  1 is the position to\r
289                  restart the song at.\r
290  This command will also perform a\r
291  pattern-break (see 2 pages below).\r
292  You can use this command instead of\r
293  restart as on noisetracker, but you \r
294  must enter the position in hex!\r
295  \r
296  \r
297    Cmd C. Set volume [Volume:$00-$40]\r
298    ----------------------------------\r
299  Usage: $C + new volume\r
300  Well, this old familiar command will\r
301  set the current volume to your own\r
302  selected. The highest volume is $40.\r
303  All volumes are represented in hex.\r
304  (Programmers do it in hex, you know!)\r
305  Example: C-300C10  C is the command,\r
306        10 is the volume (16 decimal).\r
307  \r
308  \r
309       Cmd D. Pattern-break\r
310       [Pattern-pos:00-63, decimal]\r
311       ----------------------------\r
312  Usage: $D + pattern-position\r
313  This command just jumps to the next\r
314  song-position, and continues play\r
315  from the patternposition you specify.\r
316  Example: C-300D00  Jump to the next\r
317      song-position and continue play\r
318             from patternposition 00.\r
319       Or: C-300D32  Jump to the next\r
320      song-position and continue play\r
321     from patternposition 32 instead.\r
322  \r
323  \r
324     Cmd E0. Set filter [Range:$0-$1]\r
325     --------------------------------\r
326  Usage: $E0 + filter-status\r
327  This command jerks around with the\r
328  sound-filter on some A500 + A2000.\r
329  All other Amiga-users should keep out\r
330  of playing around with it.\r
331  Example: C-300E01  disconnects filter\r
332                  (turns power LED off)\r
333           C-300E00  connects filter\r
334                   (turns power LED on)\r
335  \r
336  \r
337    Cmd E1. Fineslide up [Range:$0-$F]\r
338    ----------------------------------\r
339  Usage: $E1 + value\r
340  This command works just like the\r
341  normal portamento up, except that\r
342  it only slides up once. It does not\r
343  continue sliding during the length of\r
344  the note.\r
345  Example: C-300E11  Slide up 1 at the\r
346                beginning of the note.\r
347  (Great for creating chorus effects)\r
348  \r
349  \r
350   Cmd E2. Fineslide down [Range:$0-$F]\r
351   ------------------------------------\r
352  Usage: $E2 + value\r
353  This command works just like the\r
354  normal portamento down, except that\r
355  it only slides down once. It does not\r
356  continue sliding during the length of\r
357  the note.\r
358  Example: C-300E26  Slide up 6 at the\r
359                beginning of the note.\r
360  \r
361  \r
362   Cmd E3. Glissando Ctrl [Range:$0-$1]\r
363   ------------------------------------\r
364  Usage: $E3 + Glissando-Status\r
365  Glissando must be used with the tone-\r
366  portamento command. When glissando is\r
367  activated, toneportamento will slide\r
368  a halfnote at a time, instead of a\r
369  straight slide.\r
370  Example: C-300E31  Turn Glissando on.\r
371           C-300E30  Turn Glissando off.\r
372  \r
373  \r
374       Cmd E4. Set vibrato waveform\r
375       [Range:$0-$3]\r
376       ----------------------------\r
377  Usage: $E4 + vibrato-waveform\r
378  Example: C-300E40  Set sine(default)\r
379                E44  Don't retrig WF\r
380           C-300E41  Set Ramp Down\r
381                E45  Don't retrig WF\r
382           C-300E42  Set Squarewave\r
383                E46  Don't retrig WF\r
384           C-300E43  Set Random\r
385                E47  Don't retrig WF\r
386  \r
387  \r
388    Cmd E5. Set finetune [Range:$0-$F]\r
389    ----------------------------------\r
390  Usage: $E5 + finetune-value\r
391  Example: C-300E51  Set finetune to 1.\r
392  Use these tables to figure out the\r
393  finetune-value.\r
394  Finetune: +7 +6 +5 +4 +3 +2 +1  0\r
395     Value:  7  6  5  4  3  2  1  0\r
396  Finetune: -1 -2 -3 -4 -5 -6 -7 -8\r
397     Value:  F  E  D  C  B  A  9  8\r
398  \r
399  \r
400    Cmd E6. PatternLoop [Loops:$0-$F]\r
401    ----------------------------------\r
402  Usage: $E6 + number of loops\r
403  This command will loop a part of a\r
404  pattern.\r
405  Example: C-300E60  Set loopstart.\r
406           C-300E63  Jump to loop 3\r
407            times before playing on.\r
408  \r
409  \r
410       Cmd E7. Set tremolo waveform\r
411       [Range:$0-$3]\r
412       ----------------------------\r
413  Usage: $E7 + tremolo-waveform\r
414  Example: C-300E70  Set sine(default)\r
415                E74  Don't retrig WF\r
416           C-300E71  Set Ramp Down\r
417                E75  Don't retrig WF\r
418           C-300E72  Set Squarewave\r
419                E76  Don't retrig WF\r
420           C-300E73  Set Random\r
421                E77  Don't retrig WF\r
422  \r
423  \r
424     Cmd E9. Retrig note [Value:$0-$F]\r
425     ---------------------------------\r
426  Usage: $E9 + Tick to Retrig note at.\r
427  This command will retrig the same note\r
428  before playing the next. Where to\r
429  retrig depends on the speed of the\r
430  song. If you retrig with 1 in speed 6\r
431  that note will be trigged 6 times in\r
432  one note slot. Retrig on hi-hats!\r
433  Example: C-300F06  Set speed to 6.\r
434           C-300E93  Retrig at tick 3\r
435                     out of 6.\r
436  \r
437  \r
438    Cmd EA. FineVolsl up [Range:$0-$F]\r
439    ----------------------------------\r
440  Usage: $EA + value\r
441  This command works just like the\r
442  normal volumeslide up, except that\r
443  it only slides up once. It does not\r
444  continue sliding during the length of\r
445  the note.\r
446  Example: C-300EA3  Slide volume up 1\r
447         at the beginning of the note.\r
448  \r
449  \r
450   Cmd EB. FineVolsl down [Range:$0-$F]\r
451   ------------------------------------\r
452  Usage: $EB + value\r
453  This command works just like the\r
454  normal volumeslide down, except that\r
455  it only slides down once. It does not\r
456  continue sliding during the length of\r
457  the note.\r
458  Example: C-300EB6  Slide volume down\r
459        6 at the beginning of the note.\r
460  \r
461  \r
462      Cmd EC. Cut note [Value:$0-$F]\r
463      ------------------------------\r
464  Usage: $EC + Tick to Cut note at.\r
465  This command will cut the note\r
466  at the selected tick, creating\r
467  extremely short notes.\r
468  Example: C-300F06  Set speed to 6.\r
469           C-300EC3  Cut at tick 3 out\r
470                     of 6.\r
471  Note that the note is not really cut,\r
472  the volume is just turned down.\r
473  \r
474  \r
475      Cmd ED. NoteDelay [Value:$0-$F]\r
476      -------------------------------\r
477  Usage: $ED + ticks to delay note.\r
478  This command will delay the note\r
479  to the selected tick.\r
480  Example: C-300F06  Set speed to 6.\r
481           C-300ED3  Play note at tick\r
482                     3 out of 6.\r
483  \r
484  \r
485    Cmd EE. PatternDelay [Notes:$0-$F]\r
486    ----------------------------------\r
487  Usage: $EE + notes to delay pattern.\r
488  This command will delay the pattern\r
489  the selected numbers of notes.\r
490  Example: C-300EE8  Delay pattern 8\r
491            notes before playing on.\r
492  All other effects are still active\r
493  when the pattern is being delayed.\r
494  \r
495  \r
496     Cmd EF. Invert Loop [Speed:$0-$F]\r
497     ---------------------------------\r
498  Usage: $EF + Invertspeed\r
499  This command will need a short loop\r
500  ($10,20,40,80 etc. bytes) to work.\r
501  It will invert the loop byte by byte.\r
502  Sounds better than funkrepeat...\r
503  Example: C-300EF8 Set invspeed to 8.\r
504  To turn off the inverting, set \r
505  invspeed to 0, or press ctrl + Z.\r
506  \r
507  \r
508     Cmd F. Set speed [Speed:$00-$FF]\r
509     --------------------------------\r
510  Usage: $F + speed\r
511  This command will set the speed of the\r
512  song.  \r
513 \r
514 \r
515 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\r
516 ³ Annotation by Mark Feldman (u914097@student.canberra.edu.au ³\r
517 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\r
518 \r
519 The 6 and 8 channel mod files differ from the normal mods in two ways:\r
520 \r
521 1) The signature string "M.K." at offset 1080 is either "6CHN" or "8CHN".\r
522 2) The pattern data table starting at offset 1084 stores 6 or 8 notes for\r
523    each pattern position position.\r