Pretracker 1.00 by Abyss [web]

PreTracker Tracker v1.0 (c) Pink/aBYSs 2019

If the exe file does not start and asks for 'MSVC140.dll' you need to install 'vc_redist.x86.exe' from here:

'PreTracker Tracker' is a chipmusic tracker. No samples can be loaded.
It emulates the Paula soundchip of the Amiga computers. The songs can be replayed
on the Amiga range of computers (Amiga 1000 and above). All samples are precalced on startup according to your instruments.

While most Amiga trackers only support 3 octaves (Note C-0 to B-2) 
PreTracker offers 5 octaves (C-0 to B-4).

Some important keys are:
SPACE - Toggle edit mode On/Off
ESC   - Switch between Instrument/Pattern screen 
1     - Enter 'Note Off' in a pattern 
Use the cursor keys to navigate.

Whenever "0x" is used in this documentation it means the following number is used as a hexadecimal value.

FILE | Export Amiga EXE
This option will create an AMIGA executable playing a PreTracker song.
The song will be saved in the PreTracker exe directory as "Amiga_PretrackerSong.exe".
Tested on A500,A500+512k,A1200 stock, A1200+1230.

Replayer:      Pink/aBYSs
Cranker:       Bifat/Tek (thanks for the compile!)
LZ Compressor: Johan "Doynax" Forslöf
68k LZ decomp: Axis/Oxyron

Sequence Editor
When you start the programm you see on the top left the sequence editor.
You can toggle between the Sequence Editor and the Pattern Editor with RETURN.
Here you can set the pattern to play for each of the four tracks and a transpose value for the notes in this pattern.
Here are some examples for the first track (the three other tracks work the same)


This means to play pattern #1 with no transpose.
The transpose in written in hexadecimal.
Values 0x00-0x7f are treated as positive. 
Values 0x80-0xff are treated as negatve


This means to play pattern 15 with transpose 0x0C (0x0C=12 in decimal. So the transpose is a full octave)


This means to play pattern 15 with transpose 0xFE (0xFE=-2 in decimal. So the transpose is two semi notes down)

Pattern Editor 
If you ever used a tracker programm you should feel at home.
Here you enter which note to play with which instrument. You can also add commands.
The concept is exactly the same like in Protracker. Even many commands are the same and work identical.

--- -- 000
This does nothing (the default value)

C-1 01 000
Play note C-1 with instrument 1

C-1 01 A0F
Play note C-1 with instrument 1 and use command 0xA with value 0x0F

Waves are short samples. They are the heart of Pretrackers sound synthesis!

All waves are precalced on start of a song. You can have upto 24 waves in a song.
Please consider that precalcing these waves can take quite some time on an Amiga 500.
Using features like the filter easily doubles the needed time. Also each extra chord note will increase 
precalc time. A basic rule is to use the shortest waves you need, to keep precalc time as low as possible
and to preserve chipmem (where are samples need to be loaded on an Amiga to be playable).

To edit waves you first need to enter the instrument editor (by pressing the INSTRUMENTS button or hitting the ESC key).
From there you can select each of the 24 Waves with a button click. A click on a wave button brings you to the Waves editor.

The Waves editor lets you setup waves for your instruments. This editor works like a subtractive synth. 

Here you choose the basic type of waveform you want to create.
OSC:SAW = Sawtooth
OSC:TRI = Triangle
OSC:SQR = Square Wave
OSC:RND = Random/White Noise

Len*128     Defines the waves length in multiples of 128 bytes
Basenote    Tune in half notes. The real tuning depends also on your subloop size (See loop section)
Gain        128 will give you 100% volume 

Phase Min   Minimum phase shift
Phase Max   Maximum phase shift
Phase Spd   Phase speed

 The Phase values above define a phase shift of the oscillator waveform across time. You may know this feature
 from the C64 SID. There you can phase shift the square wave. The Phase effect in Pretracker
 is very similar but works with any oscillator wave (except RND).

Unisono     Adds another detuned Oscillator to create a fater sound. Good for chords and pads.

Note 2-4    Enter the halfnote of your chord. For instante "Note 2"=4, "Note 3"=7 will define a major chord.
Shift       Shifts the oscillator phase of each note of the chord. Allows nice comb filter effects.

Volume Envelope
Attack      Attack time
Delay       Wait time after attack until decay begins
Decay       How fast the sustain volume will be reached
Sustain     The final 'sustained' volume

Filter LFO
No filter/Lowpass/Highpass/Bandpass/Nocht  The type of filter to be used
Resonance   The filters resonance. 0 is none, 63 is highest
Start       Where the filter cutoff starts
Min         The minimum filter cutoff
Max         The maximum filter cutoff
Speed       How fast the cutoff will be modulated between min/max

This is a modulated delay effect with adjustable number of delays.
If the "POST" button is off (default) then the effect is applied before the ADSR.
It's best to experiment with the settings. Use it to give more life to snares and hihats, 
or to phase leads or bass sounds. However, CPU precalc time is quite high for this effect.

