Semaine 2


26/03/2001


piste XML -> SVG de François Chastanet

http://francois.chastanet.free.fr/musiquexml/MusiqueXML.htm
le fichier SVG dont on voit l'aperçu dans Batik a été produit à partir de la description d'une partition dans le format MusiXML
Ce logiciel a été réalisé en 6 semaines, pour le compte du module Sar6 du DESS ISI LOG. Nous étions 3, François Chastanet, Antoine
Paolini et François-Xavier Vila.
Les nouvelles recommendations du W3C sur XML(eXtended Meta Language) et SVG(Scalar Vector Graphics) nous ont donné
 l'idée de créer un petit outil qui permettrait de transformer une partition de musique écrite dans le formalisme XML en une partition de
musique affichable dans le formalisme SVG. Cette dernière peut être visualisée avec 2 outils qui sont Batik et Adobe SVGViewer.
Notre choix de DTD pour écrire la partition s'est porté sur le format MusiXML, il en existe une quinzaine d'autres, mais c'était le
seul à avoir une grammaire au format XMLSchema, et beaucoup de points sont intéressants dans l'approche de ce format.

http://xml.apache.org/batik/
Batik is a Java based toolkit for applications that want to use images in the Scalable Vector Graphics (SVG) format for various
purposes, such as viewing, generation or manipulation.
The project's ambition is to give developers a set of core modules which can be used together or individually to support specific
SVG solutions. Example modules are, SVG parsers, SVG generators and SVG DOM implementations. Another ambition for the
Batik project is to make it highly extensible (for example, Batik allows the developer to handle custom SVG tags). Even though the
 goal of the project is to provide a set of core modules, one of the deliverables is a full fledged SVG Viewer implementation which
validates the various modules and their inter-operability.

http://www.lcs.mit.edu/

Téléchargement de xerces, musiquexml, batik
Demander unzip -> site de RedHat puis rpm -Uvh (connexion sous root)
 

Biblio:

Compilation d'articles par un thésard de Gérarg Assayag sur les réprésentations musicales en XML.


27/03/2001

 

Sessions d'installations:

[barkati@ceres musiqueXML]$ make install
Compilation du module : src/Util.o
Compilation du module : src/MusicElement.o
Compilation du module : src/parser/MusicHandler.o
g++: Internal error: Processus arr?t? (program cc1plus)
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make: *** [src/parser/MusicHandler.o] Erreur 1

[barkati@ceres musiqueXML]$ make install
Compilation du module : src/parser/MusicHandler.o
Compilation du module : src/parser/MusicParser.o
Compilation du module : src/parser/GlyphHandler.o
Compilation du module : src/motor/SVGGenerator.o
Compilation du module : src/motor/ConstantMusicLayer.o
Compilation et edition de liens de l'éxécutable
effacement des fichiers temporaires
/bin/sh: musiquexml: command not found
make: *** [demo1] Erreur 127

[barkati@ceres musiqueXML]$ make install
Compilation du module : src/Util.o
Compilation du module : src/MusicElement.o
make: *** [src/MusicElement.o] Interruption
 

[barkati@ceres MusiqueXML]$ ./musiqueXML/musiquexml
Fatal Error at file 0x8076d08, line 0, char 0
  Message: 0x8076df8
parsing effectué en 158 ms
***********************
partition de musique
***********************
Erreur de segmentation
 

Souhait Nabil:

Pouvoir ajouter une partition musicale à un document html comme on ajoute une image, c'est-à-dire disposer d'un format reconnu par les navigateurs.
 

Articles Nabil:

Notation musicale informatisée:

NIFF (Notation Interchange File Format):
CMN (Common Music Notation):
SMDL (Standard Music Description Language):
Comparaison de logiciels:
Représentation musicale numérique:
Développements particuliers:



28/03/2001

 

Articles Nabil (suite):

Travail Coopératif:

Typographie générale:

Typgraphie numérique:

Lecture du rapport sur MusiqueXML:

Il y a-t-il des informations de niveau graphique dans la DTD MusiXML?
Génère un fichier graphique vectoriel SVG en interprétant un fichier musical au fomat MusiXML.
Ce convertisseur programmé en C++ fonctionne mais donne un résultat graphique médiocre. Il analyse le fichier partition MusiXML pour construire une structure de données simple, à partir de laquelle le moteur
 

Sessions de compilation:

MusiqueXML:

compilation musiquexml -> libs et includes xerces dans son répertoire
build.sh pour batik -> unzip classes java
téléchargement unzip chez RedHat -> ftp ftp.redhat.com
téléchargement ftp bi puis impression de rapport.doc "Musique - XML vers SVG, un générateur de partitions de musique"

Echec à la compilation de batik svgviewer:

