***********************************************************************
***********										***********
***********										***********
***********  Descrition des diff‚rents formats SoundTracker	***********
***********										***********
***********		  Formats Amiga 4 … 32 voies			***********
***********										***********
***********										***********
***********		  Par Simplet / FATAL DESIGN			***********
***********										***********
***********************************************************************


Structure d'infos sample :
--------------------------

				RsReset

Amiga_Name		rs.b		22
Amiga_Length		rs.w		1	* Taille cod‚e en words
Amiga_Fine_Tune	rs.b		1	* de 0 … 15  =  0 … 7 et -8 … -1
Amiga_Volume		rs.b		1	* de 0 … 64
Amiga_Repeat_Start	rs.w		1
Amiga_Repeat_Length	rs.w		1

Amiga_Size		rs.b		1	* 30 octets


Structure d'un fichier :
------------------------

			    Offset	   Longueur			Valeur

Song_Name			   0			 20			Nom du Module
Song_Sample_Infos	  20		31*Amiga_Size		Infos sur les samples
Song_Length		 950			  1			Longueur du Morceau
Song_Restart		 951			  1			Position de Rebouclage
Song_Sequence		 952			128			S‚quence des Patterns
Song_Chunk		1080			  4			Module Chunk

Song_Patterns		1084		Nb_Patterns*Pattern_Size

Song_Samples		1084						Samples 8 bits Sign‚s
				+Nb_Patterns*Pattern_Size


	La Taille d'un pattern est de 4*Nb_Voies*64

	Le Nombre de patterns dans un module est le num‚ro de pattern le plus
haut + 1  car la num‚rotation des patterns commence … 0. Il faut pour le
connaitre scanner la s‚quence et prendre le maximum.

	Le Restart est utilis‚ seulement par le NoiseTracker. Le ProTracker
met $7f ou $78 … la place. Donc pour savoir s'il y a un Restart ou non, il
faut comparer la valeur … la longueur du module, si il est plus petit,
c'est que la valeur doit ˆtre bonne, sinon on d‚cide que Restart = 0

	Pour les anciens modules 15 instruments, il y a la place pour 15
instruments dans les infos samples. Et il n'y a pas de Chunk. Donc pour les
d‚tecter, il faut calculer la longueur qu'aurait le fichier si c'‚tait un
module 15 samples et comparer avec la longueur r‚elle.
	De mˆme pour les modules 8 voies *.WOW du Grave Composer.

	Le Digital Tracker utilise ce format standard, si ce n'est qu'il y a
un long mot de plus juste aprŠs le Chunk. Le premier mot donne le nombre
de lignes d'un Pattern.

	La Fr‚quence de Base des Samples (DO-2) est 8363 Hz.
	Le Tempo par d‚faut est 125 et la vitesse 6.

Structure d'un morceau :
------------------------

	Le Morceau (Song) est compose de x positions auxquelles on associe un
num‚ro de pattern au travers de la s‚quence des patterns (Song_Sequence)

	Dans la s‚quence, chaque num‚ro de pattern est cod‚ sur un octet.

	Un pattern est constitu‚ de 64 lignes de x voies, chaque colonne est
cod‚e sur 4 octets de la manniŠre suivante :

	Word 0 :	sssspppppppppppp	Octet 2 :	sssseeee	Octet 3 :	aaaaaaaa

	pppppppppppp : P‚riode de la note		0 = pas de Note
	ssssssss : Sample					de 1 … 31
	eeee : Effet
	aaaaaaaa : ParamŠtre de l'Effet


