dos33fsprogs/demos/megademo/music/pt3.notes
Vince Weaver b1238af49d re-arranged the entire directory structure
this will probably upset people
2021-01-05 15:29:31 -05:00

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.