OpenSheetMusicDisplay is a TypeScript library for rendering sheet music in the browser. It parses MusicXML files (including compressed .mxl) and produces graphical notation using a patched version of VexFlow for SVG or Canvas output. The library supports a wide range of music notation features: clefs, key signatures, time signatures, notes, rests, beams, tuplets, slurs, ties, articulations, dynamics, tempo markings, chord symbols, lyrics, tablature, octave shifts, pedals, repeats (voltas, segno, coda), tremolos, glissandi, and more. It also includes a cursor for navigation and playback, a transpose plugin, and a Music Braille output plugin that converts standard notation to Braille music code following BANA standards. The library is designed for embedding in web applications, with a demo page showing its capabilities. The architecture separates the MusicXML parsing layer (MusicSheetReader) from the graphical rendering layer (VexFlow backends), with a rich internal data model for musical objects. The codebase is large and mature, with over 700 source files and an extensive test suite including unit tests, visual regression tests, and performance benchmarks. However, it has some technical debt: large monolithic classes (e.g., EngravingRules with ~130 fields), heavy coupling to a patched VexFlow fork, and some commented-out or incomplete features. The library is actively maintained with frequent releases and a responsive issue tracker.
ChordPro is a reference implementation for the ChordPro file format, a plain-text notation for lyrics with chords. This Perl application parses `.cho`/`.chordpro` files and produces professional-quality sheet music in PDF, HTML, LaTeX, Markdown, and plain-text outputs. It includes a command-line interface (CLI) and a cross-platform graphical application built with WxPerl. The architecture features a modular output backend system, a pluggable delegate framework for embedded music notation (ABC, LilyPond, SVG), a comprehensive configuration system using Relaxed JSON, and a custom SVG-to-PDF engine. It also provides chord parsing, transposition, diagram generation, and support for multiple note naming systems (common, Nashville, Roman, solfรจge). The repository bundles extensive test suites, documentation, and packaging scripts for Windows, macOS, and Linux. While the codebase demonstrates strong engineering with several reusable components, it carries some legacy dependencies and hardcoded paths from its wxGlade-generated GUI.