***********************************************************************
***********										***********
***********										***********
***********  Descrition des diffrents formats SoundTracker	***********
***********										***********
***********		  Formats Amiga 4  32 voies			***********
***********										***********
***********										***********
***********		    par Simplet / ABSTRACT			***********
***********										***********
***********************************************************************


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 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.

	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.

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 :	000spppppppppppp	Octet 2 :	sssseeee	Octet 3 :	aaaaaaaa

	pppppppppppp : Priode de la note		0 = pas de Note
	sssss : 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	Phasor Effect ?	Connait pas

	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 Panoramic			Y Fixe la balance de la voie :
		( Parfois Stop )		0 Gauche...8 Milieu...15 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		GravePlayer			.WOW

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

	6CHN			6		FastTracker			.MOD
	8CHN			8		FastTracker			.MOD/.WOW/.OCT
	16CH			16		FastTracker			.MOD
	32CH			32		FastTracker			.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
