MusicXML parsing and layout library

Related tags

Audio 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.
OpenSheetMusicDisplay renders sheet music in MusicXML format in your web browser based on VexFlow. OSMD is brought to you by PhonicScore.com.

OpenSheetMusicDisplay (OSMD) A MusicXML renderer for the Browser opensheetmusicdisplay.org About OSMD • Demo • Key Features • Limitations • How to Use

Open Sheet Music Display 872 Jan 13, 2022
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 1.1k Jan 10, 2022
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.6k Jan 23, 2022
Python library for audio and music analysis

librosa A python package for music and audio analysis. Documentation See https://librosa.org/doc/ for a complete reference manual and introductory tut

librosa 4.9k Jan 15, 2022
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 52 Jan 14, 2022
A JavaScript library for rendering music notation and guitar tablature.

VexFlow 3 A JavaScript library for rendering music notation. Copyright (c) 2010 Mohit Muthanna Cheppudira Sponsor this Project If you use VexFlow in y

Mohit Cheppudira 3.2k Jan 15, 2022
A music composition library for Clojure and Clojurescript.

Leipzig A composition library for Clojure and Clojurescript by @ctford. Use Include it as a dependency in your project.clj, along with Overtone: [over

Chris Ford 431 Dec 2, 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 19.6k Jan 17, 2022
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.7k Jan 14, 2022
Small, fast and powerful console music player for Unix-like operating systems.

Warning: cmus is not actively maintained. For details, please see #856 cmus — C* Music Player https://cmus.github.io/ Copyright © 2004-2008 Timo Hirvo

C* Music Player 4.5k Jan 16, 2022
A GTK3 app for finding and listening to internet radio stations.

The successor of Gradio is Shortwave. Get more information here: https://gitlab.gnome.org/World/Shortwave Gradio A GTK3 app for finding and listening

Häcker Felix 334 Oct 9, 2021
Full-featured CD/DVD/Blu-ray burning and ripping application

K3b Version 18.04.0 Thanx for downloading K3b - The CD Kreator These are the features so far: - the most userfriendly interface ever ;-) - thema

KDE GitHub Mirror 78 Jan 13, 2022
🎵 A simple, clean and cross-platform music player

Museeks A simple, clean and cross-platform music player. (museeks.io) Features Museeks aims to be a simple and easy to use music player with a clean U

Pierre de la Martinière 1.1k Jan 10, 2022
Standalone lyrics fetcher/displayer (windowed and OSD mode).

OSD Lyrics Show synced lyrics with your favorite media player on Linux. Introduction OSD Lyrics is a desktop application to view lyrics compatible wit

OSD Lyrics 252 Jan 19, 2022
Limiter, compressor, reverberation, equalizer and auto volume effects for Pulseaudio applications

PulseEffects Audio effects for PipeWire applications. Effects available Applications output Auto gain Bass enhancer Compressor Convolver Crossfeed Cry

Wellington Wallace 3.1k Dec 30, 2021
Soundnode App is the Soundcloud for desktop. Built with Electron, Angular.js and Soundcloud API.

Soundnode App Soundnode App is an Open-Source project to support Soundcloud for desktop Mac, Windows, and Linux. It's built with Electron, Node.js, An

Soundnode App 4.9k Jan 21, 2022
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 309 Dec 27, 2021