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.