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.

For example:

EventNoteEffect
11C 2 0D00 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.

For example:

EventNoteEffect
20C 2 1A01 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.

For example:

EventNoteEffect
13F 3 0400 00 No effect
14G 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

For example:

EventNoteEffect
3AF#1 1304 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).

For example:

EventNoteEffect
05D#2 0105 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.

For example:

EventNoteEffect(s)
1DC 3 0006 10 Play from the &10*256 th byte &1000, (or 4096)th byte
20C 3 0106 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.

For example:

EventNoteEffect
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.

For example:

EventNoteEffect
81D 1 300A 01 The volume is incremented by 1 for every 50th of a second
B7E 10A 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.

For example:

EventNoteEffect
66A#1 150B 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.

For example:

EventNoteEffect
5FB 2 1F0C 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.

For example:

EventNoteEffect
FED#20D 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.

For example:

EventNoteEffect
D0G#30E 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.

For example:

EventNoteEffect
76C 1 330F 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

For example:

EventNoteEffect
4AG#1 2011 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.

For example:

EventNoteEffect
A9D 1 1812 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.

For example:

EventNoteEffect
07C 2 0200 00
08D 2 0216 00 Start loop
09E 2 0200 00
.......
20F 1 0216 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:

TempoValueSpeedActual%error
60818.0000.000
721019.6004.167
90 12 1 12.0000.000
120 16 1 16.0000.000
144 19 1 19.2001.053 - See later for a more accurate
160 21 1 21.3331.588 set of values
180 24 1 24.0000.000
192 26 1 25.6001.563
224 30 1 29.8660.446 - See later
240 32 1 32.0000.000
125 50 6 50.0000.000 - This is the default value
144 96 5 96.0000.000 - Changing the speed for accuracy
22422415224.0000.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.

For example:

EventNoteEffect
21G 2 1319 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.

For example:

EventNoteEffect
03A#3 111B 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.

For example:

EventNoteEffect
BDD#2 221D 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):

EventNoteEffect
C6F#11E 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.