Les Effets ProTracker :
-----------------------

	L'octet de paramŠtre est not‚ XY

  Num‚ro	  Nom					Description

	0	Rien ou Arpeggio	Changement rapide entre 3 notes
						Note normale, Note + X et Note + Y

	1	Portamento Up		Augmente la Hauteur de la Note
						en diminuant sa p‚riode de $XY … chaque
						'tick' de chaque ligne

	2	Portamento Down	Diminue la Hauteur de la Note
						en augmentant sa p‚riode de $XY … chaque
						'tick' de chaque ligne

	3	Tone Portamento	'Liaison' entre deux Notes, Rapproche la
						p‚riode actuelle de la p‚riode de la Note
						d‚sir‚e en l'augmentant ou la	diminuant de
						$XY … chaque Ligne (vitesse)

	4	Vibrato			Fait osciller la p‚riode (… chaque 'tick')
							X est la vitesse
							Y est l'amplitude

	5	Tone Portamento	Conserve l'effet de Tone Portamento
		+ Volume Slide		et effectue un Volume Slide (Effet No A)

	6	Vibrato			Conserve l'effet de Vibrato
		+ Volume Slide		et effectue un Volume Slide (Effet No A)

	7	Tremolo			Vibrato sur le Volume, mˆme fonctionnement

	8	Fine Pan Position	$XY Fixe la balance de la voie :
						$00 Gauche..$80 Milieu..$ff Droite

	9	Sample Offset		Augmente le point de d‚part du sample
						de $XY00 octets.

	A	Volume Slide		Augmente le Volume de $X
						ou le diminue de $Y … chaque 'tick' de chaque
						ligne et $X est prioritaire

	B	Position Jump		Saute … la position num‚ro $XY
						de la s‚quence des patterns.

	C	Volume Change		Fixe le Volume Courant … $XY

	D	Pattern Break		Passe … la position suivante dans la
						s‚quence et commence le pattern … la ligne
						10 * X + Y, c'est un codage en BCD.
						Donc le num‚ro apparait en d‚cimal

	E	Effets Etendus		Effet Etendu no X, paramŠtre Y

	F	Set Speed/Tempo	Si 0 < $XY <= 32, fixe la vitesse (Speed)
									  entre deux lignes
						Si $XY > 32, fixe le Tempo.

	Effets Etendus EX:

	0	Set Filter			Y : 1 = On,  0 = Off
							(ne fonctionne que sur certains types
							trŠs particuliers d'Amiga)

	1	Fine Portamento Up		Idem Portamento Up, sauf que la
							p‚riode n'est diminu‚e de $Y qu'une
							seule fois par ligne (au 1er 'tick')

	2	Fine Portamento Down	Idem Portamento Down, sauf que la
							p‚riode n'est augment‚e de $Y qu'une
							seule fois par ligne (au 1er 'tick')

	3	Set Glissando Control	Y : 1 = On,  0 = Off
							A utiliser avec le Tone Portamento
							Si Off, on a un Tone Portamento normal
							sinon le glissement entre les deux
							p‚riodes se fait demi-ton par demi-ton

	4	Set Vibrato Control		Y Fixe le type de courbe utilis‚e pour
							le Vibrato :
								0:	Sinuso‹de (par d‚faut)
								1:	Ramp Down
								2:	Onde Carr‚e

								+4:	pour ne pas r‚initialiser
								la courbe pour une nouvelle note

	5	Set Fine Tune			Y Fixe le Fine Tune du Sample :
							de 0 … 15  <=> de 0 … 7 et -8 … -1
										huitiŠmes de demi-ton

	6	Pattern Loop			$Y vaut 0 pour fixer le d‚but de la
							boucle. Sinon, c'est le nombre de fois
							… r‚p‚ter jusqu'… cette position.

	7	Set Tremolo Control		Fixe le type de courbe utilis‚e pour
							le Tremolo. Idem commande $E4

	8	Set Pan Position		$Y Fixe la balance de la voie :
		( Parfois Stop )		$0 Gauche...$7 Milieu...$f Droite

	9	Retrig Note			Rejoue la note plusieurs fois entre
							deux lignes. $Y est le nombre de
							'ticks' au bout desquels on rejoue
							la note. Donc avec un Speed de 6
							Si on indique 3, la note ne sera rejou‚e
							qu'une seule fois.
							Avec un Speed de 8, si on indique 2
							la note sera rejou‚e 3 fois de plus

	A	Fine Volume Slide Up	Idem Volume Slide Up, sauf que le volume
							n'est augment‚ de $Y qu'une seule fois
							par ligne (au 1er 'tick')

	B	Fine Volume Slide Down	Idem Volume Slide Down, sauf que le
							volume n'est diminu‚ de $Y qu'une seule
							fois par ligne (au 1er 'tick')

	C	Note Cut				Coupe la note (Volume 0) au bout
							de $Y 'ticks' dans la ligne. Cela permet
							de faire des notes extrˆmement courtes.

	D	Note Delay			Ne joue la note qu'au bout de $Y 'ticks'

	E	Pattern Delay			Passe au pattern suivant au bout de $Y
							lignes.

	F	Funk It				Vitesse en $Y
		Invert Loop

Les positions st‚r‚o s'enchainent comme ceci :
----------------------------------------------

	Left - Right - Right - Left - Left - Right - Right - Left


Les diff‚rents Chunk possibles sont :
-------------------------------------

    Chunk	   Nombre de Voies		Tracker			Extensions

	M.K.			4		Noise/Pro-Tracker		.MOD/.NST
	M!K!			4		Noise/Pro-Tracker		.MOD/.NST
	M&K&			4		Noise/Pro-Tracker		.MOD/.NST

	M.K.			8		Grave Composer			.WOW

	RASP			4		StarTrekker			.MOD/.NST
	FLT4			4		StarTrekker			.MOD/.NST
	FLT8			8		StarTrekker			.MOD/.WOW/.OCT

	6CHN			6		FastTracker			.MOD
	8CHN			8		FastTracker			.MOD/.WOW/.OCT
	xxCH			xx		FastTracker			.MOD

	CD81			8		Octalyser				.MOD
	OCTA			8		Octalyser				.MOD/.WOW/.OCT

	FA04			4		Digital Tracker		.MOD
	FA06			6		Digital Tracker		.MOD
	FA08			8		Digital Tracker		.MOD

	????			4		Old 15 Samples Module	.MOD/.SD0