[root@ceres batik]# sh build.sh compile
Searching for build.xml ...
Buildfile: /home/barkati/MusiqueXML/batik/build.xml

init-args:

init:

compile:
    [javac] Compiling 1104 source files to /home/barkati/MusiqueXML/batik/classes
# # An unexpected exception has been detected in native code outside the VM.# Program counter=0x404806c3
#
# Problematic Thread: prio=1 tid=0x804dc98 nid=0xc3e runnable
#
# # An unexpected exception has been detected in native code outside the VM.# Program counter=0x4042f416
#
# Problematic Thread: prio=1 tid=0x804dc98 nid=0xc3e runnable
#
build.sh: line 25:  3134 Abandon                 $JAVA_HOME/bin/java $ANT_OPTS -classpath $CP org.apache.tools.ant.Main -Dant.home=$ANT_HOME $*

SVG pretty-printer:

[barkati@ceres batik-1.0beta2]$ java -jar batik-svgpp.jar

 SVG pretty-printer - (C) Apache Software Foundation
  http://xml.apache.org/batik

Syntax:
 svgpp [options] <input file> [<output file>]

Available Options:
-no-format
 Disables any formatting. Useful for doctype modifications,
 newline conversion, ...
-xml-decl <string>
 The value to set to the XML declaraction.
-system-id <string>
 The value to set to the system ID of the doctype.
-doc-width <number>
 Sets the document preferred number of columns. The default is 80.
-tab-width <number>
 Sets the tabulation width. The default is 4.
-public-id <string>
 The value to set to the public ID of the doctype.
-newline (cr | cr-lf | lf)
 Specifies the type of newline to output. Possible values are:
 cr (mac), cr-lf (dos), lf (unix - the default).
-doctype (change | remove)
 Removes or changes the DOCTYPE declaration. change is used
 in conjonction with the -public-id and -system-id options.
 

Idées:

Demander le type des polices ps utilisées par eppaj: polices .art de Fontographer plutôt que Type1 car en ascii donc plus facile à lire.
Demander un utilitaire de synchronisation de fichier entre kindi et ceres.
Chercher dans quelle mesure SVG intègre les polices.
 

Discussion ESJ:

Format adapté quelques soient les intentions: musicales (fouille de données) ou graphiques (impression ou affichage).
Représentation graphique sérieuse:
2 fichiers: 1 pour les notes strictement (la musique), 1 pour la mise en page.
Le deuxième fichier serait une sorte de feuille de style pour les propriétés communes, avec une possibilité d'intervention spécifique du type "à la 57e mesure, décaler comme ceci", pour permettre une porte de sortie pour les mises en page très spéciales, car il n'existe pas l'algorithme d'auto-justification parfait.
 


29/03/2001

 

Rapport des actions effectuées pour l'utilisation du projet MusiqueXML:

Installation de musiquexml, un traducteur XML vers SVG:

Installation de Java 1.3 nécessaire à batik (version 1.2 comopatible aussi):

Installation de batik, un viewer de fichiers SVG sous Linux:

Résumé:

Typographie Coopérative de Partitions Musicales par Navigation Interprétative de Contours

Thèse de doctorat de l'Université Paris 6 spécialité informatique de Nabil Bouzaïene, juillet 2000.

Introduction: plusieurs branches de l'informatique: typographie numérique, normes de codage, et réseau.
1 Edition des signes musicaux
1.1 Introduction: historique, polices vectorielles postscript, et signes contextuels.
1.2 Evolution de la notation
1.3 Qualité graphique des caractères
1.4 Caractères contextuels
1.5 Conclusion: plusieurs polices, zooms infinis, et procédés dynamiques et interactifs.
2 Edition de la partition
2.1 Introduction: graveur équilibre horizontal, vertical, profondeur, et global; algorithme de justification.
2.2 Etat de l'art
2.3 Représentation interne de la partition
2.4 Opérations courantes d'édition
2.5 Placement des notes
3 Edition téléchargeable
3.1 Introduction: petit programme et standardisation.
3.2 Java
3.3 Problème d'accès aux ressources locales
4 Edition distribuée
4.1 Introduction: visualiser et modifier un document à plusieurs, collecticiel synchrone réparti.
4.2 Quelques applications synchrones réparties
4.3 Pourquoi éditer à plusieurs
4.4 Echos graphiques
4.5 Implémentation
Conclusion: Edition dans les supports de l'avenir, archivage des partitions en XML, protocole précis pour la synchronisation des systèmes coopératifs.
 

Idées:

Chercher l'équivalent des feuilles de style en XML, et déterminer leur limites et leurs possibilités; CSS
Oracles XML Schema parser 0.9 Alpha
 

