All pastes #83259 Raw Edit

Untitled

public text v1 · immutable
·published 2006-07-09 15:42 UTC
rendered paste body
Guitar Pro 4.06 Spins Format Description
FILE GUITAR PRO v4.06

Version:   1.0RC1 French
Author:    Laurent Vromman
Property: Arobas-Music

SYNOPSIS

	I. GENERAL INFORMATION
	II.  POURED
	III. STRUCTURE OF THE FILE
	IV.  HEADERS
		 1. Version
		 2. Information in connection with the partition
		 3. Lyrics
		 4. Other information in connection with the partition
	V. BODY OF THE FILE
		 1. Measurements
		 2. Tracks
		 3. Couples measurement-tracks
		 4. Time
		 5. Diagram of agreement
 		 6. Effect over time
 		 7. Event related to the table of mixing
 		 8. Note
 		 9. Effects on the note
 		 	a. Effects on the note
 			B. Apogiatures
 		10. Bends
 	VI.  DIAGRAMS Of AGREEMENTS	


I. GENERAL INFORMATION

The values of the “whole” type are stored on 4 bytes.
The values of the type “small entirety” are stored on 2 bytes.
The values of the type “whole court” are stored on 1 byte.

The values of the “whole” type and “entirety short” presented in this document are written from left to right weakest byte of the weight to the byte of weight most extremely.

The colors are stored on 4 bytes in the following way, the data being written from left to right weakest byte of the weight to the byte of weight most extremely:
	   __
	3 |__| < - white Byte, it is worth 0x00 systematically;
 	2 |__| < - Blue;
 	1 |__| < - Green;
 	0 |__| < - Red.

When this document uses the expression character strings, it is acted in fact of a doublet including/understanding a first byte coding the number “of characters of the chains (limited consequently to 255 characters), followed “characters themselves.

The notes of music are stored in the form of entireties.  C (0) is worth 0, and each incrementing of the variable represents a half tone:
	- Do# (0) = 1;
	- C (1) = 12;
	- Semi (2) = 28…
	

II. POURED

The format Guitar Pro evolved/moved progressively with the evolutions of the software to integrate the new functionalities that this one proposes. This document only describe the structure of the files Guitar Pro version 4.06.


III. STRUCTURE OF THE FILE

	 _______________________________________________________
	| | |
	| | Version |
	| |_______________________________________________|
	| | |
	| | Information on the fingering chart |
	| |_______________________________________________|
	|Headers| |
	| | Lyrics |
	| |_______________________________________________|
	| | |
	| | Other information on the fingering chart |
	|_______|_______________________________________________|
File | | |
	| | Measurements |
	| |_______________________________________________|
	| | |
	| | Tracks |
	| |_______________________________________________|
	| | | | |
	| | | | Note 1 |
	|Corps | | Time 1 |_______________|
	| | | | |
	| | | | Note I… |
	| | Couple |_______________|_______________|
	| | Measurement-track | | |
	| | | | Note 1 |
	| | | Time I… |_______________|
	| | | | |
	| | | | Note I… |
	|_______|_______________|_______________|_______________|
	| |
	| Diagrams of agreements |
	|_______________________________________________________|


IV. HEADERS

The difficulty of reading of the files Guitar Pro lies in the variable face of the heading of the file. The reading of the file must thus be sequential.


	Structure
   	 _
	|
	| Version
	|_
	|
	| Information on the fingering chart
	|_
	|
	| Lyrics
	|_
	|
	| Other information on the fingering chart
	|_

	
	1. Version

0x00000000: chains of 30 characters (without counting the short entirety annoncant the real length of the chains as explained out of I. GENERAL INFORMATION) representing the number of version. Only N first characters (N being given by the value described précédement) only are to be considered.

The various possible values to date are:
	FILE GUITAR PRO v1
	FILE GUITAR PRO v1.01
	FILE GUITAR PRO v1.02
	FILE GUITAR PRO v1.03
    	FILE GUITAR PRO v1.04
    	FILE GUITAR PRO v2.20
    	FILE GUITAR PRO v2.21
    	FILE GUITAR PRO v3.00
    	FILE GUITAR PRO v4.00
    	FILE GUITAR PRO v4.06
    	FILE GUITAR PRO L4.06
    	
