***********************************************************************
***********										***********
***********										***********
***********  Descrition des diff‚rents 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 sauv‚es
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 sauv‚s
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		S‚quence 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 Sign‚s
				+ 37*Nb_S
				+192*Nb_T
				+ 32*2*(Last_Pat+1)
				+ Song_Length_Extra


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

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

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

	Chaque pattern est compos‚ de x voies (Voices), chaque voie est
associ‚e … un num‚ro de Piste (Track) grƒce … la table Song_Tracks_Seq

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

	Une piste est constitu‚e 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 : 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
