NIFF

Alain Van Kerckhoven

A l'heure où Internet s'impose comme la révolution culturelle de cette fin de millénaire, chacun éprouve un bonheur fou à communiquer et à s'échanger des données. Les bavards y causent en anglais, les graphistes en EPS ou en TIFF et les musiciens en MIDI. Le petit monde des amoureux de la musique écrite vient aussi de trouver son langage. Il s'appelle NIFF et on lui souhaite plein de bonnes choses.

Dans tout marché libre - et l'informatique, malgré les vélléités de certains éditeurs de logiciels, en est encore un - l'uniformité est un mythe et la nécessité de faire communiquer des systèmes différents repose sur l'adoption de normes.

La norme MIDI, dont l'ACME fut le premier média francophone à vous dévoiler les spécificités, démontre l'importance primordiale que peut avoir le choix d'une norme sur l'évolution d'un secteur, tant au niveau des logiciels que du matériel et, plus fondamentalement, des outils et méthodes de création musicale.

Le NIFF rejoint ainsi le MIDI dans la liste des acronymes qui feront probablement partie de notre quotidien. Ces quatre lettres se présentent d'elles-même : Notation Interchange File Format.

La genèse

Quiconque a pratiqué la gravure de partitions s'est un jour trouvé devant le problème de devoir transférer dans l'éditeur Y tournant sous OS A un fichier réalisé dans l'éditeur Z tournant sous OS B. Deux possibilités s'offraient le plus souvent à lui. La première, graphique, était d'exporter une image Postscript de la partition... totalement inexploitable dès lors musicalement.

La seconde, musicale, était d'exporter la partition sous forme MIDI et de la réimporter dans le nouveau système. Avec pour résultat la perte de toutes les composantes non MIDI... et ces composantes sont nombreuses. Elles vont de la mise en page aux nombreuses indications (éditoriales, de dynamique, de doigtés etc.) en passant par une myriade d'éléments totalement ignorés par le MIDI. Entre autres exemples, le MIDI ignore superbement si une note donnée au piano a été jouée par la main gauche ou la main droite, autrement dit si elle appartient à la portée du haut ou à celle du bas (ce qui peut influencer le choix de la portée et la direction de la hampe).

Concrètement, le temps de travail nécessité par le transfert d'un fichier à un tout nouveau système était tel que le graveur préférait souvent refaire une gravure de zéro... à la grande incompréhension de son client.

Le besoin devenait donc pressant de disposer d'outils permettant de normaliser les échanges électroniques de partitions et motiva la création du comité NIFF qui concentra, sous la coordination technique de Cindy Grande, des représentants de firmes telles que Mark of the Unicorn, Temporal Acuity Products, Midisoft Corporation, Passport Designs, Cakewalk Music Systems, Opcode Systems et San Andreas Press mais aussi d'éditeurs tels que Boosey & Hawkes, Hal Leonard Corporation, Theodore Presser et G. Schirmer.

Bref, du beau monde... et une absence remarquée : Coda qui était pourtant présent aux réunions constitutrices et qui, par la suite a sponsorisé le projet. Tous les espoirs sont donc permis.

Extensible, flexible et compact

Le comité a développé NIFF en tenant compte de plusieurs contraintes dont la principale était d'offrir un cadre ouvert aux évolutions futures de la technologie (scanning et reconnaissance optique des caractères musicaux p. ex.), mais aussi aux évolutions futures de la notation musicale.

Comme toute langue naturelle, celle-ci évolue non seulement dans le temps, mais aussi en fonction de contextes plus subjectifs. Tous les compositeurs, par exemple, n'admettent pas qu'une altération influence toutes les notes de même hauteur au sein d'une mesure. Certains, privilégiant la logique à l'usage, limitent cette influence à une note, ou à un groupe de notes. Le NIFF se devait de tolérer de telles variabilités de conceptions, voire même des systèmes de notations contenant des contradictions internes. (Ces gens-là connaissent décidemment bien les compositeurs!) Il n'y a donc pas d'interdits en NIFF.