Only the specifications relating to the version “FILE GUITAR PRO v4.06” are described here.

From this point (0x0000001F), the data are written sequentially without precise address.


	2. Information in connection with the partition

Following information present is formed it of a storage block containing:
	- an entirety containing the size of stored information + 1;
	it chains of caratères containing the data.
	
This structure imposes that strings null will be written 01 00 00 00 00 in the file.

Information concerned is, in the reading order in the file:
	- The title of the partition;
	- Under title of the partition;
	- The interpreter of the piece;
	- The album from which the piece is extracted;
	- The author of the piece;
	- The copyright;
	- The name of the author of the fingering chart;
	- A line “instructions” in connection with the fingering chart.
	
The following zone contains information relating to the field “note” in the properties of the partition. 
It begin with an entirety containing the number of lines of Nb_Notice notes, then Nb_Notice time the structure of data described précédement with in each one of them the contents of the lines of note.

The file contains then an entirety runs (Int Shorts) determining the attribute “TripletFeel” of the partition. If TripletFeel is activated, the value is 1, if not the entirety is worth 0.


	3. Lyrics
	
The zone following memory contains the lyrics associated with the partition. 

CAUTION: the character strings present in this section and this section only do not answer the model presented in I. GENERAL INFORMATION, but are written directly.

The zone lyrics starts with an entirety giving the number of track with which the lyrics are associated. 
Then, for each of the 5 lines of lyrics managed by Guitar Pro 4, the file contains an entirety containing the number of caratères in the chains followed by the chains itself.


	4. Other information in connection with the partition
	
Following information is:

Tempo:			Entirety

