***********************************************************************
***********										***********
***********										***********
***********  Descrition des diffrents formats SoundTracker	***********
***********										***********
***********		   Format MultiTracker MTM			***********
***********										***********
***********										***********
***********		  Par Simplet / FATAL DESIGN			***********
***********										***********
***********************************************************************


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

				RsReset

MTM_Name			rs.b		22
MTM_Length		rs.l		1	* Attention
MTM_Repeat_Start	rs.l		1	*  ce format
MTM_Repeat_End		rs.l		1	* Intel de Merde !!
MTM_Fine_Tune		rs.b		1	* de 0  15  =  0  7 et -8  -1
MTM_Volume		rs.b		1	* de 0  64

MTM_Attributes		rs.b		1	* bit 0 --> 0 = 8 bits,  1 = 16 bits

MTM_Size			rs.b		1	* 37 octets


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

			    Offset   Longueur		Valeur

Song_Chunk		   0		  3		'MTM'
Song_Version		   3		  1		Version x.y  $xy
Song_Name			   4		 20		Nom du Morceau
Song_Nb_Tracks	 	  24		  2		Nombre de Pistes sauves
Song_Last_Pattern	  26		  1		Nombre de Patterns - 1
Song_Last_Position	  27		  1		Longueur du Module - 1
Song_Length_Extra	  28		  2		Taille de la zone Extra-Comment
Song_Nb_Samples	  30		  1		Nombre de Samples sauvs
Song_Attributes	  31		  1		0 pour l'instant, inutilis
Song_Nb_Beats		  32		  1		Nombre de lignes d'une piste
Song_Nb_Voices		  33		  1		Nombre de Voies  jouer
Song_Voices_Pan	  34		 32		Positions panoramiques des voies

Song_Sample_Infos	  66		 Nb_Samples*Sample_Size

Song_Sequence		  66		128		Squence des Patterns
				+ 37*Nb_S

Song_Tracks		 194		Nb_Tracks*Track_Size
				+ 37*Nb_S

Song_Tracks_Seq	 194		32*2*( Last_Pattern + 1 )
				+ 37*Nb_S
				+192*Nb_T

Song_Extra_Comment	 194		Song_Length_Extra
				+ 37*Nb_S
				+192*Nb_T
				+ 32*2*(Last_Pat+1)

Song_Samples	  	 194					Samples Non Signs
				+ 37*Nb_S
				+192*Nb_T
				+ 32*2*(Last_Pat+1)
				+ Song_Length_Extra


	La Frquence de Base des Samples est 8363 Hz.
	Le Tempo par dfaut est 125 et la vitesse 6.

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

	Le Morceau (Song) est compos 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.

	Chaque pattern est compos de x voies (Voices), chaque voie est
associe  un numro de Piste (Track) grce  la table Song_Tracks_Seq

	Dans cette table, on donne le numro de piste sur un word (format
Intel encore une fois !!!) pour chacune des 32 pistes. Le numro 0
correspond  la piste vide qui n'est jamais sauve dans le fichier.

	Une piste est constitue de 64 lignes de 3 octets chacune :

	Octet 0 :	ppppppss		Octet 1 :	sssseeee		Octet 2 :	aaaaaaaa


	pppppp : Pitch = No Note			0 = pas de nouvelle note
	ssssss : No Sample				de 1  63
	eeee	: No Effet				Compatibles ProTracker
	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
