ProtrackerCommands: Difference between revisions

From AtariForumWiki
Jump to navigation Jump to search
>Muguk
No edit summary
 
>Wongck
No edit summary
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Protracker 1.1B Song/Module Format:
==EFFECT COMMANDS==
           
Offset  Bytes  Description
Effect commands on Protracker should be compatible with all other trackers.
  0    20    Songname. Remember to put trailing null bytes at the end...
Information for sample 1-31:
Offset  Bytes  Description
  20    22    Samplename for sample 1. Pad with null bytes.
  42      2    Samplelength for sample 1. Stored as number of words.
              Multiply by two to get real sample length in bytes.
  44      1    Lower four bits are the finetune value, stored as a signed
              four bit number. The upper four bits are not used, and
              should be set to zero.
              Value:  Finetune:
                0        0
                1      +1
                2      +2
                3      +3
                4      +4
                5      +5
                6      +6
                7      +7
                8      -8
                9      -7
                A      -6
                B      -5
                C      -4
                D      -3
                E      -2
                F      -1
  45      1    Volume for sample 1. Range is $00-$40, or 0-64 decimal.
  46      2    Repeat point for sample 1. Stored as number of words offset
              from start of sample. Multiply by two to get offset in bytes.
  48      2    Repeat Length for sample 1. Stored as number of words in
              loop. Multiply by two to get replen in bytes.
Information for the next 30 samples starts here. It's just like the info for
sample 1.
Offset  Bytes  Description
  50    30    Sample 2...
  80    30    Sample 3...
  .
  .
  .
890    30    Sample 30...
920    30    Sample 31...
 
Offset  Bytes  Description
950      1    Songlength. Range is 1-128.
951      1    Well... this little byte here is set to 127, so that old
              trackers will search through all patterns when loading.
              Noisetracker uses this byte for restart, but we don't.
952    128    Song positions 0-127. Each hold a number from 0-63 that
              tells the tracker what pattern to play at that position.
1080      4    The four letters "M.K." - This is something Mahoney & Kaktus
              inserted when they increased the number of samples from
              15 to 31. If it's not there, the module/song uses 15 samples
              or the text has been removed to make the module harder to
              rip. Startrekker puts "FLT4" or "FLT8" there instead.
 
Offset  Bytes  Description
1084    1024  Data for pattern 00.
  .
  .
  .
xxxx  Number of patterns stored is equal to the highest patternnumber
      in the song position table (at offset 952-1079).
 
Each note is stored as 4 bytes, and all four notes at each position in
the pattern are stored after each other.
 
00 -  chan1  chan2  chan3  chan4
01 -  chan1  chan2  chan3  chan4
02 -  chan1  chan2  chan3  chan4
etc.
 
Info for each note:
 
_____byte 1_____  byte2_    _____byte 3_____  byte4_
/                /        /                /
0000          0000-00000000  0000          0000-00000000
 
Upper four    12 bits for    Lower four    Effect command.
bits of sam-  note period.  bits of sam-
ple number.                  ple number.
 
Periodtable for Tuning 0, Normal
  C-1 to B-1 : 856,808,762,720,678,640,604,570,538,508,480,453
  C-2 to B-2 : 428,404,381,360,339,320,302,285,269,254,240,226
  C-3 to B-3 : 214,202,190,180,170,160,151,143,135,127,120,113
 
To determine what note to show, scan through the table until you find
the same period as the one stored in byte 1-2. Use the index to look
up in a notenames table.
 
This is the data stored in a normal song. A packed song starts with the
four letters "PACK", but i don't know how the song is packed: You can
get the source code for the cruncher/decruncher from us if you need it,
but I don't understand it; I've just ripped it from another tracker...
In a module, all the samples are stored right after the patterndata.
To determine where a sample starts and stops, you use the sampleinfo
structures in the beginning of the file (from offset 20). Take a look
at the mt_init routine in the playroutine, and you'll see just how it
is done.
Lars "ZAP" Hamre/Amiga Freelancers
--------------------------
Found that document...
Mark J Cox ------------------------------------------- m.j.h.cox@bradford.ac.uk
University of Bradford ---------------------------- bc732@cleveland.freenet.edu
Mark
            EFFECT COMMANDS
            ---------------
Effect commands on protracker should
be compatible with all other trackers.
  0 - None/Arpeggio    8 - * NOT USED *
  0 - None/Arpeggio    8 - * NOT USED *
  1 - Portamento Up    9 - SampleOffset
  1 - Portamento Up    9 - SampleOffset
Line 132: Line 12:
   
   
   
   
              E - COMMANDS
==E - COMMANDS==
              ------------
