***********************************************************************
***********										***********
***********										***********
***********  Descrition des diffrents 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 code 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			Squence des Patterns
Song_Chunk		1080			  4			Module Chunk

Song_Patterns		1084		Nb_Patterns*Pattern_Size

Song_Samples		1084						Samples 8 bits Signs
				+Nb_Patterns*Pattern_Size


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

	Le Nombre de patterns dans un module est le numro de pattern le plus
haut + 1  car la numrotation des patterns commence  0. Il faut pour le
connaitre scanner la squence 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 dcide 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
dtecter, il faut calculer la longueur qu'aurait le fichier si c'tait un
module 15 samples et comparer avec la longueur relle.
	De mme 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 aprs le Chunk. Le premier mot donne le nombre
de lignes d'un Pattern.

	La Frquence de Base des Samples (DO-2) est 8363 Hz.
	Le Tempo par dfaut est 125 et la vitesse 6.

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

	Le Morceau (Song) est compose de x positions auxquelles on associe un
numro de pattern au travers de la squence des patterns (Song_Sequence)

	Dans la squence, chaque numro de pattern est cod sur un octet.

	Un pattern est constitu de 64 lignes de x voies, chaque colonne est
code sur 4 octets de la mannire suivante :

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

	pppppppppppp : Priode de la note		0 = pas de Note
	ssssssss : Sample					de 1  31
	eeee : Effet
	aaaaaaaa : Paramtre de l'Effet


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

	L'octet de paramtre est not XY

  Numro	  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 priode de $XY  chaque
						'tick' de chaque ligne

	2	Portamento Down	Diminue la Hauteur de la Note
						en augmentant sa priode de $XY  chaque
						'tick' de chaque ligne

	3	Tone Portamento	'Liaison' entre deux Notes, Rapproche la
						priode actuelle de la priode de la Note
						dsire en l'augmentant ou la	diminuant de
						$XY  chaque Ligne (vitesse)

	4	Vibrato			Fait osciller la priode ( 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, mme 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 dpart 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 numro $XY
						de la squence des patterns.

	C	Volume Change		Fixe le Volume Courant  $XY

	D	Pattern Break		Passe  la position suivante dans la
						squence et commence le pattern  la ligne
						10 * X + Y, c'est un codage en BCD.
						Donc le numro apparait en dcimal

	E	Effets Etendus		Effet Etendu no X, paramtre 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
							trs particuliers d'Amiga)

	1	Fine Portamento Up		Idem Portamento Up, sauf que la
							priode n'est diminue de $Y qu'une
							seule fois par ligne (au 1er 'tick')

	2	Fine Portamento Down	Idem Portamento Down, sauf que la
							priode n'est augmente 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
							priodes se fait demi-ton par demi-ton

	4	Set Vibrato Control		Y Fixe le type de courbe utilise pour
							le Vibrato :
								0:	Sinusode (par dfaut)
								1:	Ramp Down
								2:	Onde Carre

								+4:	pour ne pas rinitialiser
								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
										huitimes de demi-ton

	6	Pattern Loop			$Y vaut 0 pour fixer le dbut de la
							boucle. Sinon, c'est le nombre de fois
							 rpter jusqu' cette position.

	7	Set Tremolo Control		Fixe le type de courbe utilise 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 rejoue
							qu'une seule fois.
							Avec un Speed de 8, si on indique 2
							la note sera rejoue 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 extrmement 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 stro s'enchainent comme ceci :
----------------------------------------------

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


Les diffrents 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