Navigation:

SVG Resources:
http://wdvl.internet.com/Authoring/Languages/XML/SVG/
Transforming XML into SVG:
http://www-106.ibm.com/developerworks/education/transforming-xml/xmltosvg/index.html
Mapping NIFF to XML:
http://www.s-line.de/homepages/gerd_castan/compmus/notationformats_e.html#NIFF
The MusiXML DTD (impression):
http://www.s-line.de/homepages/gerd_castan/compmus/MusiXML.DTD


30/03/2001


Oracles XML Schema parser 0.9 Alpha:
http://technet.oracle.com/tech/xml/schema_java/

Rapport hebdomadaire 2
 

Idées:

Différence entre DTD et XML Schema?
 

Résumés:

Compilation d'articles par un thésard de Gérarg Assayag sur les réprésentations musicales en XML:

Representing Music Using XML; Michael Good, Recordare
L'information musicale est structurée différemment pour optimiser chaque application. MusicXML est un langage d'échange de notations musicales occidentales basé sur XML. "Developping a single music XML languae could greatly simplify the tasks of music information retrieval."
MCML - Music Contents Markup Language; J. Schimmelpfennig & F. Kurth, University of Bonn
Content based navigation in digital music files, links, query results.
XML4MIR: Extensible Markup Language for Music Information Retrieval; Perry Roland, University of Virginia, Digital Library Reseach Group
Information != data. Standards are good for scholars and buisness. Many representations define their apporoach too narrowly (printing, performance), other too broadly (SMDL).
XML is a platform-independent open standard, a meta-language designed to support the definition of community-specific languages, powerful, easy to implement, international (Unicode),with a lot of free tools. Good for music representation because it is grammar-based, declarative, structured hierarchically, modular, extensible, human-readable, and separates content and structure from presentation and behavior. It is possible to apply transformations to groups of objects. Printing perhaps requires the most representationally complete encoding, while analysis requires less, and automated performance less still.
 

Direction provisoire:

Il faudrait développer une norme de description des partitions musicales, idéalement dans le but de la soumettre au Web Consortium. Une fois acceptée et integrée dans les navigateurs, elle permettrait d'insérer dans un document HTML une partition comme on insère une image. Cela pose un certain nombre de problèmes techniques et conceptuels, surtout si l'on souhaite diversifier les applications d'une telle structure de données, comme une impression à l'écran et sur papier de qualité maximum, l'extraction de connaissances, et un encombrement minimum en mémoire pour le réseau. Je pourrais programmer une DTD en XML pour décrire la structure logique d'une partition, et un appelet en Java pour analyser syntaxiquement ces partitions XML et générer de manière automatique un code en SVG (une norme graphique vectorielle pour le Web en passe d'être adoptée) pour les visualiser. Une partie de ce travail a déjà été effectuée, puisqu'il existe déjà des DTD pour les partitions (par exemple MusiXML de Gerd Castan), ainsi qu'un convertisseur de fichiers MusiXML vers SVG (musiquexml de François Chastanet), qui sont donc succeptibles d'être réutilisés.

Si cette direction se confirme, quelques points doivent être soulevés. Au niveau pratique, bien les principaux navigateurs n'intègrent pas encore d'interprète SVG, il est envisageable de programmer des applications qui génèrent des fichiers SVG, car Adobe a développé un plug-in idoine pour Netscape et Explorer sous les plateformes Macintosh et Windows, le navigateur Amaya intègre une bonne partie de SVG, et batik permet sous Linux de visualiser les fichiers SVG. Par contre, tant que Netscape n'intègre pas SVG, il semble prématuré de développer un plug-in qui génère du code SVG. En ce qui concerne la définition structurée des partitions musicales, il existe une certaine quantité de tentavives: la quelle faut-il choisir, et doit-on la garder entièrement ou partiellement? Il faudrait établir la liste des utilisations souhaitées et les ordonner par ordre de priorité, afin de déterminer une structure de données adaptée, et de déceler d'éventuelles incompatibilités entre les objectifs. L'inclusion de polices de caractères reste un problème délicat sur le Web, il faudrait déterminer dans quelle mesure SVG est capable d'apporter une solution au besoin de polices multiples.

Les choix en cours sont les suivants:

Si le temps venait à surabonder, on pourrait étendre l'éditeur de Nabil de manière à ce qu'il génére des fichiers dans les formats précités, programmer un plug-in Netscape Linux qui convertirait les fichiers XML vers SVG, un second qui dessinerait effectivement à l'écran ces fichiers SVG, et enfin interfacer l'applet de Nabil avec ces plug-ins pour obtenir un éditeur de partition en ligne coopératif, multipolices, et conforme à des normes vectorielles et musicales précises.