The E command has been altered to contain more commands than one.
The E command has been altered to
contain more commands than one.
  E0- Filter On/Off    E8- * NOT USED *
  E0- Filter On/Off    E8- * NOT USED *
  E1- Fineslide Up      E9- Retrig Note
  E1- Fineslide Up      E9- Retrig Note
Line 146: Line 24:
   
   
   
   
  Cmd 0. Arpeggio [Range:$0-$F/$0-$F]
===Cmd 0. Arpeggio [Range:$0-$F/$0-$F]===
  -----------------------------------
  Usage: $0 + 1st halfnote add
  Usage: $0 + 1st halfnote add
           + 2nd halfnote add
           + 2nd halfnote add
Arpeggio is used to simulate chords.
 
This is done by rapidly changing the
Arpeggio is used to simulate chords.
pitch between 3(or 2) different notes.
 
It sounds very noisy and grainy on
This is done by rapidly changing the pitch between 3(or 2) different notes. It sounds very noisy and grainy on most samples, but ok on monotone ones.
most samples, but ok on monotone ones.
 
  Example: C-300047  C-major chord:
  Example: C-300047  C-major chord:
           (C+E+G  or C+4+7 halfnotes)
           (C+E+G  or C+4+7 halfnotes)
Line 161: Line 38:
   
   
   
   
  Cmd 1. Portamento up [Speed:$00-$FF]
===Cmd 1. Portamento up [Speed:$00-$FF]===
  ------------------------------------
  Usage: $1 + portamento speed
  Usage: $1 + portamento speed
Portamento up will simply slide the
 
sample pitch up. You can NOT slide
Portamento up will simply slide the sample pitch up. You can NOT slide higher than B-3! (Period 113)
higher than B-3! (Period 113)
 
  Example: C-300103  1 is the command,
  Example: C-300103  1 is the command, 3 is the portamentospeed.
            3 is the portamentospeed.
 
NOTE: The portamento will be called as
NOTE: The portamento will be called as many times as the speed of the song.  This means that you'll sometimes have trouble sliding accuratly. If you change the speed without changing the sliderates, it will sound bad...
many times as the speed of the song.
  This means that you'll sometimes have
trouble sliding accuratly. If you
change the speed without changing the
sliderates, it will sound bad...
   
   
   
   
  Cmd 2. Portamento down [Speed:$00-FF]
===Cmd 2. Portamento down [Speed:$00-FF]===
  -------------------------------------
  Usage: $2 + portamento speed
  Usage: $2 + portamento speed
Just like command 1, except that this
 
one slides the pitch down instead.
Just like command 1, except that this one slides the pitch down instead. (Adds to the period).
(Adds to the period).
 
You can NOT slide lower than C-1!
You can NOT slide lower than C-1! (Period 856)
(Period 856)
 
  Example: C-300203  2 is the command,
  Example: C-300203  2 is the command, 3 is the portamentospeed.
            3 is the portamentospeed.
   
   
   
   
Cmd 3. Tone-portamento [Speed:$00-$FF]
===Cmd 3. Tone-portamento [Speed:$00-$FF]===
--------------------------------------
  Usage: Dest-note + $3 + slidespeed
  Usage: Dest-note + $3 + slidespeed
This command will automatically slide
 
from the old note to the new.
This command will automatically slide from the old note to the new.
You don't have to worry about which
 
direction to slide, you need only set
You don't have to worry about which direction to slide, you need only set the slide speed. To keep on sliding, just select the command $3 + 00.
the slide speed. To keep on sliding,
 
just select the command $3 + 00.
  Example: A-200000  First play a note.
  Example: A-200000  First play a note.
           C-300305  C-3 is the note to
           C-300305  C-3 is the note to
Line 204: Line 71:
   
   
   
   
Cmd 4. Vibrato [Rate:$0-$F,Dpth:$0-$F]
===Cmd 4. Vibrato [Rate:$0-$F,Dpth:$0-$F]===
--------------------------------------
  Usage: $4 + vibratorate + vibratodepth
  Usage: $4 + vibratorate + vibratodepth
  Example: C-300481  4 is the command,
 
      8 is the speed of the vibrato,
  Example: C-300481  4 is the command, 8 is the speed of the vibrato and 1 is the depth of the vibrato.
  and 1 is the depth of the vibrato.
 
To keep on vibrating, just select
To keep on vibrating, just select the command $4 + 00. To change the vibrato, you can alter the rate, depth or both. Use command E4- to change the vibrato-waveform.
the command $4 + 00. To change the
vibrato, you can alter the rate,
depth or both. Use command E4- to
change the vibrato-waveform.
   
   
   
   
Cmd 5. ToneP + Volsl [Spd:$0-$F/$0-$F]
===Cmd 5. ToneP + Volsl [Spd:$0-$F/$0-$F]===
--------------------------------------
  Usage: $5 + upspeed + downspeed
  Usage: $5 + upspeed + downspeed
