MusicXML parsing and layout library

Related tags

mxml
Overview

mxml

mxml is a C++ parser and layout generator for MusicXML files.

Usage

You will need:

  • CMake >= 2.6
  • LibXML2
  • boost (for unit tests)

To build a stand-alone static library:

git clone https://github.com/venturemedia/mxml
cd mxml
git submodule update --init
cmake .
make
make test

License

mxml is available under the MIT license. See the LICENSE file for more info. Copyright © 2016 Venture Media Labs.

Issues
  • 2/2 Test #2: lxml_tester ......................***Not Run   0.00 sec

    2/2 Test #2: lxml_tester ......................***Not Run 0.00 sec

    I faced with the error when run make test. And below is the log(MacBook Pro (Retina, Mid 2012), MacOS: 10.12.4 (16E195)):

    mxml git:(master) make test
    Running tests...
    Test project /Users/apple/Documents/MyProject/mxml
        Start 1: mxml_tester
    Could not find executable /Users/apple/Documents/MyProject/mxml/build/mxml_tester
    Looked in the following places:
    /Users/apple/Documents/MyProject/mxml/build/mxml_tester
    /Users/apple/Documents/MyProject/mxml/build/mxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Release/mxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Release/mxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Debug/mxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Debug/mxml_tester
    /Users/apple/Documents/MyProject/mxml/build/MinSizeRel/mxml_tester
    /Users/apple/Documents/MyProject/mxml/build/MinSizeRel/mxml_tester
    /Users/apple/Documents/MyProject/mxml/build/RelWithDebInfo/mxml_tester
    /Users/apple/Documents/MyProject/mxml/build/RelWithDebInfo/mxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Deployment/mxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Deployment/mxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Development/mxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Development/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/Release/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/Release/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/Debug/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/Debug/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/MinSizeRel/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/MinSizeRel/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/RelWithDebInfo/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/RelWithDebInfo/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/Deployment/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/Deployment/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/Development/mxml_tester
    Users/apple/Documents/MyProject/mxml/build/Development/mxml_tester
    Unable to find executable: /Users/apple/Documents/MyProject/mxml/build/mxml_tester
    1/2 Test #1: mxml_tester ......................***Not Run   0.00 sec
        Start 2: lxml_tester
    Could not find executable /Users/apple/Documents/MyProject/mxml/build/lxml_tester
    Looked in the following places:
    /Users/apple/Documents/MyProject/mxml/build/lxml_tester
    /Users/apple/Documents/MyProject/mxml/build/lxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Release/lxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Release/lxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Debug/lxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Debug/lxml_tester
    /Users/apple/Documents/MyProject/mxml/build/MinSizeRel/lxml_tester
    /Users/apple/Documents/MyProject/mxml/build/MinSizeRel/lxml_tester
    /Users/apple/Documents/MyProject/mxml/build/RelWithDebInfo/lxml_tester
    /Users/apple/Documents/MyProject/mxml/build/RelWithDebInfo/lxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Deployment/lxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Deployment/lxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Development/lxml_tester
    /Users/apple/Documents/MyProject/mxml/build/Development/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/Release/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/Release/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/Debug/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/Debug/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/MinSizeRel/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/MinSizeRel/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/RelWithDebInfo/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/RelWithDebInfo/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/Deployment/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/Deployment/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/Development/lxml_tester
    Users/apple/Documents/MyProject/mxml/build/Development/lxml_tester
    Unable to find executable: /Users/apple/Documents/MyProject/mxml/build/lxml_tester
    2/2 Test #2: lxml_tester ......................***Not Run   0.00 sec
    
    0% tests passed, 2 tests failed out of 2
    
    Total Test time (real) =   0.00 sec
    
    The following tests FAILED:
    	  1 - mxml_tester (Not Run)
    	  2 - lxml_tester (Not Run)
    Errors while running CTest
    make: *** [test] Error 8
    
    

    Looking forwards to hearing from you.

    opened by nhatlee 4
  • Support for transposing instruments

    Support for transposing instruments

    Hi there, I already asked about this in the musickit project, but maybe it's a more relevant issue for mxml.

    I wanted to know if there was support for the tags in MusicXML files, so I can display a score differently depending on what instrument is used.

    If not, would you be able to point me in the right direction in implementing this feature myself?

    Thanks again for your work!

    opened by virusys 3
  • Tie rendering in ScrollScoreLayout

    Tie rendering in ScrollScoreLayout

    Ties often render improperly in ScrollScoreLayout because TieFactory assumes a page layout, and therefore renders ties as if there were multiple systems. This creates lots of super long ties that cover up the rest of the sheet music. This PR fixes this behavior.

    opened by dkun7944 2
  • Handle Pedal Type

    Handle Pedal Type "change"

    Encountered the type "change" when parsing the Hal Leonard catalogue.

    HL Song ID: 1000530 XML File: https://gist.github.com/hoseking/7b842ae04c1eda32bd63

    DirectionTypeHandler.cpp
    
    dom::StartStopContinue PedalHandler::typeFromString(const std::string& string) {
        if (string == "start")
            return dom::TYPE_START;
        if (string == "stop")
            return dom::TYPE_STOP;
        if (string == "continue")
            return dom::TYPE_CONTINUE;
        throw dom::InvalidDataError("Invalid type " + string);
    }
    
    bug 
    opened by hoseking 1
  • Implement parse bracketgeometry

    Implement parse bracketgeometry

    Currently into the XML file have info of bracket: <direction-type> <bracket default-y="-73" line-end="none" line-type="solid" number="1" type="start"/> </direction-type>. But the library not parse this info yet. So I make this pull request to parse it.

    opened by nhatlee 1
  • Added missing Articulation type ('other-articulation') and added parse for notes with type print-Object

    Added missing Articulation type ('other-articulation') and added parse for notes with type print-Object

    • Some songs which have Articulation type with name 'other-articulation', currently the library still missing this type, so the app will crash if not parse this type(crash exception:Invalid articulation type...).
    • In music XML, some song have notes with type print-object must treat as rest notes. Ex:
    <measure number="3" width="379">
          <print new-system="yes">
            <system-layout>
              <system-distance>147</system-distance>
            </system-layout>
          </print>
          <note print-object="no">
            <rest/>
            <duration>1</duration>
            <voice>1</voice>
          </note>
          <barline location="right">
            <bar-style>none</bar-style>
          </barline>
        </measure>
    
    opened by nhatlee 1
  • Fix Lyric Placement

    Fix Lyric Placement

    opened by aidangomez 0
