Un fichier ABC est un simple fichier texte muni de l'extension "*.abc" et structuré suivant les règles décrites ci-après.
NB 1 : En fait l'extension "*.abc" n'est pas obligatoire mais elle est fortement recommandée, la plupart des systèmes informatiques se basant sur l'extension pour reconnaître les types de fichiers.
NB 2 : Un fichier ABC est originellement un pur fichier texte, c.à.d. que ce fichier ne contient que des caractères codés sur 7 bits (code ascii) pour ce qui concerne le codage de la musique stricto sensu. Les caractères étendus (8 bits), c.à.d. les caractères accentués, etc. sont néanmoins utilisables dans les titres, les commentaires et toutes les données non strictement musicales. Néanmoins l'évolution du standard va dans le sens de l'encodage généralisé des caractères étendus, au bénéfice de la compatibilité internationale mais au détriment de la lisibilité et de l'indexation sur le Web...
Un unique fichier ABC peut contenir plusieurs morceaux musicaux (c'est alors une compilation).
Voici un exemple de fichier ABC, contenant deux morceaux :
%abc
X:1 % index du morceau 1 (début en-tête)
T:Mon titre 1 % titre du morceau
A:Centre-Bretagne % origine géographique
R:Dañs Plinn % classification rythmique
C:(traditionnel) % compositeur
M:4/4 % mesure
K:Eb % tonalité
% ------------ Corps du premier morceau ---------------------
|: GF DG GF GF | GF DG GF G2 | GF DG GF G>G :||: GA BB AG A2| GG GF D2 D2 :|
%-------------- Fin du premier morceau ----------------------
X:2 % index du morceau 2 (début en-tête)
T:Mon titre 2
A:Centre-Bretagne
R:Dañs Plinn
C:(traditionnel)
M:4/4
K:Eb
% -------- Corps du deuxième morceau -------------------------
|: CD EG GF EF | GA GF E2 E2 :||: CE DE FE CD | EC CB, C2 C2:|
%-------------- Fin du deuxième morceau ----------------------
Chaque bloc de lignes séparé des autres blocs par une ligne vide représente un morceau individuel.
Chaque morceau individuel se compose d'un en-tête et d'un corps. On peut également trouver dans un morceau des commentaires facultatifs préfixés par %.
L'en-tête du morceau est uniquement composé de champs informatifs (les propriétés du morceau) et de commentaires éventuels. L'en-tête doit débuter par un champ X: (numéro de référence du morceau dans la compilation) suivi d'un champ T: (titre) et finir par un champ K: (tonalité) (voir : les champs informatifs). Si le fichier ne contient qu'un seul morceau, le champ X: peut être omis.
Remarque : bien que la norme 1.0 admette que le champ X: puisse être omis, c'est à l'évidence une grosse erreur et cette possibilité ne doit pas être utilisée. Le format est le format, un morceau individuel doit donc présenter strictement le même format qu'un morceau extrait d'une compilation, ne serait-ce que pour faciliter un traitement informatique fiable et efficace. Un format informatique laxiste au départ dans sa syntaxe est un format qui peinera à évoluer (cf. l'exemple d'HTML par exemple).
Le corps du morceau doit suivre immédiatement le champ K: (tonalité). Le corps correspond à la partition musicale écrite en notation ABC. Le corps est composé de lignes de musique ainsi qu'éventuellement de champs informatifs et de commentaires
Un morceau peut éventuellement ne contenir qu'un en-tête, sans corps associé, il constitue alors une simple documentation sur le morceau concerné, sans partition associée.
Les morceaux sont séparés par des lignes vides, les lignes vides sont donc interdites à l'intérieur des morceaux.
Les caractères de tabulation (ascii 9) sont considérés équivalents à des espaces. Les espaces en fin de ligne sont ignorés.
Le symbole de fin de ligne peut indifféremment être l'un ou l'autre de ceux adoptés par les trois principaux standards actuels : Macintosh (CR = ascii 13 ), Unix/Linux (LF = ascii 10), Windows (CR-LF = ascii 13 + ascii 10).
[ABC 1.7.6] un fichier peut aussi comporter un en-tête de fichier, qui est un bloc de lignes séparé du premier morceau par une ligne vide. Cet en-tête peut contenir des paramétrages s'appliquant à TOUS les morceaux contenus dans le fichier.
[ABC 2.0] un fichier peut contenir du texte libre entre les morceaux. Ce texte est séparé des morceaux par des lignes vides.
Les caractères suivants sont interdits dans les lignes de notation et sont réservés pour de futures évolutions du format : # $ * ; ? @ . Ils seront ignorés par les logiciels applicatifs. Ces caractères restent autorisés dans les champs informatifs et dans les chaînes ABC (chaînes de texte encodé).
Remarque : la norme ne prévoit pas explicitement de débuter tout fichier ABC par "%abc". C'est néanmoins une excellente habitude à prendre, conforme à de nombreux autres formats de fichiers informatiques, et qui permet l'identification immédiate d'un fichier ABC comme tel, quelle que soit son extension.