Pitch Ramp    Changes pitch of the waveform over time
Pitch Linear  Sets linear or exponential pitch ramp
Boost         Increases volume by a factor of 4
Allow 9xx     If true then the instrument editor 9xx command will offset this waves Loop start

Clone Wave    Uses the settings from another wave except it's chord settings. 
              Use this to create different chords that use the base wave settings.

Mix Wave      Lets you mix any wave number to your current wave. Nice to build up drums. 
              To avoid endless loops (for instance wave 1 references wave 2 and vice vera) such combinations are skipped.

Loop Section
On the bottom of the Wave editor is the loop section.
The loop section lets you define a loop start/end and a subloop size.
The subloop will be moved each frame through the loops start/end points with the given step size. 
Usually you set as step size your subloop size (or a multiple of it) or simply 2 to sweep through it.

The size of the subloop will define the tune of your wave. If you use a power of two for the loop size (2,4,8,16,32,64,128,256,512,..)
you will get a basenote tuned to C. With each doubling of the size the octave will become one lower.

You can enter the instrument by pressing the INSTRUMENTS button or hitting the ESC key.

Instruments are made up of waves.
The ADSR and Vibrato should be self explanatory. To start the release phase of an ADSR you 
need to set NOTE OFF in the patterns. This is done by pressing "1" on your keyboard. It will
insert a command like this for the note.
[__] -- 000

The edit waves press on the their respective buttons on the left side.

Command Pattern
Here you can 'program' your instruments by choosing waves, notes and effects. Its like a tiny pattern that is played each time you trigger the instrument.
It has notes and commands very much like song patterns. The bottom of the screen has a handy list of available commands.
All notes are added to the currently played note from the song pattern.
Press RETURN on the current step to fix the note. Then the song pattern note is not added while playing. Press RETURN again to reverse.

You can enter multiple commands for a single step in the command pattern. Press LSHIFT+INS to insert such commands.
Multiple commands can only operate on a single note. So the note is not shown for such commands.


--- < > 000
Do nothing

C-0 < > 001
The first note is an offset that is added to the pattern note. C-0 means no offset. 001 means use wave 1.

C-0 <*> 001
When you press Enter then the current note will be locked, this means it won't be altered by the pattern note.

C-1 < > 1F0
Add C-1 to the current instruments pitch and use the 'Slide up' command

For playing arpeggios that are defined in the patterns plays refer to "Playing Chords & Arpeggios".


A-Z               Play current instrument/wave
Space             Stop Song/Toggle Edit Mode
Space+Shift       Stop Song and current step
ESC               Toggle between Instrument Window and Main Window
RCtrl             Play Song
<                 Play Song
RCtrl+Shift       Play Song from current pos
Shift+<           Play Song from current pos
LCtrl+Cursor Down Next Instrument
LCtrl+Cursor Up   Previous Instrument
Home/End	  Goto Start/End of Pattern or Sequences

Sequence Editor 
Return          Goto Pattern Editor 
F1-F4           Set Octave 
Backspace       Delete Step
CURSOR KEYS     Move Cursor
Delete          Erase Entry
Delete+SHIFT    Erase Step
Home            Jump to sequencer position 0
INSERT+CTRL     Insert new step
Tab             Next channel
Tab+SHIFT       Previous channel
CTRL+u          Set unused pattern
CTRL+k          Clone existing pattern
CTRL+ALT+LEFT   Swap sequencer entry to the left
CTRL+ALT+RIGHT  Swap sequencer entry to the right
PLUS/MINUS	Transpose
CTRL+PLUS/MINUS Transpose Octave
CTRL+SHIFT+UP	Duplicate entries up
CTRL+SHIFT+DOWN Duplicate entries down
CTRL+z	        Undo
Shift+Cursor    Mark block in Pattern/Sequencer/Instrument Steps
CTRL+c          Copy block area
CTRL+x          Copy block area and clear
CTRL+v          Paste block area

