mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-19 12:32:35 +00:00
213 lines
7.6 KiB
Plaintext
213 lines
7.6 KiB
Plaintext
http://garvalf.online.fr/index.php?page=articles_vortex_tracker.en
|
|
|
|
I want arps!
|
|
To create an arpeggio, use the ornaments tab. It's very simple and easy
|
|
to get the hang of, even though it looks scary.
|
|
|
|
Adjust the length of the ornament to 3. Now, just enter "0" in the first
|
|
row, "3" in the second row, and "7" in the third row. Go to the test
|
|
field and hit some notes. Minor arp!
|
|
|
|
00|+00
|
|
00|+03
|
|
00|+07
|
|
|
|
To use this in your song, go back to the pattern editor. Change the
|
|
third period after the note you want to arp to "1". Play your song, and
|
|
you'll hear some arps. To turn the arping off (so you can have it
|
|
applying only to specific notes, not to a whole column), just enter the
|
|
number of an ornament you haven't used yet. Such as F.
|
|
|
|
|
|
|
|
|
|
http://karoshi.auic.es/index.php?topic=397.msg4641#msg4641
|
|
|
|
|
|
Hello.
|
|
|
|
Long ago I tried to write a kind of doc about PT3 modules. I stopped it
|
|
but due to a certain person who asked for it ... (this goes especially
|
|
for Nerlaska) I write here what I have. I can't remember exactly what I
|
|
wrote on some papers so when you see something like (?), it means I
|
|
can't remember what I wrote Shocked Shocked Shocked
|
|
|
|
It would be very nice if someone could complete the info here given.
|
|
It's very easy; just write some basic on Vortex Tracker II and start
|
|
watching with an hex-viewer the changes ... at least, that's what I did
|
|
Grin
|
|
|
|
Have fun.
|
|
|
|
===========================================================================
|
|
|
|
PT3 format:
|
|
|
|
*Info inside the module*
|
|
|
|
$00: "ProTracker 3."
|
|
$0D: Version (always "5" for Vortex Tracker II).
|
|
$0E: " compilation of "
|
|
$1E: Name of the module.
|
|
$3E: " by "
|
|
$42: Author of the module.
|
|
$63: Frequency table (from 1 to 4).
|
|
$64: Speed ----------------------------------------------------------- Delay: 1 byte
|
|
$65: Number of patterns.
|
|
$66: Pattern loop --------------------------------------------------- LPosPtr: 1 byte
|
|
$67: Position of patterns inside the module ---------------- PatsPtrs: 2 bytes
|
|
$69: Position of samples inside the module ----------------- SamPtrs: 2 bytes
|
|
(2 bytes per address * 32 samples = 64 bytes)
|
|
$A9: Position of ornaments inside the module ------------- OrnPtrs: 2 bytes
|
|
(2 bytes per address * 16 ornaments = 32 bytes)
|
|
$C9: It points to where the patterns order ist ------------- CrPsPtr: 2 bytes
|
|
If you have a look to where this address points you can see, for instance,
|
|
$00,$03,$06,$03,$FF, which means:
|
|
|
|
pattern 0 ($00), pattern 1 ($03), pattern 2 ($06), pattern 1 ($03), END ($FF).
|
|
As you can see, you have to multiply for 3 every pattern number.
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
Now, in group of 6 bytes, come the address of every channel of every pattern.
|
|
So the first 6 bytes will point to the address of channel A, B and C of
|
|
pattern 0 (3 channels * 2 bytes = 6 bytes). The next 6 bytes to the 3 channels
|
|
of pattern 1, etc ...
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
In $69 (SamPtrs) we have the address where the definition of the samples
|
|
start. So $69 and $70 will contain the address of the definition of the first
|
|
sample in the module. $71 and $72 of the second, and so on.
|
|
|
|
The definition of the samples are like this:
|
|
|
|
byte 1: Loop
|
|
byte 2: Length of the sample
|
|
byte 3: 0 0 0 0 0 0 0 0
|
|
¦_¦ ¦______¦ ¦___ 0: Envelope 1: No envelope
|
|
¦ ¦
|
|
¦ ¦________ Noise: 0 - 31
|
|
¦
|
|
¦______________ 10: Volume down 11: Volume up
|
|
|
|
byte 4: 0 0 0 0 0 0 0 0
|
|
¦_¦ ¦_¦ ¦____¦
|
|
¦ ¦ ¦
|
|
¦ ¦ ¦______ Volume
|
|
¦ ¦
|
|
¦ ¦___________ Noise slide (?)
|
|
¦
|
|
¦______________ Frequency slide (?)
|
|
|
|
byte 5: Low byte.
|
|
byte 6: High byte.
|
|
These two bytes (5 and 6) contain the frequency slide. In case of negative
|
|
slide (higher pitch) the frequency you want to rest is rested to $FFFF and
|
|
stored in these 2 bytes.
|
|
|
|
Bytes 3,4,5 and 6 form a line of the sample (raster). So a sample will have
|
|
so many groups of these bytes as lines has the sample.
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
Definition of ornaments are much easier:
|
|
|
|
Byte 1: Loop
|
|
Byte 2: Length
|
|
Byte 3: Note (0-95)
|
|
|
|
The same as for samples. Byte 3 contains the definition of one line so there
|
|
will be as much bytes containing the new note as lines of definition has the
|
|
ornament.
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
Now it becomes more complex Smiley
|
|
|
|
The address of the channels of every pattern come in group of 6, as we said.
|
|
If we go to the address pointed for channel A (the first 2 bytes of those 6)
|
|
we'll have definition of the channel A in the tracker. The bytes are coded so
|
|
we have to read the higher 4 bites:
|
|
|
|
$4x: Ornament ($40-$4F)
|
|
$50-$AF: Note to play. There are 96 (12 notes * 8 octaves). The byte before
|
|
this one tells the length in lines inside the tracker. For instance:
|
|
$05,$50 will play C1 (Do in octave 1) during 5 lines of tracker. If
|
|
the Speed (Delay) is 6, the player will play this note during 30
|
|
(6 rasters * 5 lines in tracker) rasters.
|
|
$Bx: Envelope. We have to add 1 to know which value should we give to register
|
|
13. If there's envelope (a value different to $B1) the next 2 bytes are
|
|
register 12 and register 11 of the PSG. An example: $B9, $00, $50 means
|
|
R13=$08, R12=$00, R11=$50.
|
|
$Cx: Volume - $C0-$CF
|
|
$Dx: Sample - $D0-$EF
|
|
$0X: Effects/Commands ... The values they handle are set after note value
|
|
($50-$AF).
|
|
|
|
*Effects*
|
|
|
|
$01: Sound frequency decreasing in that channel.
|
|
First byte indicates the delay used to add the new frequency.
|
|
Next 2 bytes will indicate the frequency to add. Example:
|
|
$02,$23,$00 will add $23 to the final frequency in that raster
|
|
and another $23 every 2 rasters.
|
|
|
|
$01: Sound frequency increasing in that channel.
|
|
It's the same as above but the value is rested to $FFFF. Example:
|
|
$01,$DD,$FF will rest $23 to the final frequency in every raster.
|
|
|
|
$02: Tone portamento.
|
|
First byte is delay again. (?)
|
|
|
|
$03: Starts playing sample from a particular position/line definition.
|
|
Byte indicates from which position.
|
|
|
|
$04: Starts playing ornament from a particular position/line definition.
|
|
Byte indicates from which position.
|
|
|
|
$06: Periodical sound off/on in that channel.
|
|
Two bytes are used here. The first one tells how many rasters will be
|
|
played and the second how many will be not. Example. $03,$04 means
|
|
that that channel will be played 3 rasters, 4 not played, 3 played, ...
|
|
|
|
$08: Envelope frequency increasing.
|
|
Two bytes will indicate the frequency to add to registers R12 and R11.
|
|
Example: $34,$00 will add $34 to R11.
|
|
|
|
$09: Set playing speed (new Delay).
|
|
The byte after the note will tell the new delay.
|
|
|
|
$0A: Envelope frequency decreasing.
|
|
Same as increasing but the value is rested to $FFFF.
|
|
Example: $CC,$FF will rest $34 to R11.
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
*Example 1*
|
|
|
|
So if we have this in the module: $D2,$CF,$B1,$05,$50 we will have this in the
|
|
tracker:
|
|
|
|
C-1 2..F ....
|
|
--- .... ....
|
|
--- .... ....
|
|
--- .... ....
|
|
--- .... ....
|
|
|
|
$D2: Sample 2 ($Dx samples)
|
|
$CF: Volume 15 ($Cx volume)
|
|
$B1: No envelope ($Bx envelope)
|
|
$05,$50: Play note $50 (C1) during five tracker lines.
|
|
|
|
*Example 2*
|
|
|
|
If we have this in the module: $D1,$CE,$09,$B1,$08,$50,$07
|
|
|
|
$D1: Sample 1.
|
|
$CE: Volume 14.
|
|
$09: New delay will be set. See after note is set.
|
|
$B1: No envelope.
|
|
$08,$50: Play note $50 (C1) during eight tracker lines.
|
|
$07: New Delay.
|