The armour:			Entirety runs
	This value codes the armour at the beginning of partition. It is coded as follows:
		- 0: C
		- 1: G (#)
		- 2: D (##)
		- -1: F (b)…

The octave: 			Entirety runs
	0 at the base, 8 for 8va.  This functionality is not yet
	used, but is present in preparation for a revision of format GP4.

Channels midday:	
	Table of channels midday.  There are 4 ports and 16 channels, the channels are
	stored in this order: 
		port1/canal1 - port1/canal2… port1/canal16 - port2/canal1…
			
		Each element of the table has the following form:
			Instrument: 	Entirety
  			Volume: 	Entirety runs
  			Balance: 	Entirety runs
  			Chorus: 	Entirety runs
  			Reverb: 	Entirety runs
  			Phaser: 	Entirety runs
  			Tremor: 	Entirety runs
  			
  			blank1: 	Entirety runs => Upward compatibility 
  							with version 3.0
  			blank2:		Entirety runs => Upward compatibility 
  							with version 3.0

The number of measurements:   Entirety
The number of tracks:    Entirety



V. BODY OF THE FILE
	 _________________________________
	|					
	| Measurements				
	|_________________________________
	|					
	| Tracks				
	|_________________________________
	| | |	
	| | | Note 1 
	| | Time 1 |_
	| | |	
	| | | Note I…
	| |_______________|_ couples
	| Measurement-track | |        
	| | | Note 1
	| | Time I… |_
	| | |	
	| | | Note I…
	|_______________|_______________|_




	1. Measurements
	
Measurements are written the ones following the others, their number having been specified aparavant.

The first byte is the heading of measurement. It lists information present in measurement in progress.

    __
 7 |__| < - Presence of a double bar;
 6 |__| < - Tonality of measurement;
 5 |__| < - Presence of a marker;
 4 |__| < - Number of fine alternative;
 3 |__| < - Fine of reference;
 2 |__| < - Beginning of reference;
 1 |__| < - Denominator of the signature;
 0 |__| < - Numerator of the signature.
 
 Each one of its element is present only if the bit which corresponds to him is to 1.
 The various elements are written (if they are present) weakest bit of the weight to the bit of weight most extremely. Make exception the double bar and the beginning of reference whose only presence is enough, auncune additional information is not nécéssaire.
 
Numerator of the signature: 	Entirety runs
 	Numerator of the signature of the track
 
Denominator of the signature: 	Entirety runs
 	Denominator of the signature of the track
 		
End of reference: 		Entirety runs
 	Reference until the beginning of preceding reference numbers.
 	
Number of fine alternative:	Entirety runs
 	The definition even speaks about it.
 	
Marker:			Object
 	The storage of the markers is done in two times. First of all one finds
 	an entirety to give the longor of the name of the marker + 1, then the chain of
 	caratères containing the name of the marker itself. One finds then
 	the color of the marker.
 	
Tonality of measurement: 	Entirety runs 
 	This value codes a change of armour on the partition in progress. It
 	is coded as follows:
		- 0: C
		- 1: G (#)
		- 2: D (##)
		- -1: F (b)…
 	
	
	2. Tracks
	
Measurements are written the ones following the others, their number having been specified aparavant.

The first byte is the heading of measurement. It specifies certain information concerning the track.

    __
 7 |__| < - null Bit;
 6 |__| < - null Bit;
 5 |__| < - null Bit;
 4 |__| < - null Bit;
 3 |__| < - null Bit;
 2 |__| < - Track Banjo;
 1 |__| < - Track for a guitar 12 cords;
 0 |__| < - Track Battery.
	
Name:				Chains
	Chains of 40 characters containing the name of the Track
	
A number of cords:		Entirety
	An entirety containing the number of cords of the track.
	
Tuning of the cords:		Table of entireties 
	The tuning of the cords E st stockée sur un  tableau de 7  entiers,  les
	"Nombre   de  cordes"  premiers   entiers  seulement  étant   réellement
	utilisés. Les cordes sont stockées de la plus aigue à la plus grave.
	
Port:				Entier
	Le numéro du port MIDI utilisé
	
Canal:				Entier
	Le numéro du canal MIDI utilisé. Le canal 10 est le canal batterie.
	
CanalE:				Entier
	Le numéro du canal MIDI utilisé pour les effets.
	
Nombre de frets:		Entier
	Le nombre de frets de l'instrument.
	
Hauteur du capodastre:		Entier
	Le numéro de  fret sur laquelle  un éventuel capodastre  est présent. Si
	aucun capodastre n'est utilisé, la valeur est 0x00000000.
	
Couleur de la piste:		Couleur
	La couleur d'affichage de la piste dans la zone de gestion des pistes.
	
	
	3. Couple mesures-pistes
	
A la suite du fichier sont écrits la liste des temps par piste et par mesure, et
à  la  suite  de  chaque  temps  sont  écrites  les  notes  qu'il  contient.  La
succession des couples mesures-pistes se fait dans l'ordre suivant:

	Mes 1/Pis 1 - Mes 1/Pis 2 - ... - Mes 1/Pis NbPiste - Mes 2/Pis 1 - ...
	
L'écriture d'une mesure-piste se fait en 2 temps. On écrit d'abord le nombre  de
temps contenu dans la piste:

Nombre de Temps:		Entier
	Entier indiquant le nombre de temps que contient la mesure-piste.

On écrit directement ensuite le détail de chacun de ces temps.


	4. Temps
	
Le premier  octet est  l'entête du  temps. Il  liste les informations  présentes
dans le temps en cours.

    __
 7 |__| <- Bit nul;
 6 |__| <- Etat: Vrai si le temps est vide ou si il s'agit d'un silence;
 5 |__| <- Le temps est un n-olet (triolet, quintolet, etc...);
 4 |__| <- Présence d'un évenement lié à la table de mixage;
 3 |__| <- Présence d'effets;
 2 |__| <- Présence d'un texte;
 1 |__| <- Présence d'un diagramme d'accord;
 0 |__| <- Notes pointées.
 
 
Etat:				Entier court
 	Si le 6-ième bit  est vrai, on commence  par écrire l'état du  temps. La
 	valeur est 0x00 si le temps est vide et 0x02 si le temps est un silence.
 		
Durée du temps:			Entier court
 	La durée de base du temps est la croche, qui est équivalent à une  durée
 	du temps de 1. On obtient ainsi les relations suivantes:
 	
 		* -2:	Ronde;
 		* -1:	Blanche;
 		*  0:	Noire;
 		*  1:	Croche;
 		*  2:	Double croche;
 	 	*  3:	Triple croche;
 	 	* ...
 	 	
N-olet:				Entier
 	Si le 5ième bit de l'octet d'en-tête est vrai, cet entier correspond  au
 	'n' de 'n-olet':
 		* 3: triolet;
 		* 5: quintolet;
 		* 6: sextolet;
 		* 7: heptolet;
 		=> 9, 10, 11, 12 et 13.
 		
Diagramme d'accord:
 	Si la présence d'un  diagramme d'accord est indiqué  par le bit n°  1 de
 	l'en-tête, il est enregistré à cet endroit. Le détail de cette opération
 	est spécifié au paragraphe  V.5. Diagramme d'accord.
 	
Texte:	
 	Si la présence d'un texte est  indiqué par le bit n° 2 de  l'en-tête, il
 	est enregistré à cet  endroit. Il se comporte  de la même façon  que  la
 	plupart des chaines  précédentes. 
 	On trouve d'abord un entier codantla longueur du texte + 1, suivi de  la
 	chaine contenant  le  texte au  format décrit  dans I. GENERALITES.
 	
Effet sur le temps:
 	Si la présence d'un  effet est  indiquée par le bit n°  3  de l'en-tête,
 	il  est enregistré  à cet  endroit. Le  détail de  cette opération   est
 	spécifié  au paragraphe  V.6. Effet sur le temps.  Les  effets  sur   le
 	temps regroupent par exemple les tremolos bar, les brushs, ....
 
Evenement lié à la table de mixage:
 	Si la présence d'un  évenement lié à la table de mixage est indiqué  par
 	le bit n°  4 de  l'en-tête, il est enregistré  à cet endroit. Le  détail
 	de cette opération  est spécifié au  paragraphe V.7. Evenement  lié à la
 	table de mixage.
 
Note:
 	La note  elle-même est  enregistrée à  cet endroit.  Le détail  de cette
 	opération est spécifié au paragraphe V.8. Note.


 		5. Diagramme d'accord

En-tête:			Entier court
	Cette valeur vaut 0x01, indiquant un accord au format Guitar Pro 4

Dièse: 				Entier court
	Détermine si l'accord est affiché "en dièse" ou "en bémol".
	
Blank1,
Blank2,
Blank3: 			Entiers courts	
	Octets  blancs  nécessaires  à  la  compatibilité  ascendante  avec  les
	versions 3 du format.
	
Fondamentale:			Entier court
 	* -1 pour les accords perso
 	*  0: Do
 	*  1: Do#...
 	
Majeur/mineur:			Entier court
	Détermine le type d'accord comme suit:
		-  0: M
		-  1: 7
		-  2: 7M
		-  3: 6
		-  4: m
		-  5: m7
		-  6: m7M
		-  7: m6
		-  8: sus2
		-  9: sus4
		- 10: 7sus2
		- 11: 7sus4
		- 12: dim
		- 13: aug
		- 14: 5

Neuf, Onze ou Treize: 		Entier court
	Permet de déterminer si  l'accord va jusqu'à la  9ième, la 11ième ou  la
	13ième.

Basse: 				Entier
	Note  la  plus  basse  de  l'accord.  Elle  détermine  les renversements
	d'accord.

Dimuntion/Augmentation		Entier
	Tonalité augmentée ou diminuée en lien avec 9/11/13:
		0: juste
		1: augmentée
		2: diminuée

add: 				Entier court
	Permet  de  déterminer  si  un 'add'  (note  ajoutée)  est  présent dans
	l'accord.

Nom: 				Chaine
	Chaine de 20 caractères contenant le nom de l'accord.