Pattern Editor
Return            Goto Sequence Editor 
1                 Insert Note-Off command
SHIFT+Return      Mark this step as Chord/Arpeggio
RSHIFT + Notes    Enter arpeggio
STRG+Return       Play Step
F1-F5             Set Octave 
F10               Show Help
SHIFT+F3          Clear Pattern
SHIFT+F4          Copy Pattern
SHIFT+F5          Paste Patern
CTRL+F3           Clear Pattern Commands
CTRL+F4           Copy Pattern Commands
CTRL+F5           Paste Patern Commands
Delete            Erase note
Ctrl+Delete       Erase command
SHIFT+Delete      Erase step
Ctrl+ALT+LEFT     Swap sequencer entry to the left
Ctrl+ALT+RIGHT    Swap sequencer entry to the right
ALT+m             Un/Mute channel
ALT+SHIFT+m       Un/Mute all channels
ALT+(1-4)         Un/Mute channel 1-4
Cursor Move+CTRL  Change Selection 
Ctrl+Plus         Shift Selected Notes Halfnote Up	  
Ctrl+Minus        Shift Selected Notes Halfnote Down	  
Ctrl+Shift+Plus   Shift Selected Notes Ocatve Up	  
Ctrl+Shift+Minus  Shift Selected Notes Ocatve Down	  
Ctrl+e            Expand track (insert empty step between each step)
Ctrl+Shift+e      Contract track (remove every second step)
CTRL+1..9         Set Editstep (=how many steps get skipped on edit)
Cursor UP         Step Up
Cursor Down       Step Down
Page Up           16 steps up
Page Down         16 steps down
Home              Jump to step 0
CTRL+z	          Undo
CTRL+LSHIFT+z     Redo
Shift+Cursor      Mark block in Pattern/Sequencer/Instrument Steps
CTRL+c            Copy block area
CTRL+x            Copy block area and clear
CTRL+v            Paste block area
Ctrl+a            Mark whole pattern/sequencer
Ctrl+Cursor Left  Decrease Sequence Pattern Number
Ctrl+Cursor Right Increase Sequence Pattern Number
Left Shift 	  When hold then notes are entered without changing the instrument in the step

Instrument Editor
Return            Toggle Fix Note
INS               Insert step
SHIFT+INS	  Insert Substep
SHIFT+F3          Clear Instrument
SHIFT+F4          Copy Instrument
SHIFT+F5          Paste Instrument
CTRL+z	          Undo
CTRL+LSHIFT+z     Redo
Cursor UP         Step Up
Cursor Down       Step Down
Page Up           16 steps up
Page Down         16 steps down
Home              Jump to step 0

Wave Editor
Esc               Return to instrument editor
SHIFT+F3          Clear Wave
SHIFT+F4          Copy Wave
SHIFT+F5          Paste Wave

To change values quickly hold SHIFT while clicking on the arrow.
To reset buttons hold CTRL while clicking on the arrow.

Pattern Commands
0xx         Play 2nd Instrument
1xx         Slide Up
2xx         Slide Down
3xx         Tone Partamento
4xx         Set Vibrato. Overrides the vibrato of the current instrument and set the delay to 0.
5xy         Track Delay. x=volume (0=off,0xf=100%), y=delay in steps, 
            This will mute the next track and play a delay copy of the notes of your current track.
            Use command 500 to stop the delay. Otherwhise no notes can be played on the next track.
            If used on the last track then it has no operation.
9xx         Set wave offset
Axy         Volume Ramp. x-upspeed, y-downspeed
Bxx         Position Jump
Cxx         Set Volume. 0x40 is max. Multiplied with volume of instrument.
Dxx         Pattern Break
E1x         Fineslide up (not implemented yet)
E2x         Fineslide down (not implemented yet)
EAx         Note off in x sub steps
EDx         Note delay in x sub steps
Fxx	    Set Speed (frames waited on each step), so F06 means wait 6 frames until next note. F00=stop, F2f slowest
            Funk Speed: if Fxx >= 0x30 then Fxy sets a different step wait for even (x)/odd steps(y)

Instrument Commands
See Instrument window
0xx Select wave 0x01-0x18
1xx Slide Up
2xx Slide Down
30x ADSR x=1: Release x=2: Restart
4xx Like 0xx but starts wave without sync (means currenty sampleloop pos won't be resetted)
Axy Volume Slide
Bxx Jump to Step
Cxx Set Volume
E0x Use Pattern Arpeggio (0-3) that was set in pattern, skips empty ('0') arpeggio notes 
E1x Use Pattern Arpeggio (0-3) that was set in pattern
Fxx Set Speed

Playing Chords & Arpeggios
When you mark a pattern step as Arpeggio (see Pattern Editor shortcuts) then the 3 coloumns of command and value are 
interepreted as three note offsets that will form the arpeggio together with the base note.
You can also directly enter an arpeggio by holding the RIGHT SHIFT + Pressing the arpeggios notes.

C-1-01 47C 

If the above step is marked as Arpeggio then it will play C-1 with instrument 1 and notes 4,7 and C (a C-Dur chord with an additional octave).
This works like ProTracker Arpeggio offsets but with one additional note.

If you use an instrument with E0x commands then you can 'read' this chord and play it as arpeggio.
Instrument example to play the above chord as arpeggio:
C-1 <> E00 Play the instrument with basenote C1. Add first chord note 
--- <> E01 Play 2nd chord note
--- <> E02 Play 3rd chord note
--- <> E03 Play 4th chord note 
--- <> B00 Jump back to start

IMPORTANT: If you used 0 in a chord definition then those notes will be skipped for convenience in the instrument.
If you don't want to skip notes you can use the "E1x" command instead.

Thanks to Virgill, Tecon, Geir, GrG, Curt, Firefox and Aceman for beta testing PreTracker!