This command will continue the current
 
toneportamento and slide the volume
This command will continue the current toneportamento and slide the volume at the same time. Stolen from NT2.0.
at the same time. Stolen from NT2.0.
 
  Example: C-300503  3 is the speed to
  Example: C-300503  3 is the speed to turn the volume down.
                turn the volume down.
           C-300540  4 is the speed to slide it up.
           C-300540  4 is the speed to
                        slide it up.
   
   
 
Cmd 6. Vibra + Volsl [Spd:$0-$F/$0-$F]
===Cmd 6. Vibra + Volsl [Spd:$0-$F/$0-$F]===
--------------------------------------
  Usage: $6 + upspeed + downspeed
  Usage: $6 + upspeed + downspeed
This command will continue the current
 
vibrato and slide the volume at the
This command will continue the current vibrato and slide the volume at the same time. Stolen from NT2.0.
same time. Stolen from NT2.0.
 
  Example: C-300605  5 is the speed to
  Example: C-300605  5 is the speed to turn the volume down.
                turn the volume down.
           C-300640  4 is the speed to slide it up.
           C-300640  4 is the speed to
                        slide it up.
   
   
   
   
Cmd 7. Tremolo [Rate:$0-$F,Dpth:$0-$F]
===Cmd 7. Tremolo [Rate:$0-$F,Dpth:$0-$F]===
--------------------------------------
  Usage: $7 + tremolorate + tremolodepth
  Usage: $7 + tremolorate + tremolodepth
Tremolo vibrates the volume.
 
  Example: C-300794  7 is the command,
Tremolo vibrates the volume.
      9 is the speed of the tremolo,
 
  and 4 is the depth of the tremolo.
  Example: C-300794  7 is the command, 9 is the speed of the tremolo and 4 is the depth of the tremolo.
To keep on tremoling, just select
 
the command $7 + 00. To change the
To keep on tremoling, just select the command $7 + 00. To change the tremolo, you can alter the rate, depth or both. Use command E7- to change the tremolo-waveform.
tremolo, you can alter the rate,
depth or both. Use command E7- to
change the tremolo-waveform.
   
   
   
   
Cmd 9. Set SampleOffset [Offs:$00-$FF]
===Cmd 9. Set SampleOffset [Offs:$00-$FF]===
--------------------------------------
  Usage: $9 + Sampleoffset
  Usage: $9 + Sampleoffset
This command will play from a chosen
 
position in the sample, and not from
This command will play from a chosen position in the sample, and not from the beginning. The two numbers equal the two first numbers in the length of the sample. Handy for speech-samples.
the beginning. The two numbers equal
 
the two first numbers in the length
  Example: C-300923  Play sample from offset $2300.
of the sample. Handy for speech-
samples.
  Example: C-300923  Play sample from
                    offset $2300.
   
   
   
   
Cmd A. Volumeslide [Speed:$0-$F/$0-$F]
===Cmd A. Volumeslide [Speed:$0-$F/$0-$F]===
--------------------------------------
  Usage: $A + upspeed + downspeed
  Usage: $A + upspeed + downspeed
  Example: C-300A05  5 is the speed to
 
                turn the volume down.
  Example: C-300A05  5 is the speed to turn the volume down.
           C-300A40  4 is the speed to
           C-300A40  4 is the speed to slide it up.
                        slide it up.
 
NOTE: The slide will be called as
NOTE: The slide will be called as many times as the speed of the song. The slower the song, the more the volume will be changed on each note.
many times as the speed of the song.
The slower the song, the more the
volume will be changed on each note.
   
   
   
   
  Cmd B. Position-jump [Pos:$00-$7F]
===Cmd B. Position-jump [Pos:$00-$7F]===
  ----------------------------------
  Usage: $B + position to continue at
  Usage: $B + position to continue at
  Example: C-300B01  B is the command,
 
                1 is the position to
  Example: C-300B01  B is the command, 1 is the position to restart the song at.
                restart the song at.
 
This command will also perform a
This command will also perform a pattern-break (see below). You can use this command instead of restart as on noisetracker, but you must enter the position in hex!
pattern-break (see 2 pages below).
You can use this command instead of
restart as on noisetracker, but you  
must enter the position in hex!
   
   
   
   
  Cmd C. Set volume [Volume:$00-$40]
