Skip to content
Andrew Tran edited this page Jul 19, 2017 · 2 revisions

Code Structure

Note that this document is under construction and may not be accurate as of July 18, 2017

Root Directory:

  • ./data: Contains all the data for fonts, which is used by verovio during execution. The path must be set using the -r option.
  • ./doc: Files pertaining to the documentation, including markdown files etc.
  • ./emscripten: Emscripten files used for compiliation to Javascript
  • ./fonts: The source files for the music fonts and related scripts
  • ./include: Include files (.h) for the libraries, and verovio files (vrv)
  • ./java: Files pertaining to the java bindings
  • ./libmei: Files generated from the MEI schema from the customized version of libmei for verovio
  • ./python: Files pertaining to the python bindings
  • ./src: The source files, for more details see the following section
  • ./tools: Cmake files for command line tool

Other paths of note:

XCode project and relevant files are in the root and in Verovio.xcodeproj

Within /src

The source files are organized logically through virtual folders in the XCode project found in the repository. This (in addition to the header files in the include folder) comprise the entirety of the functionality of verovio. The structure is as follows:

  • ./dc: Device context files, bboxdevicecontext, svgdevicecontext
  • ./io: Input output files, for humdrum, mei, musxml etc.
  • ./containers: MEI elements that are containers, page, scoredef, etc.
  • ./systemelements: MEI elements pertaining to systems, ie boudary, section, etc.
  • ./controlelements: MEI elements pertaining to control, ie tempo, slur, trill, etc.
  • ./layerelements: MEI elements pertaining to layers, ie clef, custos, keysig etc.
  • ./textelements: MEI elements pertaining to text, such as text, fb, etc.
  • ./interfaces: Interface code for interacting with certain attributes of elements, ie pitchinterface, positioninterface, etc.
  • ./view: Code for rendering the view

In the root ./src directory are several files that help with the general operation of verovio, including the toolkit. The toolkit is what most users will interface with in order to use verovio, and more information can be found in the toolkit documentation (currently under development).