2 Protracker 1.1B Song/Module Format:
\r
4 Offset Bytes Description
\r
5 0 20 Songname. Remember to put trailing null bytes at the end...
\r
7 Information for sample 1-31:
\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
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
40 Information for the next 30 samples starts here. It's just like the info for
\r
43 Offset Bytes Description
\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
65 Offset Bytes Description
\r
66 1084 1024 Data for pattern 00.
\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
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
76 00 - chan1 chan2 chan3 chan4
\r
77 01 - chan1 chan2 chan3 chan4
\r
78 02 - chan1 chan2 chan3 chan4
\r
83 _____byte 1_____ byte2_ _____byte 3_____ byte4_
\r
85 0000 0000-00000000 0000 0000-00000000
\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
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
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
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
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
111 Lars "ZAP" Hamre/Amiga Freelancers
\r
113 --------------------------
\r
115 Found that document...
\r
117 Mark J Cox ------------------------------------------- m.j.h.cox@bradford.ac.uk
\r
118 University of Bradford ---------------------------- bc732@cleveland.freenet.edu
\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
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
149 Cmd 0. Arpeggio [Range:$0-$F/$0-$F]
\r
150 -----------------------------------
\r
151 Usage: $0 + 1st 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
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
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
188 Example: C-300203 2 is the command,
\r
189 3 is the portamentospeed.
\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
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
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
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
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
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
267 Example: C-300923 Play sample from
\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
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
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
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
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
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
337 Cmd E1. Fineslide up [Range:$0-$F]
\r
338 ----------------------------------
\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
345 Example: C-300E11 Slide up 1 at the
\r
346 beginning of the note.
\r
347 (Great for creating chorus effects)
\r
350 Cmd E2. Fineslide down [Range:$0-$F]
\r
351 ------------------------------------
\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
358 Example: C-300E26 Slide up 6 at the
\r
359 beginning of the note.
\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
370 Example: C-300E31 Turn Glissando on.
\r
371 C-300E30 Turn Glissando off.
\r
374 Cmd E4. Set vibrato waveform
\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
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
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
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
405 Example: C-300E60 Set loopstart.
\r
406 C-300E63 Jump to loop 3
\r
407 times before playing on.
\r
410 Cmd E7. Set tremolo waveform
\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
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
438 Cmd EA. FineVolsl up [Range:$0-$F]
\r
439 ----------------------------------
\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
446 Example: C-300EA3 Slide volume up 1
\r
447 at the beginning of the note.
\r
450 Cmd EB. FineVolsl down [Range:$0-$F]
\r
451 ------------------------------------
\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
458 Example: C-300EB6 Slide volume down
\r
459 6 at the beginning of the note.
\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
471 Note that the note is not really cut,
\r
472 the volume is just turned down.
\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
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
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
508 Cmd F. Set speed [Speed:$00-$FF]
\r
509 --------------------------------
\r
511 This command will set the speed of the
\r
515 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
\r
516 ³ Annotation by Mark Feldman (u914097@student.canberra.edu.au ³
\r
517 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
\r
519 The 6 and 8 channel mod files differ from the normal mods in two ways:
\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