Appendix B - List of effects
Here is a more complete list of effects, and their data fields that are useable inside Desktop Tracker. Those marked as Not used should not be used, as they will be allocated at a further date.
Effect 00: Arpeggio
The data byte is two nibbles, &UV. Every 50th of a second (or depending on the arpeggio speed), the note changes pitch. U is the number of semitones the note must decrease on in the second arpeggio segment, V is the number of semitones the note must decrease on in the third arpeggio segment.
|11||C 2 0D||00 37|
This plays C2 for a 50th of a second, then A1 for another 50th of a second, and finally F1 for a 50th of a second, before repeating back to C2. It is, in effect, a F major chord.
Effect 01: Portamento up
Until the next event, the pitch is shifted up by the data value every 50th of a second. If the data is 00, then this means keep the portamento the same value as the last event.
|20||C 2 1A||01 01 Pitch bend up by 1|
|21||--- --||01 00 Keep the same value (i.e. 1)|
|22||--- --||01 02 Now change to 2|
|23||--- --||01 00 And again, with the value 2.|
Effect 02: Portamento down
This is the same as Portamento up, except that the pitch is shifted down in tone.
Effect 03: Tone portamento
The pitch of the note is increased, or decreased, in order to reach the pitch of the destination note. This destination note is the actual note stored in the music, the sample field is ignored, and the data is the same as for the Portamento effects (01 and 02). If the data field is zero, then this means continue the last tone portamento.
|13||F 3 04||00 00 No effect|
|14||G 3 --||03 10 Pitch bend, until it reaches G3|
Effect 04: Vibrato
This is performs low frequency oscillation on the sound. Like the arpeggio instruction, the data is split into two nibbles, &SA. S is the speed of the vibrato, with &F being the fastest, and &0 being frozen, and A is the amplitude, with &F as the highest amplitude, and &0 means no vibrato. If the data field is zero, then this means continue the last vibrato effect
|3A||F#1 13||04 4A This is a reasonably slow, but large vibrato|
Effect 05: Delayed note on another track
This effect allows you to use one track to play a note on another track, after a certain time delay, measured in 50ths of a second. The data field is split into two nibbles again, &TD. T is the track number (from &0 to &F) of the note, and D is the time delay in 50ths of a second (from &0 to &F).
|05||D#2 01||05 24 This plays a note on track 2, after 4/50ths of a second.|
Effect 06: Play end part of a sample
This is a fairly useful command that allows release parts of samples to be played, rather than just looping them. The whole data is 21 bits in length, which is the offset from the beginning of the sample to the byte at which to start playing from. If this is the last effect of a group of four, or it is the only effect in a 1-effect event, then the data byte is the offset*256.
If it is not, then all the 21 bits are obtained from the data byte, the next effect number, and the next effect's data byte. The bottom 8 bits come from the next effect's data byte; the next 8 bits from the effect's data byte, and the top 5 bits from the next event's number.
|1D||C 3 00||06 10 Play from the &10*256 th byte &1000, (or 4096)th byte|
|20||C 3 01||06 22 Play from the &012233 th byte|
|01 33 on sample 0.|
Effect 07: Tremolo
This effect performs a low frequency oscillation on the volume of a note. It is similar to Vibrato, except the volume changes instead. A zero data field means continue the last tremolo.
Effect 08: Phasor effect #2
The current position in a sample is added by the contents of the data field.
|E5||--- --||08 10 The sample position is incremented by &10.|
Effect 09: Phasor effect #1
This is exactly the same as Phasor effect #2, except the position is incremented by the data field *256.
Effect 0A: Volume slide
Every 50th of a second, the volume is increased by the data field, which is a signed value. If the data field is zero, then it means continue the last volume slide.
|81||D 1 30||0A 01 The volume is incremented by 1 for every 50th of a second|
|B7||E 1||0A FE The volume is decremented by 2 every 50th of a second.|
Effect 0B: Position jump
The next position to play is given by the data byte.
|66||A#1 15||0B 22 Set the next position to &22 (34).|
Effect 0C: Set volume
The current volume is set from the data byte. Depending on the options, the data can be &00 to &40 for Amiga volume, or &00 to &7F for Acorn volume.
|5F||B 2 1F||0C 20 Set to half volume, if Amiga, or about 1/8th Archimedes volume.|
Effect 0D: Set stereo position
The stereo position is set to the data field, which can have the values 01 to 07, with 01 full left, 04 centre, and 07 full right.
|FE||D#2||0D 05 Set stereo position to 66% right|
Effect 0E: Stereo slide
This is another nibble, of &SD. &S is the time delay between change (in 50ths of a second), and &D is the stereo difference, which is a signed value. It is inverted if the stereo position reaches 1 or 7.
|D0||G#3||0E 61 Every 6/50ths of a second, the sound moves right, until it reaches 7, where it will go backwards.|
Effect 0F: Set speed
The speed of the music is set to the data byte, in 50ths of a second.
|76||C 1 33||0F 05 The speed is set to 5/50ths of a second.|
Effect 10: Set arpeggio speed
By default, the speed is 1, which means that the arpeggio changes every 50th of a second. This effect allows this to be changed, to whatever speed you want it.
Effect 11: Fine portamento
This is similar to portamento up and down, except that instead of the pitch being incremented every 50th of a second, it is added to once. It is a signed byte value
|4A||G#1 20||11 FE Tone is decremented by 2|
Effect 12: Clear repeat
This allows the repeat part of a sample to be ignored after a certain amount of time, in 50ths of a second.
|A9||D 1 18||12 07 In 7/50ths of a second, the repeat section is ignored.|
Effect 13: NOT USED
Reserved for future expansion.
Effect 14: Set vibrato waveform
This allows the waveform to be chosen, from a list of 4. The data byte is from &00 to &03.
Effect 15: NOT USED
Reserved for future expansion.
Effect 16: Loop
If the data field is zero, then this is the start of the loop. If it is non-zero, then it means loop (n+1) times from the event which had the last 16 00 effect, to this one.
|07||C 2 02||00 00|
|08||D 2 02||16 00 Start loop|
|09||E 2 02||00 00|
|20||F 1 02||16 02 Play the events 08 to 20, three times.|
Effect 17: Set tremolo waveform
This is exactly the same as set vibrato waveform, except the tremolo waveform is set instead.
Effect 18: Set fine tempo
By default, Desktop Tracker works in units of 1/50th of a second. Using this effect, it can be set to other values, to allow a more musically accurate speed (which is measured in beats per minute). 18 32 sets it to 1/50th of a second (&32 is 50 in decimal). Here is a table of speed and fine tempo values needed for different musical speeds:
|90 ||12 ||1 ||12.000||0.000|
|120 ||16 ||1 ||16.000||0.000|
|144 ||19 ||1 ||19.200||1.053 - See later for a more accurate|
|160 ||21 ||1 ||21.333||1.588 set of values|
|180 ||24 ||1 ||24.000||0.000|
|192 ||26 ||1 ||25.600||1.563|
|224 ||30 ||1 ||29.866||0.446 - See later|
|240 ||32 ||1 ||32.000||0.000|
|125 ||50 ||6 ||50.000||0.000 - This is the default value|
|144 ||96 ||5 ||96.000||0.000 - Changing the speed for accuracy|
|224||224||15||224.000||0.000 - Use crochet = 4 events|
Don't worry about the % error, as this is only for reference. These values are based on using 8 events per crochet, except the last one, which uses 4.
Effect 19: Retrigger sample
This continually replays a sample from the beginning every n 50ths of a second. n is the data byte.
|21||G 2 13||19 02 Every 2/50ths of a second, the sample is replayed.|
Effect 1A: Fine volume slide
This is a cross between volume slide and fine portamento. The data byte is added to the current volume once only.
Effect 1B: Hold
The sample is looped, using its sustain offset and length, until the counter is 0. The counter is set to the data byte, if the data byte is not zero, otherwise, it means continue with the last counter. The difference between sustain and repeat is that sustain loops a part of a sample for a certain amount of time, and then continues, whereas repeat just loops the sample continuously.
|03||A#3 11||1B 20 Plays the sustained part &20 times before continuing.|
Effect 1C: Note cut
The note is turned off after a certain amount of time.
Effect 1D: Note delay
The note is not played immediately; it is played after a certain amount of time on the current track.
|BD||D#2 22||1D 02 The note is played after 2/50ths of a second.|
Effect 1E: Pattern delay
The next pattern will be played after data byte *speed *1/50ths of a second after the end of the current pattern.
For example (speed =6):
|C6||F#1||1E 08 The next pattern is played 6*8=48/50ths of a second after the current one ends.|
Effect 1F: Call linked code
This allows code to be called when Desktop Tracker reaches this effect. The format is: &AD, where A is the address, and D is the data. A set of 16 memory locations are provided, and a SWI call can access these. For example, the effect 1F47 would result in the address 4 being holding the value 7. Also, during this effect, a linked set of codes are called, so that they can control whatever they want. The main use of this is to provide operation for a light box, so that light patterns can be placed in the tune. The first 4 locations are dedicated to this, each bit controlling 1 light. However, you should not have to worry about this, as it is unlikely that everyone will have a light box.
If you want to link code, then a SWI call is provided for you. Please refer to the SWI call list, in the file called SWIs in the Extras directory, or at the end of this manual.