En outre, les fichiers NIFF seront à même d'être utilisés par des éditeurs de partitions, mais aussi, en amont par des séquenceurs et en aval par des logiciels de mise en page grâce à l'inclusion de fichiers EPS (Encapsulated PostScript) et des polices de caractères utilisées.

Extensible et flexible, le NIFF se devra aussi d'être compact afin d'optimiser et de favoriser les échanges électroniques sur réseaux à bande passante étroite. Cette dernière exigence a conduit à adopter des fichiers distincts pour Macintosh et IBM-compatibles, mais dont la traduction pourra rapidement être opérée par les logiciels, de façon transparente pour l'utilisateur.

La structure

NIFF structure les données de notation musicale en trois types : graphique (subdivisé en données relatives ou non à la mise en page), MIDI (qui pourra bel et bien être intégré au fichier NIFF) et logique. Sans entrer dans le détail, sachez que la partie logique est à même de gérer ces situations que le graveur ne recherche pas spécialement.

Dans une symphonie de Mahler par exemple, il y a trois parties de trompettes notées sur trois portées distinctes (Tp.1, Tp.2 et Tp.3) lorsqu'elles jouent un canon complexe... mais rassemblées sous forme d'accords sur une portée unique (Tp.1-2-3) lorsqu'elles jouent de façon homophonique. NIFF pourra tirer son épingle du jeu, tout comme dans les cas de divisi et autres catastrophes structurelles.

Physiquement, un fichier NIFF comporte une "section de parametrage" (Setup Section) et une section de données (Data Section).

La première recense les informations relatives à l'ensemble de la partition, telles que les listes des parties (avec nom, abréviation et canal MIDI assigné), des groupes, des polices de caractères et des fichiers graphiques importés, le nom et la version du logiciel à l'origine du fichier, le tempo absolu (MIDI tics par noire), l'assignation par défaut des polices pour certaines catégories de texte (accords chiffrés, frets de guitare, marques de répétition, groupes irréguliers...)

La section de données contient elle... tout le reste, à savoir l'information non générale. Celle-ci est hierarchisée sur base de la mise en page réelle. Pas question donc de sauvegarder en NIFF une partition en rouleau de piano. La hierarchie descendante suivie par NIFF est classiquement page/système/portée/unités de temps/objets musicaux. A chacun de ces niveaux, textes et graphiques peuvent être inclus en fonction du type d'objet auquel ils appartiennent logiquement (un forte pourra ainsi se rapporter distinctement à une note, à une portée ou à un système).

Au sein de cette hierarchie, pages, systèmes et portées sont physiquement représentés par des listes composées d'un en-tête (Header Chunk) suivi de paquets (Chunks*) détaillant le contenu du niveau, prioritairement de gauche à droite et de haut en bas.

Nous n'entrerons pas plus loin dans le détail, le texte de la spécification (une bonne centaine de pages) étant disponible sur un site ftp lié à http://www.motu.com/pages/NIFF.net.html (motu?... Mark Of The Unicorn bien sûr!). Comme ces gens font apparemment bien les choses, vous y trouverez aussi un kit de développement en C (NIFF SDK) qui est gratuit, toutes plate-formes et du domaine public. Une librairie C++ est même annoncée. Voila comment s'impose un standard.

(*) Les chuncks étant les briques constitutives du NIFF, il n'est pas inutile d'en fournir la représentation qu'on peut leur en donner en C.

 typedef unsigned long DWORD;
 typedef unsigned char BYTE;
 typedef DWORD FOURCC;             /*  Four-character code */

 typedef struct {
    FOURCC chunkID;
    DWORD  chunkSize;             /* the size of field  */
    BYTE   chunkData[chunkSize];  /* the actual data of the chunk  */
} chunk;

Temse, février 1997

© Alain Van Kerckhoven, ACME, all rights reserved.