===Cmd C. Set volume [Volume:$00-$40]===
  ----------------------------------
  Usage: $C + new volume
  Usage: $C + new volume
Well, this old familiar command will
 
set the current volume to your own
Well, this old familiar command will set the current volume to your own selected. The highest volume is $40.  All volumes are represented in hex. (Programmers do it in hex, you know!)
selected. The highest volume is $40.
 
  All volumes are represented in hex.
  Example: C-300C10  C is the command, 10 is the volume (16 decimal).
(Programmers do it in hex, you know!)
  Example: C-300C10  C is the command,
      10 is the volume (16 decimal).
   
   
   
   
      Cmd D. Pattern-break
===Cmd D. Pattern-break [Pattern-pos:00-63, decimal]===
      [Pattern-pos:00-63, decimal]
      ----------------------------
  Usage: $D + pattern-position
  Usage: $D + pattern-position
This command just jumps to the next
 
song-position, and continues play
This command just jumps to the next song-position, and continues play from the pattern-position you specify.
from the patternposition you specify.
 
  Example: C-300D00  Jump to the next
  Example: C-300D00  Jump to the next song-position and continue play from pattern-position 00.
    song-position and continue play
       Or: C-300D32  Jump to the next song-position and continue play from pattern-position 32 instead.
            from patternposition 00.
       Or: C-300D32  Jump to the next
    song-position and continue play
    from patternposition 32 instead.
   
   
   
   
    Cmd E0. Set filter [Range:$0-$1]
===Cmd E0. Set filter [Range:$0-$1]===
    --------------------------------
  Usage: $E0 + filter-status
  Usage: $E0 + filter-status
This command jerks around with the
 
sound-filter on some A500 + A2000.
This command jerks around with the sound-filter on some A500 + A2000.
All other Amiga-users should keep out
 
of playing around with it.
All other Amiga-users should keep out of playing around with it.
 
  Example: C-300E01  disconnects filter
  Example: C-300E01  disconnects filter
                 (turns power LED off)
                 (turns power LED off)
           C-300E00  connects filter
           C-300E00  connects filter
                   (turns power LED on)
                   (turns power LED on)
   
   
   
   
  Cmd E1. Fineslide up [Range:$0-$F]
===Cmd E1. Fineslide up [Range:$0-$F]===
  ----------------------------------
  Usage: $E1 + value
  Usage: $E1 + value
This command works just like the
 
normal portamento up, except that
This command works just like the normal portamento up, except that it only slides up once. It does not continue sliding during the length of the note.
it only slides up once. It does not
 
continue sliding during the length of
  Example: C-300E11  Slide up 1 at the beginning of the note. (Great for creating chorus effects)
the note.
  Example: C-300E11  Slide up 1 at the
              beginning of the note.
(Great for creating chorus effects)
   
   
   
   
  Cmd E2. Fineslide down [Range:$0-$F]
===Cmd E2. Fineslide down [Range:$0-$F]===
  ------------------------------------
  Usage: $E2 + value
  Usage: $E2 + value
This command works just like the
 
normal portamento down, except that
This command works just like the normal portamento down, except that it only slides down once. It does not continue sliding during the length of the note.
it only slides down once. It does not
 
continue sliding during the length of
the note.
  Example: C-300E26  Slide up 6 at the
  Example: C-300E26  Slide up 6 at the
               beginning of the note.
               beginning of the note.
   
   
   
   
  Cmd E3. Glissando Ctrl [Range:$0-$1]
===Cmd E3. Glissando Ctrl [Range:$0-$1]===
  ------------------------------------
  Usage: $E3 + Glissando-Status
  Usage: $E3 + Glissando-Status
Glissando must be used with the tone-
 
portamento command. When glissando is
Glissando must be used with the tone-portamento command. When glissando is activated, toneportamento will slide a halfnote at a time, instead of a straight slide.
activated, toneportamento will slide
 
a halfnote at a time, instead of a
straight slide.
  Example: C-300E31  Turn Glissando on.
  Example: C-300E31  Turn Glissando on.
           C-300E30  Turn Glissando off.
           C-300E30  Turn Glissando off.
   
   
   
   
      Cmd E4. Set vibrato waveform
===Cmd E4. Set vibrato waveform [Range:$0-$3]===
      [Range:$0-$3]
      ----------------------------
  Usage: $E4 + vibrato-waveform
  Usage: $E4 + vibrato-waveform
  Example: C-300E40  Set sine(default)
  Example: C-300E40  Set sine(default)
               E44  Don't retrig WF
               E44  Don't retrig WF
Line 385: Line 202:
   
   
   
   
  Cmd E5. Set finetune [Range:$0-$F]
