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):
-
NIFF Technical Coordinator; Cindy Grande, Grande Software, Inc., August
31, 1995
-
The Development of the Notation Interchange File Format; Cindy Grande and
Alan Belkin in CMJ 20:4, pp 33-43, Winter 1996
-
NIFF Documentation
-
NIFF SDK User's Guide; Tim Butler & Cindy Grande, 1996
-
NIFF.h; 11 nov 1995
-
NIFF listing1
-
NIFF listing2
CMN (Common Music Notation):
-
Stella: Persitent Score Representation and Score Editing in Common Music;
CMJ 17:4, pp38-50, Winter 1993
-
Common Music Notation
SMDL (Standard Music Description Language):
-
SMDL Specifications, ISO 1992?
-
A Brief Discussion of SMDL; Steph R. Mounce
Comparaison de logiciels:
-
Comparison of features between Igor and some other notation programs; 1996
-
List of known music notation programs; Dennis O'Neill MIT 1995
-
The Acquisition, Representation and Reconstriction of Printed Music by
Computer: A Review
-
On the Standardisation of Musical Editing Systems; Laurie Spiegel in CMJ
8:3 of Winter 1984. Bibliographie IHM (Interfaces Hommes-Machines) 2000
Représentation musicale numérique:
-
recueil d'articles:
-
Using Music Corpora to verify Hypotheses; Donncha O Maidin.
-
Towards a Standard Independent Score Processor; John Morris.
-
Developpement of Novel Multimedia Browser Interface Mechanisms - the first
prototype; Mickael Fernstrom.
-
A programmer's Environment for Music Analysis; Donncha O Maidin. (http://boethius.music.ucsb.edu
- This server is the site for the Society for Music Theory and music at
UC Santa Barbara. - http://www.societymusictheory.org/mto/docs/
- A Journal of Criticism, Commentary, Research, and Scholarship)
-
Music Representation and Scoring 3; CMJ 18:1, Spring 1994:
-
Music Notation Software and Intelligence; Donald Byrd ("We just need programs
that know how much they don't know.")
-
Threader: A Computer Interace for the Graphic Entry, Encoding, and Analysis
of Musical Scores; John Wm Schaffer
-
Macintosh Notation Software: Present and Future; Alan Belkin
-
The Computational Score, Languages and Programs for Music Encoding and
Processing; Francesco Giomi
-
Computer Music-Notation Software; Dr Jody Nagel, March 1997
-
Digital Notation Representation an Online Retrieval of Musical Information:
A Discussion of Current Options and Practices; Dr Elizabeth Hinkle-Turner,
Florida International University 1998
Développements particuliers:
-
Musical Notation Markup Language (MNML); Internet Research and Development
Unit (IRDU), nov 1995
-
Syntax Specification for the MNML format to be used for Internet music
transfert and music archiving (version 1.3); IRDU 1996
-
Enigma Entry Pool: File Format Publication; 2/8/96
-
The design of a Pen-Based Music Notation System; CNMAT August 8, 1995 (http://www.cnmat.berkeley.edu/
- Center for New Music and Audio Technologies)
-
The Calliope Music Notation Editor; (http://www.cl.cam.ac.uk/~wfc/calliope-further.html
- NeXT wysiwyg)
-
A Toolbox for Music Notation; Computer Printing, Storage, and Transfert
of Musical Scores; Gérard Assayag & Dan Timis, IRCAM
-
ABC2MTEX, An easy way of transcribing folk and traditional music; Chris
Walshaw, University of Greenwich, january 1997
-
Bringing Music to the Web; Jacco van Ossenbrugen (http://www.cwi.nl/~jrvosse/)
& Anton Eliens (http://www.cs.vu.nl/~eliens/)
-
Diffusion de documents électroniques: De LaTeX à HTML, WWW
et Acrobat; Cahiers GUTenber n°19 de janvier 1995:
-
Introduction Pratique à SGML; Michel Goossens (CERN Genève)
-
L'édition structurée et le World-Wide Web; Vincent Quint
(Inria) et Irène Vatton (CNRS);
-
Ecrire de la musique en TEX; Daniel Taupin (taupin@lps.u-psud.fr)
28/03/2001
Articles Nabil (suite):
Travail Coopératif:
-
Why CSCW Applications Fail: Problems in the Support of Lateral Cooperation
and the Appropriateness of CSCW Applications; Proceedings of the NEDSI,
April 1996
-
Groupdesign: Shared editing in a Heterogeneous Environment; LRI CNRS Paris-Sud
1993
-
GroupDesign: un éditeur partagé dans un environnement hétérogène;
Alain Karsenty et Christophe Tronche, LRI CNRS Université Paris-Sud
-
Cooperative Composition on the Web; eliens, martijn, bastiaan, jrvosse,
ICMC 1997 (http://www.cs.vu.nl/~hush)
-
Jamming (on) the Web; eliens, martijn, bastiaan, jrvosse (http://www.cs.vu.nl/~hush/papers)
-
Web-based Mediaspace; Nicolas Roussel 2000 (visioconférence; integrability,
flexibility and privacy; http://www-iiuf.unifr.ch/~rousseln/projects/videoSpace/)
-
Support informatique à une communication médiatisée;
Nicolas Roussel, LRI CNRS Université Paris-Sud 2000
-
Au delà du mediaspace: Un modèle pour la collaboration médiatisée;
Nicolas Roussel, LRI CNRS Université Paris-Sud 1999
Typographie générale:
-
Gravure haute fidélité; Martine Boussel ("Le traditionnel
côtoie l'innovation.")
-
Music Printing and Publishing
-
Nouveau manuel complet de Typographie; A. Frey, éd. Léonce
Laget 1979
Typgraphie numérique:
-
Ligatures & informatique; Jacques André, Irisa/Inria de Rennes,
in Cahiers GUTenberg n°22 de septembre 1995
-
L'écriture typographique: vers une prise de conscience; Ladislas
Mandel (annuaires téléphoniques, Messidor, Galfa), conférence
des Rencontres Internationales de Lure d'août 1988
-
Dynamic optical scaling and variable-sized characters; Jacques André
(Irisa/Inria) et Irène Vatton (Cnrs/Inria) in Electronic Publishing
7(4), pp231-250, december 1994
-
Automatic generation of script font ligatures based on curve smoothness
optimisation; Michael Kokula (Fraunhaufer Institute for Computer Graphics,
Darmstadt) in Electronic Publishing 7(4), pp217-229, december 1994
-
Random fonts for the simulation of handwrinting; Luc Devroye and Michael
McDougall (School of Computer Science, McGill University), in Electronic
Publishing 8(4), pp281-294, december 1995
-
Additing Fonts to the Java Runtime; Unicode Font Support in JDK 1.1; Sun
Microsystems, Inc. 1997
-
Plug-in Guide, Communicator 4.0, January 1998 (http://developer.netscape.com/docs/manuals/communicator/plugin/index.htm)
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:
-
Aller à l'adresse suivante: http://francois.chastanet.free.fr/musiquexml/MusiqueXML.htm
-
Télécharger les sources du projet: musiquexml-src.tgz
-
Décompresser les souces: tar xvzf musiquexml-src.tgz
-
Télécharger la librairie Xerces C++ Parser de Apache version
1.4.0: xerces-c1_4_0-linux.tar.gz
-
Décompresser cette librairie
-
Copier ses répertoires lib et include dans le répertoire
de musiquexml
-
Faire un lien xerces-c1_4 dans le répertoire de musiquexml vers
celui de xerces, comme ln -s xerces-c1_4 ~/xerces
-
Configurer les variables d'environnement suivantes:
-
export XERCESCROOT=~/MusiqueXML/xerces (par exemple)
-
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$XERCESCROOT/lib
-
Exécuter la commande make install dans le répertoire de musiquexml
Installation de Java 1.3 nécessaire à batik (version 1.2
comopatible aussi):
-
Désinstaller la version précédente, par exemple avec
rpm -e IBMJava118-SDK-1.1.8-5.0.i386.rpm
-
Aller sur la page http://www.javasoft.com/j2se/1.3/download-linux.html
-
Sélectionner par exemple au paragraphe SDK Downloads:
-
RedHat RPM shell script
-
One large bundle (~25MB)
-
Continue
-
Exécuter j2sdk-1_3_0_02-linux-rpm.bin pour décompresser
-
Exécuter rpm -iv j2sdk-1_3_0_02-linux-rpm pour installer
-
Faire les liens nécessaires dans /usr/bin, comme ln -s /usr/java/jdk1.3.0_02/jar
jar, aussi pour /usr/java/jdk1.3.0_02/bin/java, de même pour javac,
javadoc, javadh, et appletviewer
Installation de batik, un viewer de fichiers SVG sous Linux:
-
Aller sur la page des distributions: http://xml.apache.org/batik/dist/
-
Télécharger une version: batik-1.0beta2rc6.zip
-
Décompresser avec jar xvf batik-1.0beta2rc6.zip et pas unzip!
-
Exécuter par exemple java -jar batik-svgpp.jar ~/MusiqueXML/musiqueXML/demo1.svg
pour lancer le SVG pretty printer
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:
-
un premier fichier XML décrivant les informations musicales uniquement,
en vue de réduire les temps de téléchargement et l'encombrement
en mémoire pour les applications d'extraction de connaissances.
-
un deuxième fichier XML décrivant les informations de mise
en page appliquées au premier, une sorte de feuille de style susceptible
de contenir des exceptions localisées pour les cas particuliers
si fréquents en gravure; il pourrait contenir les polices ou leur
nom.
-
un programme produisant un fichier SVG à partir des deux fichiers
XML, et éventuellement de la taille courante d'une "page" (A4, US,
largeur de la fenêtre du navigateur, ...)
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.