grame-cncm / libmusicxml

A C/C++ library to support the MusicXML format.
Mozilla Public License 2.0
152 stars 33 forks source link

Where can I find documentation/usage information? #43

Closed tjwrona closed 3 years ago

tjwrona commented 3 years ago

I am working on a C++ project that will need to read/write MusicXML files and I came across this repository but I can't seem to find any clear documentation on how to use it. I see that there are build instructions, but is there a user manual/API reference somewhere?

I apologize if it is in an obvious location and I somehow just missed it.

jacques-menu commented 3 years ago

Hello,

The master branch contains installable versions, which Dominique Fober creates from time to time.

The fundamental principles in libmusixcml2 design are described in:

https://github.com/grame-cncm/libmusicxml/blob/master/doc/presentation/libmusicxml2.pdf

There’s also a presentation of its architecture at:

https://github.com/grame-cncm/libmusicxml/blob/master/doc/libmusicxmlArchitecture/libmusicxmlArchitecture.pdf

The samples directory contains basic examples of the use of the library, such as:

RandomMusic > randomMusic.xml # create a MusicXML file containing random music
xmlread randomMusic.xml       # read it, convert it to an xmlelement tree, and print the latter to cout

The lilypond branch contains my contribution to the library, merged from time to time by Dom too. It is named after the fact that it was created for xml2ly in the first place:

menu@macbookprojm: ~ > xml2ly -h Welcome to xml2ly, the MusicXML to LilyPond translator delivered as part of the libmusicxml2 library. https://github.com/grame-cncm/libmusicxml/tree/lilypond

Usage: ([options] | [MusicXMLFile|-])+ … … … … … …

menu@macbookprojm: ~ > xml2ly -a What xml2ly does:

This multi-pass translator basically performs 5 passes:
    Pass 1:  reads the contents of MusicXMLFile or stdin ('-')
             and converts it to a MusicXML tree;
    Pass 2a: converts that MusicXML tree into
             a Music Score Representation (MSR) skeleton;
    Pass 2b: populates the MSR skeleton from the MusicXML tree
             to get a full MSR;
    Pass 3:  converts the MSR into a
             LilyPond Score Representation (LPSR);
    Pass 4:  converts the LPSR to LilyPond code
             and writes it to standard output.

Other passes are performed according to the options, such as
printing views of the internal data or printing a summary of the score.

The activity log and warning/error messages go to standard error.

The lilypond branch has evolved to the current architecture:

https://github.com/grame-cncm/libmusicxml/blob/lilypond/doc/libmusicxmlArchitecture/libmusicxmlArchitecture.pdf

Don’t hesitate to ask for more informations depending on your needs.

And yes, you’re right: I have to add the informations above to the docs…

A nice day!

JM

Le 10 janv. 2021 à 18:47, tjwrona1992 notifications@github.com a écrit :

I am working on a C++ project that will need to read/write MusicXML files and I came across this repository but I can't seem to find any clear documentation on how to use it. I see that there are build instructions, but is there a user manual/API reference somewhere?

I apologize if it is in an obvious location and I somehow just missed it.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/grame-cncm/libmusicxml/issues/43, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRJX6XAZEIIJ4HIBUO42VTSZHR4XANCNFSM4V4S6B3Q.

dfober commented 3 years ago

The library is designed so that the MusicXML documentation (included in the schema also serves as documentation for the library. The general principles are described in the presentation document. Otherwise there is a higher level API available from libmusicxml.h.

tjwrona commented 3 years ago

Thank you both! I will check it out.

I'm currently reading through the MusicXML documentation to learn my way around. :)

jacques-menu commented 3 years ago

Hello,

Le 14 janv. 2021 à 23:29, tjwrona1992 notifications@github.com a écrit :

Thank you both! I will check it out.

I'm currently reading through the MusicXML documentation to learn my way around. :)

This other doc may help you, then:

https://github.com/grame-cncm/libmusicxml/blob/lilypond/doc/introductionToMusicxml/IntroductionToMusicXML.pdf

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/grame-cncm/libmusicxml/issues/43#issuecomment-760516113, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRJX6TJO2VYE3SILQP7MXDSZ5V33ANCNFSM4V4S6B3Q.