===Cmd E5. Set finetune [Range:$0-$F]===
  ----------------------------------
  Usage: $E5 + finetune-value
  Usage: $E5 + finetune-value
  Example: C-300E51  Set finetune to 1.
  Example: C-300E51  Set finetune to 1.
Use these tables to figure out the
 
finetune-value.
Use these tables to figure out the finetune-value.
 
  Finetune: +7 +6 +5 +4 +3 +2 +1  0
  Finetune: +7 +6 +5 +4 +3 +2 +1  0
     Value:  7  6  5  4  3  2  1  0
     Value:  7  6  5  4  3  2  1  0
Line 397: Line 215:
   
   
   
   
  Cmd E6. PatternLoop [Loops:$0-$F]
===Cmd E6. PatternLoop [Loops:$0-$F]===
  ----------------------------------
  Usage: $E6 + number of loops
  Usage: $E6 + number of loops
This command will loop a part of a
 
pattern.
This command will loop a part of a pattern.
 
  Example: C-300E60  Set loopstart.
  Example: C-300E60  Set loopstart.
           C-300E63  Jump to loop 3
           C-300E63  Jump to loop 3 times before playing on.
          times before playing on.
   
   
   
   
      Cmd E7. Set tremolo waveform
===Cmd E7. Set tremolo waveform [Range:$0-$3]===
      [Range:$0-$3]
      ----------------------------
  Usage: $E7 + tremolo-waveform
  Usage: $E7 + tremolo-waveform
  Example: C-300E70  Set sine(default)
  Example: C-300E70  Set sine(default)
               E74  Don't retrig WF
               E74  Don't retrig WF
Line 421: Line 237:
   
   
   
   
    Cmd E9. Retrig note [Value:$0-$F]
===Cmd E9. Retrig note [Value:$0-$F]===
    ---------------------------------
  Usage: $E9 + Tick to Retrig note at.
  Usage: $E9 + Tick to Retrig note at.
This command will retrig the same note
 
before playing the next. Where to
This command will retrig the same note before playing the next. Where to retrig depends on the speed of the song. If you retrig with 1 in speed 6 that note will be trigged 6 times in one note slot. Retrig on hi-hats!
retrig depends on the speed of the
 
song. If you retrig with 1 in speed 6
that note will be trigged 6 times in
one note slot. Retrig on hi-hats!
  Example: C-300F06  Set speed to 6.
  Example: C-300F06  Set speed to 6.
           C-300E93  Retrig at tick 3
           C-300E93  Retrig at tick 3 out of 6.
                    out of 6.
   
   
   
   
  Cmd EA. FineVolsl up [Range:$0-$F]
===Cmd EA. FineVolsl up [Range:$0-$F]===
  ----------------------------------
  Usage: $EA + value
  Usage: $EA + value
This command works just like the
 
normal volumeslide up, except that
This command works just like the normal volume slide up, except that it only slides up once. It does not continue sliding during the length of the note.
it only slides up once. It does not
 
continue sliding during the length of
  Example: C-300EA3  Slide volume up 1 at the beginning of the note.
the note.
  Example: C-300EA3  Slide volume up 1
        at the beginning of the note.
   
   
   
   
  Cmd EB. FineVolsl down [Range:$0-$F]
===Cmd EB. FineVolsl down [Range:$0-$F]===
  ------------------------------------
  Usage: $EB + value
  Usage: $EB + value
This command works just like the
 
normal volumeslide down, except that
This command works just like the normal volume slide down, except that it only slides down once. It does not continue sliding during the length of the note.
it only slides down once. It does not
 
continue sliding during the length of
  Example: C-300EB6  Slide volume down 6 at the beginning of the note.
the note.
  Example: C-300EB6  Slide volume down
      6 at the beginning of the note.
   
   
   
   
    Cmd EC. Cut note [Value:$0-$F]
===Cmd EC. Cut note [Value:$0-$F]===
    ------------------------------
  Usage: $EC + Tick to Cut note at.
  Usage: $EC + Tick to Cut note at.
This command will cut the note
 
at the selected tick, creating
This command will cut the note at the selected tick, creating extremely short notes.
extremely short notes.
 
  Example: C-300F06  Set speed to 6.
  Example: C-300F06  Set speed to 6.
           C-300EC3  Cut at tick 3 out
           C-300EC3  Cut at tick 3 out of 6.
                    of 6.
 
Note that the note is not really cut,
Note that the note is not really cut, the volume is just turned down.
the volume is just turned down.
   
   
   
   
    Cmd ED. NoteDelay [Value:$0-$F]
===Cmd ED. NoteDelay [Value:$0-$F]===
    -------------------------------
  Usage: $ED + ticks to delay note.
  Usage: $ED + ticks to delay note.
