Skip to content
/ mahlif Public

Universal music notation interchange format with bidirectional converters

License

Notifications You must be signed in to change notification settings

metaist/mahlif

Repository files navigation

mahlif: Universal Music Notation Interchange Format

Build PyPI Supported Python Versions

מַחֲלִיף (machalif/mahlif) = Hebrew for "exchanger/converter"

Warning

Experimental / Pre-release Software

This project is in early development. APIs may change without notice.

Why Mahlif?

Music notation software stores scores in proprietary formats that don't interoperate well. MusicXML exists but loses layout precision. Mahlif provides:

  1. Mahlif XML — An intermediate format preserving pixel-accurate layout (dx/dy offsets)
  2. Bidirectional converters for notation software

Format Support

Format Import Export Notes
Sibelius ✅ Plugin 🚧 Plugin Export ~80% complete
LilyPond ✅ CLI ~70% features
MusicXML Planned
Finale Planned
Dorico Planned

Current focus: Sibelius → Mahlif XML → LilyPond → PDF

Install

pip install mahlif
# or
uv add mahlif

Quick Start

Export from Sibelius

# Install the export plugin
mahlif sibelius install

Then in Sibelius: Home → Plug-ins → Mahlif → Export to Mahlif XML

Convert to LilyPond

# Convert to LilyPond source
mahlif convert score.mahlif.xml score.ly

# Compile to PDF (requires LilyPond installed)
lilypond score.ly

Python API

from mahlif import parse
from mahlif.lilypond import to_lilypond

score = parse("score.mahlif.xml")
lily_source = to_lilypond(score)

Documentation

See the full documentation for:

  • CLI Reference — All commands and options
  • Sibelius — Plugin installation, linter, property mapping
  • LilyPond — Export features and limitations
  • Schema — Mahlif XML format specification

License

MIT License

About

Universal music notation interchange format with bidirectional converters

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

 

Contributors 2

  •  
  •  

Languages