Owner
Reinvent Inc.
Reinvent Inc.
MusicXML parsing and layout library

mxml mxml is a C++ parser and layout generator for MusicXML files. Usage You will need: CMake >= 2.6 LibXML2 boost (for unit tests) To build a stand-a

Reinvent Inc. 19 Mar 29, 2021
A Music programming language. Translates source code into MIDI. Includes a player. Supports MIDI-Karaoke. Includes a MIDI analyzer.

Get Started | Features | Screenshots | Programming | CLI | Contribute | License Midica is an interpreter for a Music Programming Language. It translat

Jan Trukenmüller 47 Sep 17, 2021
Frescobaldi LilyPond Editor

README for Frescobaldi Homepage: http://www.frescobaldi.org/ Main author: Wilbert Berendsen Frescobaldi is a LilyPond sheet music text editor. It aims

Frescobaldi 501 Sep 21, 2021
MuseScore is an open source and free music notation software. For support, contribution, bug reports, visit MuseScore.org. Fork and make pull requests!

Music notation and composition software MuseScore is an open source and free music notation software. For support, contribution, and bug reports visit

MuseScore 6.3k Sep 24, 2021
C++ library and Python bindings for the Music Encoding Initiative format

LibMEI LibMEI is a C++ library for reading and writing MEI files It is developed by the Distributed Digital Music Archives and Libraries Lab at the Sc

Distributed Digital Music Archives and Libraries Lab 49 Aug 30, 2021
An Internet radio player for Linux

Radiotray-NG: An Internet radio player for Linux It became clear as one of the early contributors to the RadioTray project that it was not getting the

Ed Bruck 187 Aug 21, 2021
A music programming language for musicians. :notes:

Installation | Docs | Changelog | Contributing composers chatting Alda is a text-based programming language for music composition. It allows you to co

Alda 4.7k Sep 25, 2021
Music sheet rendering for iOS

MusicKit MusicKit is an iOS/MacOS X framework for rendering sheet music. It depends on mxml for loading and laying out MusicXML files. Setup After clo

Reinvent Inc. 98 Sep 7, 2021
Typographic Beat-Oriented Notation for music

tbon Typographic Beat-Oriented Notation for music Tbon aims to be the fastest way to enter pitches, rhythms, meter and dynamic levels from a computer

null 11 Jan 23, 2020
🎚️ Open Source Audio Matching and Mastering

Matching + Mastering = ❤️ Matchering 2.0 is a novel Containerized Web Application and Python Library for audio matching and mastering. It follows a si

Sergey Grishakov 489 Sep 14, 2021
A powerful, beautiful, and simple podcast client for the modern free desktop.

Vocal The podcast client for the modern free desktop. Vocal is a powerful, fast, and intuitive application that helps users find new podcasts, manage

Needle & Thread 302 Sep 7, 2021
Javascript audio library for the modern web.

Description howler.js is an audio library for the modern web. It defaults to Web Audio API and falls back to HTML5 Audio. This makes working with audi

James Simpson 19k Sep 25, 2021
Music typeset with the Lilypond system

Intro (from long ago) This repo contains sheet music typeset with the Lilypond typesetter. The music chosen is in favour of cello music (mostly chambe

Enthusiastic about  the Cello 95 Sep 24, 2021
music library manager and MusicBrainz tagger

beets Beets is the media library management system for obsessive music geeks. The purpose of beets is to get your music collection right once and for

beetbox 10.4k Sep 15, 2021
A language for music notation

Lydown is a language and compiler for creating music scores, parts and snippets. The lydown code is compiled to lilypond code and then compiled to PDF

Sharon Rosner 21 Apr 8, 2021
The gPodder podcast client.

___ _ _ ____ __ _| _ \___ __| |__| |___ _ _ |__ / / _` | _/ _ \/ _` / _` / -_) '_| |_ \ \__, |_| \___/\__,_\__,_\___|_| |_

gPodder and related projects 892 Sep 14, 2021
Music player and music library manager for Linux, Windows, and macOS

Quod Libet: an audio library, manager & player Quod Libet is a cross-platform audio / music management program. It provides many ways to view your loc

Quod Libet 1k Sep 16, 2021
Qt5 Graphical MPD Client

Cantata NOTE Cantata is now in a bug-fix only state. Therefore, new features are unlikly to be implemented unless pull requests are submitted. The cur

CraigD 919 Sep 14, 2021
Python CD-DA ripper preferring accuracy over speed

Whipper Whipper is a Python 3 (3.6+) CD-DA ripper based on the morituri project (CDDA ripper for *nix systems aiming for accuracy over speed). It star

null 554 Sep 19, 2021