This command will delay the note
 
to the selected tick.
This command will delay the note to the selected tick.
 
  Example: C-300F06  Set speed to 6.
  Example: C-300F06  Set speed to 6.
           C-300ED3  Play note at tick
           C-300ED3  Play note at tick 3 out of 6.
                    3 out of 6.
   
   
   
   
  Cmd EE. PatternDelay [Notes:$0-$F]
===Cmd EE. PatternDelay [Notes:$0-$F]===
  ----------------------------------
  Usage: $EE + notes to delay pattern.
  Usage: $EE + notes to delay pattern.
This command will delay the pattern
 
the selected numbers of notes.
This command will delay the pattern the selected numbers of notes.
  Example: C-300EE8  Delay pattern 8
 
          notes before playing on.
  Example: C-300EE8  Delay pattern 8 notes before playing on.
All other effects are still active
 
when the pattern is being delayed.
All other effects are still active when the pattern is being delayed.
   
   
   
   
    Cmd EF. Invert Loop [Speed:$0-$F]
===Cmd EF. Invert Loop [Speed:$0-$F]===
    ---------------------------------
  Usage: $EF + Invertspeed
  Usage: $EF + Invertspeed
This command will need a short loop
 
($10,20,40,80 etc. bytes) to work.
This command will need a short loop ($10,20,40,80 etc. bytes) to work.  It will invert the loop byte by byte.  Sounds better than funkrepeat...  
  It will invert the loop byte by byte.
  Sounds better than funkrepeat...
Example: C-300EF8 Set invspeed to 8.
To turn off the inverting, set
invspeed to 0, or press ctrl + Z.
   
   
Example: C-300EF8 Set invspeed to 8. To turn off the inverting, set invspeed to 0, or press ctrl + Z.
   
   
    Cmd F. Set speed [Speed:$00-$FF]
    --------------------------------
===Cmd F. Set speed [Speed:$00-$FF]===
  Usage: $F + speed
  Usage: $F + speed
This command will set the speed of the
song. 


This command will set the speed of the song. 


�����������������������������������������������������������������������������
 
� Annotation by Mark Feldman (u914097@student.canberra.edu.au �
Annotation by Mark Feldman (u914097@student.canberra.edu.au
���������������������������������������������������������������


The 6 and 8 channel mod files differ from the normal mods in two ways:
The 6 and 8 channel mod files differ from the normal mods in two ways:


1) The signature string "M.K." at offset 1080 is either "6CHN" or "8CHN".
# The signature string "M.K." at offset 1080 is either "6CHN" or "8CHN".
2) The pattern data table starting at offset 1084 stores 6 or 8 notes for
#The pattern data table starting at offset 1084 stores 6 or 8 notes for each pattern position position.
  each pattern position position.
 
<br>
<br>
Back to [[Music]]
<br>
<br>
 
[[Category: Atari ST software]]
[[Category:Music]]

Latest revision as of 11:52, 1 January 2013

EFFECT COMMANDS

Effect commands on Protracker should be compatible with all other trackers.

0 - None/Arpeggio     8 - * NOT USED *
1 - Portamento Up     9 - SampleOffset
2 - Portamento Down   A - VolumeSlide
3 - TonePortamento    B - PositionJump
4 - Vibrato           C - Set Volume
5 - ToneP + VolSlide  D - PatternBreak
6 - Vibra + VolSlide  E - Misc. Cmds
7 - Tremolo           F - Set Speed


E - COMMANDS

The E command has been altered to contain more commands than one.

E0- Filter On/Off     E8- * NOT USED *
E1- Fineslide Up      E9- Retrig Note
E2- Fineslide Down    EA- FineVol Up
E3- Glissando Control EB- FineVol Down
E4- Vibrato Control   EC- NoteCut
E5- Set Finetune      ED- NoteDelay
E6- Patternloop       EE- PatternDelay
E7- Tremolo Control   EF- Invert Loop


Cmd 0. Arpeggio [Range:$0-$F/$0-$F]

Usage: $0 + 1st halfnote add
          + 2nd halfnote add

Arpeggio is used to simulate chords.

This is done by rapidly changing the pitch between 3(or 2) different notes. It sounds very noisy and grainy on most samples, but ok on monotone ones.

