Asterion Sid-Tracker v1.1 by Tinnitus [web]
-------------------------
Asterion Sid-Tracker v1.1
Instructions
-------------------------
General Keybindings
-------------------
F1 play/stop
F2 continue playing
F3 enter sound table
F4 play (loop) current patterns
F5 toggle tune parameters (change with +,-)
F6 enter indexes' table
F7 brief help
F8 directory
CRSR move around
RET toggle track & macrocommand table / pattern tables ($01-$7f)
ú while in track & macrocommand table - toggle wave & arpegio table / pulse table / filter table
while in indexes table - toggle 9xAx/BxCx/4xFx indexes
: ; change sound number
, . change octave number in trackerlike mode
INS&DEL insert or delete rows (track & macrocommand tables, pattern tables)
+ - fast scrolling (track & macrocommand tables, pattern tables)
sh+i edit tune info
left toggle keyboardmode - trackerlike/note writing
arrow
trackerlike - 2 3 5 6 7 9 0
Q W E R T Y U I O P
S D G H J
Z X C V B N M
note writing - A,B,C,D,E,F,G
Shift +A,+C,+D,+F,+G
(for halftones)
0-7 octave number
left arrow switches between pattern keyboardmodes. <trackerlike> mode is similar to the one used in most of the trackers. the keyboard is organized just like a real music keyboard; jamming is automatically activated in this mode: current instrument (changed with : and ;) is played when entering notes. pitch of the note depends on actual octave number (changed with , and .). <note writing> mode allows entering notes and octave numbers directly. in AST v1.1, 94 notes are available (c#0 - a#7).
Pattern Table
-------------
pattern position --- pattern number
| |
| PTR01 PTR02 PTR03
00 ---01 ---00 ---00
01 C#400 ===00 ---00
^^^ ^ ^ ^
note--------- - - --------effect command
- -
release command---- -----------do nothing
by "pattern" we consider a column of notes and effects ordered to one track-channel - unlike in PC trackers, where one pattern controls all channels at once. a pattern has 64 positions and it can be shortened by writing the ending marker ($ff) in fx column in a desired row.
---------
| ---00 |
| ---00 |
| ..... |
----------------pattern
space insert the note release command (===)
sh+1-3 mute channels 1-3
sh+* transpose the whole pattern halftone up
sh+@ transpose the whole pattern halftone down
sh+t take pattern to copybuffer; works also in the track table
sh+p paste pattern from copybuffer; works also in the track table
sh+k kill pattern; works also in the track table
Disk commands
-------------
sh+l load tune
sh+s save tune
the editor can handle only files saved by itself. packed files and files saved with older AST versions cannot be loaded succesfully.
Sound table
-----------
sound number octave number
------ ---------
| SOUND TABLE |
|--SND 01 OCT 04---|
00 A/D 00 WAS
00 S/R 00 PUL
00 WAV 00 FLT
00 ARP 00 MCP
00 VDE 00 DTN
00 VDS 00 REG
a/d xy - attack/decay
s/r xy - sustain/release
wav xx - wave macrocommand
arp xx - arpegio macrocommand
vde xx - vibrato delay
vds xy - vibrato depth/speed
was xy - wave/arpegio executing speed
pul xx - pulse macrocommand
fct xx - filter macrocommand
mcp xy - multicutoff/multipulse speed
dtn xx - detuning level
reg xy - x. 1. enable vibrating arpegio & portamento
2. restart wave & pulse on tie note
4. restart wave & pulse on portamento
8. enable hardrestart
y. 1-F. frames before note restart
A/D, S/R - envelope setings
WAV, ARP - point to specified rows in respective macrocommand tables
PUL, FLT - point to specified rows in respective macrocommand tables. $00 value will not work - player interprets it as if no pulse/filter should be executed.
VDE - number of frames before vibrato starts.
VDS - right nybble - defines the speed of vibrato direction changes. the lower the value, the higher the speed.
0-7 starting upwards
8-F starting downwards ($8 works as a neutral value)
- left nybble - points to an 8-bit vibrato depth value placed in a indexes table (4x indexes). this weird solution allows overriding this value from pattern. in indexes table you can define from $1 to $e index. $0 has always zero value (no vibrato). $F is always the highest ($FF). values from indexes table are multiplied by 4 and add/subtract each frame.
WAS - right nybble - number of frames the player should wait until the next value from waveform macro table is executed.
- left nybble - number of frames the player should wait until the next value from arpegio macro table is executed.
MCP - multicourses - they allow cyclic switching of a pulse/filter scheme declared by an instrument definition with another value declared in a pattern. You can therefore create asynchronous courses of pulse and filter. static value is declared in pattern. that value is interlaced with the normal scheme from pulse/cutoff table.
- right nybble - 0. multipulse disabled, player executes pulse table.
1-F. non-zero value actives multipulse mode and defines number of frames before switching between table pulse and 2nd pulse.
- left nybble - 0. multicutoff disabled, player executes filter table.
1-F. non-zero value actives multicutoff mode and defines number of frames before switching between table filter and 2nd cutoff.
second pulse and cutoff are declared in pattern with Bx and Cx effect commands... more on this later.
DTN - it detunes specific sound. if we write e.g. $02 here the note played with this instrument on first channel will stay unchanged (it always stays), on second channel it will be detuned by $02, on third channel by $04. the calculated value is 8-bit, so if we write $81 the level of detuning for each channel will be as follows: 1 = $00, 2 = $81, 3 = $02.
REG - right nybble - defines the number of frames during which ADSR registers are cleared before new note restarting. changes here will work only when hardrestart is enabled. $1-$f values equal 2-16 frames. zero cannot be used as it will cause channel blocking; for obvious reasons the tempo value cannot be exceeded too.
- left nybble - 1. enables vibrating arpegio and vibrating portamento. normally these are blocked.
2. enables pulse and waveform restarting during tie note (AST v1.0 bug emulation)
4. enables pulse and waveform restarting during portamento (AST v1.0 bug emulation)
8. enables hardrestart, the effect which fixes note restarting
AST v1.1 allow vibrating portamento which should work 100% correctly. The vibrating arpegio is also possible, but it is quite an experimental feature and it works fine with $00 VDE level. slight detuning might be audible with other values, so the effect should be used with care. anyway, it can be really helpful in producing various frequentional oddities.
Track & macrocommands table
---------------------------
track/macro position
-------
- ---track/channel numbers
- -
- - TRACKS&MACROS
- ->01 02 03 WV AR---type of the macrocommand (WV - wave, AR - arpegio, PULSE, FLT - filter)
->00 c0 c0 c0 41 00
->01 00 00 00 fe fe
->02 ff ff ff 00 00
->03 01 01 01 00 00
^^-^^-^^ ^^-^^----macrocommands part
-
----------tracks part
Tracks data
-----------
00 unchangeable blank pattern, contains 64 blank positions; it can be used in song structure as e.g. an empty channel.
01-7F pattern number
80-EF transpose (c0 - middle/neutral value) - affects subsequent patterns
FF loop track to the position specified in the next row, as in the example above (loop to position $01)
Wave macrocommand data
----------------------
this table is independent from the arpegio table and its executing speed depends on instrument's WAS value (left nybble)
WV
pulse 41
end fe
triangle 11
saw 21
loop... ff
...to 02 02
set ADSR e0
AD 14
SR 88
pulse+gateoff 40
end fe
00-df values written to SID control registers, $d404...etc.
e0 change ADSR. next two values should contain the new AD & SR level. it overrides ADSR in instrument declaration. it happens the same way as in patterns so the value isn't restarted unless a new instrument in pattern is set. therefore, when making "echo" effects, it is good to change ADSR in the beginning of the macrocommand for instrument in order to be restarted properly.
e1-fd wait 1 - 29 frames
fe end macro, last value stays
ff loop macro to the position specified in the next row
Arpegio macrocommand data
-------------------------
this table is independent from the wave table and its executing speed depends on instrument's WAS value (right nybble)
AR
don't transpose 00
transpose -1 61
end FE
minor chord 00
03
07
03
loop... ff
...to $03 03
absolute... DF
...transpositions c8
wait 4 frames e4
skydive starting value af
skydive execution e0
00-5f relative transposition up
60-7f relative transposition down, $60 works like $00
80-df absolute transposition (doesn't depend on note)
e0 skydive, a fast frequency slide down with speed dependent on WAS value declared in instrument definition. this value ends the macrocommand. you should always enter a starting value ($00-$df) before this effect.
e1-fd wait 1 - 29 frames
fe end macro, last value stays
ff loop macro to the position specified in the next row
Pulse macrocommand data
-----------------------
PULSE
00 00
set pulse to $0848 00 48---nybbles reversed
add $13 for $60 frames 13 60
subtract $13 for $c0 frames 93 c0<--
add $13 for $C0 frames 13 c0 -
wait $20 frames 7f 20 -
loop to position $03 ff 03---
00 xx set the highest pulse nybbles to xx (nybbles reversed!)
01-7e xx add 01-7e for xx frames to the lowest pulse nybbles
7f xx wait xx frames
80-fe xx subtract 00-7e for xx frames from the lowest pulse nybbles
ff xx loop to position xx
Filter macrocommand data
------------------------
FLT
00 00
set resonance & filter type 80 f1
set cutoff to $0190 00 23<-------------
add $30 for $10 frames 30 10<-- -
subtract $30 for $10 frames b0 10 - -
wait $40 frames 7f 40 - -
loop to position $03 ff 03--- -
-
because nybbles are reversed $23 => $32 and then:--
$d416 $d416 cutoff value
00110010 xxxxx000 => xxxxx001 10010000
$32 $00 equal $01 $90
...boohoo it doesn't really matter
00 xx set the highest cutoff nybbles ($d416) to xx (nybbles reversed!)
01-7e xx add 01-7e for xx frames to the lowest cutoff nybbles ($d415 - 3 bits & $d416 - 5 bits)
7f xx wait xx frames
80 xy filter macrocommand should be started with this, unless you don't want the filter to be active when the note starts playing!!! of course you can change it through the filter execution later on.
x.set resonance
y.set filter type (1.lo pass, 2.by pass, 4.hi pass)
81-fe xx subtract 01-7e for xx frames from the lowest cutoff nybbles ($d415 - 3 bits & $d416 - 5 bits)
ff xx loop to position xx
Pattern effects
---------------
AST v1.1 player remembers all recently declared values of individual effects.
00 - no effect
0x-1x - set the instrument number - a tune should always be started with an instrument declaration in order to prevent strange suprises.
2x - individual bits has various meaning; they can be used together, of course.
1.tie note (legato) new note will only change the frequency - unless REG 5th bit of the current instrument is set.
2.synchronize - overrides current waveform
4.modulation - overrides current waveform
8.no pulse restarting - after a new note has been reached, the pulse scheme position will not be reset (current position of the scheme is remembered)
3x - portamento to target note with speed of x
0. end portamento
succesive notes will be toneportamented until the effect is zeroed. portamento will be one-timely leaved on new instrument declaration. portamento changes only frequency, unless REG 6th bit of current instrument is set.
4x - vibrato depth, with speed declared in VDS
0. VDS depth
vibrato depth takes 8-bit value from corresponding indexes table (4x). if the effect is zeroed, vibrato depth is reset to the instrument's original value.
5x - change attack
6x - change decay
7x - change sustain
8x - change release
note: instrument declaration ($0x-$1x) restarts ADSR values
9x - execute waveform from index number x
0.normal waveform
until the effect is zeroed, new waveform scheme is executed. it executes the sequence from the wave macro table starting from the row defined in the corresponding table of indexes (9x)
F.coding event - executes inc $04 for audiovisual synchronization. doesn't affect the sound in any way.
Ax - execute arpegio from index number x
0.normal arpegio
until the effect is zeroed, the new arpegio scheme is executed. it executes the sequence from the arpegio macro table starting from the row defined in the corresponding table of indexes (Ax)
Bx - set pulse
0.pulse from instrument
if MCP's (instrument definition) right nybble = 0 then it switches to a new pulse scheme executing the sequence from the pulse table starting from the row defined in the corresponding table of indexes (Bx) until the effect is zeroed
if MCP's (instrument definition) right nybble <> 0 then x becomes 2nd-static multipulse and it is dumped to the pulse's highest nybble
Cx - set cutoff
0.cutoff from instrument
if MCP (instrument definition) left nybble = 0 then it switches to a new filter scheme executing the sequence from the filter table starting from the row defined in the corresponding table of indexes (Cx) until the effect is zeroed
if MCP (instrument definition) left nybble <> 0 then x becomes 2nd-static multicutoff value and it is dumped to the cutoff's highest nybble
Dx - set volume - default F
Ex - toggle filtering - individual bits of this effect, except the last one, correspond with respective tracks (channels). setting on any of these bits will cause enabling or disabling the filter on a given channel - depending on its current status.
1.enable/disable filter on 1st channel
2.enable/disable filter on 2nd channel
4.enable/disable filter on 3rd channel
8.no cutoff restarting - after a new note has been reached, the filter scheme position will not be reset (current position of the scheme is remembered)
Fx - 0 stop tune
1-E set tempo, 8-bit value is taken from corresponding indexes table (Fx)
F end of pattern - affect all tracks, you can shorten pattern execution with this effect
Indexes table
-------------
starting index
--------- =========$92,$93,$94 ...
| | | |
91 00 00 00 00 00 00 00
98 00 00 00 00 00 00 00<--$9e
a1 00 00 00 00 00 00 00
a8 00 00 00 00 00 00 00
9x - points to the waveform macro table row, executed with 9x pattern effect
Ax - points to the arpegio macro table row, executed with Ax pattern effect
Bx - points to the pulse macro table row, executed with Bx pattern effect
Cx - points to the filter macro table row, executed with Cx pattern effect
4x - defines the 8-bit value of vibrato depth. AST v1.0 values are used by default. executed with 4x pattern effect and/or with instrument definition
Fx - defines the 8-bit tempo value. AST v1.0 values are used by default. executed with Fx pattern effect and with tune parameters for the initial tempo setting.
Tune parameters
---------------
tune no - tune number (0-7)
tempo - initial tempo (1-e), the 8-bit value is taken from the corresponding indexes table (Fx)
multispd - set tune frame speed
tnstartx - the tune starting position for each track pointing to track table positions; can be also set by pressing space in desired position of the track table
Useful hints
------------
- filter is controlled by the lowest channel so the 1st channel has the highest control priority.
- each pattern shorter than $3f should end with $ff (in the effect row), even if that position wouldn't be played. the packer always looks for the first $ff value.
- vibrato pattern effect ($4x) will work fine only with non-zero vibrato speed (VDS left nybble).
- you can cut desired note with the release command (===) and setting release level to zero with $80 simultaneously.
- if editor crashes you can reanimate it with sys5143.
Ast v1.1
--------
Code by Asterion
Music & Tutorial by
Asterion & Trompkins of Tinnitus
(c) 2004 Tinnitus
contact:
asterionc64@o2.pl
[ back to the prod ]