Example: C-300047  C-major chord:
         (C+E+G  or C+4+7 halfnotes)
         C-300037  C-minor chord:
         (C+D#+G or C+3+7 halfnotes)


Cmd 1. Portamento up [Speed:$00-$FF]

Usage: $1 + portamento speed

Portamento up will simply slide the sample pitch up. You can NOT slide higher than B-3! (Period 113)

Example: C-300103  1 is the command, 3 is the portamentospeed.

NOTE: The portamento will be called as many times as the speed of the song. This means that you'll sometimes have trouble sliding accuratly. If you change the speed without changing the sliderates, it will sound bad...


Cmd 2. Portamento down [Speed:$00-FF]

Usage: $2 + portamento speed

Just like command 1, except that this one slides the pitch down instead. (Adds to the period).

You can NOT slide lower than C-1! (Period 856)

Example: C-300203  2 is the command, 3 is the portamentospeed.


Cmd 3. Tone-portamento [Speed:$00-$FF]

Usage: Dest-note + $3 + slidespeed

This command will automatically slide from the old note to the new.

You don't have to worry about which direction to slide, you need only set the slide speed. To keep on sliding, just select the command $3 + 00.

Example: A-200000  First play a note.
         C-300305  C-3 is the note to
              slide to, 3 the command,
              and 5 the speed.


Cmd 4. Vibrato [Rate:$0-$F,Dpth:$0-$F]

Usage: $4 + vibratorate + vibratodepth
Example: C-300481  4 is the command, 8 is the speed of the vibrato and 1 is the depth of the vibrato.

To keep on vibrating, just select the command $4 + 00. To change the vibrato, you can alter the rate, depth or both. Use command E4- to change the vibrato-waveform.


Cmd 5. ToneP + Volsl [Spd:$0-$F/$0-$F]

Usage: $5 + upspeed + downspeed

This command will continue the current toneportamento and slide the volume at the same time. Stolen from NT2.0.

Example: C-300503  3 is the speed to turn the volume down.
         C-300540  4 is the speed to slide it up.

Cmd 6. Vibra + Volsl [Spd:$0-$F/$0-$F]

Usage: $6 + upspeed + downspeed

This command will continue the current vibrato and slide the volume at the same time. Stolen from NT2.0.

Example: C-300605  5 is the speed to turn the volume down.
         C-300640  4 is the speed to slide it up.


Cmd 7. Tremolo [Rate:$0-$F,Dpth:$0-$F]

Usage: $7 + tremolorate + tremolodepth

Tremolo vibrates the volume.

Example: C-300794  7 is the command, 9 is the speed of the tremolo and 4 is the depth of the tremolo.

To keep on tremoling, just select the command $7 + 00. To change the tremolo, you can alter the rate, depth or both. Use command E7- to change the tremolo-waveform.


Cmd 9. Set SampleOffset [Offs:$00-$FF]

Usage: $9 + Sampleoffset

This command will play from a chosen position in the sample, and not from the beginning. The two numbers equal the two first numbers in the length of the sample. Handy for speech-samples.

Example: C-300923  Play sample from offset $2300.


Cmd A. Volumeslide [Speed:$0-$F/$0-$F]

Usage: $A + upspeed + downspeed
Example: C-300A05  5 is the speed to turn the volume down.
         C-300A40  4 is the speed to slide it up.

NOTE: The slide will be called as many times as the speed of the song. The slower the song, the more the volume will be changed on each note.


Cmd B. Position-jump [Pos:$00-$7F]

Usage: $B + position to continue at
Example: C-300B01  B is the command, 1 is the position to restart the song at.

This command will also perform a pattern-break (see below). You can use this command instead of restart as on noisetracker, but you must enter the position in hex!


Cmd C. Set volume [Volume:$00-$40]

Usage: $C + new volume

Well, this old familiar command will set the current volume to your own selected. The highest volume is $40. All volumes are represented in hex. (Programmers do it in hex, you know!)

Example: C-300C10  C is the command, 10 is the volume (16 decimal).


Cmd D. Pattern-break [Pattern-pos:00-63, decimal]

Usage: $D + pattern-position

This command just jumps to the next song-position, and continues play from the pattern-position you specify.

Example: C-300D00  Jump to the next song-position and continue play from pattern-position 00.
     Or: C-300D32  Jump to the next song-position and continue play from pattern-position 32 instead.


Cmd E0. Set filter [Range:$0-$1]

Usage: $E0 + filter-status

This command jerks around with the sound-filter on some A500 + A2000.

All other Amiga-users should keep out of playing around with it.

Example: C-300E01  disconnects filter
                (turns power LED off)
         C-300E00  connects filter
                 (turns power LED on)


Cmd E1. Fineslide up [Range:$0-$F]

Usage: $E1 + value

This command works just like the normal portamento up, except that it only slides up once. It does not continue sliding during the length of the note.

Example: C-300E11  Slide up 1 at the beginning of the note. (Great for creating chorus effects)


Cmd E2. Fineslide down [Range:$0-$F]

Usage: $E2 + value

This command works just like the normal portamento down, except that it only slides down once. It does not continue sliding during the length of the note.

Example: C-300E26  Slide up 6 at the
              beginning of the note.


Cmd E3. Glissando Ctrl [Range:$0-$1]

Usage: $E3 + Glissando-Status

Glissando must be used with the tone-portamento command. When glissando is activated, toneportamento will slide a halfnote at a time, instead of a straight slide.

Example: C-300E31  Turn Glissando on.
         C-300E30  Turn Glissando off.


Cmd E4. Set vibrato waveform [Range:$0-$3]

Usage: $E4 + vibrato-waveform
Example: C-300E40  Set sine(default)
              E44  Don't retrig WF
         C-300E41  Set Ramp Down
              E45  Don't retrig WF
         C-300E42  Set Squarewave
              E46  Don't retrig WF
         C-300E43  Set Random
              E47  Don't retrig WF


Cmd E5. Set finetune [Range:$0-$F]

Usage: $E5 + finetune-value
Example: C-300E51  Set finetune to 1.

Use these tables to figure out the finetune-value.

Finetune: +7 +6 +5 +4 +3 +2 +1  0
   Value:  7  6  5  4  3  2  1  0
Finetune: -1 -2 -3 -4 -5 -6 -7 -8
   Value:  F  E  D  C  B  A  9  8


Cmd E6. PatternLoop [Loops:$0-$F]

Usage: $E6 + number of loops

This command will loop a part of a pattern.

Example: C-300E60  Set loopstart.
         C-300E63  Jump to loop 3 times before playing on.


Cmd E7. Set tremolo waveform [Range:$0-$3]

Usage: $E7 + tremolo-waveform
Example: C-300E70  Set sine(default)
              E74  Don't retrig WF
         C-300E71  Set Ramp Down
              E75  Don't retrig WF
         C-300E72  Set Squarewave
              E76  Don't retrig WF
         C-300E73  Set Random
              E77  Don't retrig WF


Cmd E9. Retrig note [Value:$0-$F]

Usage: $E9 + Tick to Retrig note at.

This command will retrig the same note before playing the next. Where to retrig depends on the speed of the song. If you retrig with 1 in speed 6 that note will be trigged 6 times in one note slot. Retrig on hi-hats!

Example: C-300F06  Set speed to 6.
         C-300E93  Retrig at tick 3 out of 6.


Cmd EA. FineVolsl up [Range:$0-$F]

Usage: $EA + value

This command works just like the normal volume slide up, except that it only slides up once. It does not continue sliding during the length of the note.

Example: C-300EA3  Slide volume up 1 at the beginning of the note.


Cmd EB. FineVolsl down [Range:$0-$F]

Usage: $EB + value

This command works just like the normal volume slide down, except that it only slides down once. It does not continue sliding during the length of the note.

Example: C-300EB6  Slide volume down 6 at the beginning of the note.


Cmd EC. Cut note [Value:$0-$F]

Usage: $EC + Tick to Cut note at.

This command will cut the note at the selected tick, creating extremely short notes.

Example: C-300F06  Set speed to 6.
         C-300EC3  Cut at tick 3 out of 6.

Note that the note is not really cut, the volume is just turned down.


Cmd ED. NoteDelay [Value:$0-$F]

Usage: $ED + ticks to delay note.

This command will delay the note to the selected tick.

Example: C-300F06  Set speed to 6.
         C-300ED3  Play note at tick 3 out of 6.


Cmd EE. PatternDelay [Notes:$0-$F]

Usage: $EE + notes to delay pattern.

This command will delay the pattern the selected numbers of notes.

Example: C-300EE8  Delay pattern 8 notes before playing on.

All other effects are still active when the pattern is being delayed.


Cmd EF. Invert Loop [Speed:$0-$F]

Usage: $EF + Invertspeed

This command will need a short loop ($10,20,40,80 etc. bytes) to work. It will invert the loop byte by byte. Sounds better than funkrepeat...

Example: C-300EF8 Set invspeed to 8. To turn off the inverting, set invspeed to 0, or press ctrl + Z.


Cmd F. Set speed [Speed:$00-$FF]

Usage: $F + speed

This command will set the speed of the song.


Annotation by Mark Feldman (u914097@student.canberra.edu.au

The 6 and 8 channel mod files differ from the normal mods in two ways:

  1. The signature string "M.K." at offset 1080 is either "6CHN" or "8CHN".
  2. The pattern data table starting at offset 1084 stores 6 or 8 notes for each pattern position position.



Back to Music