Skip to content

mahlif

Universal music notation interchange format with bidirectional converters.

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

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

Install

First, install uv.

# Try it out (no install needed)
uvx mahlif --help

# Or install globally
uv tool install mahlif

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

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

  • CLI Reference — Command-line interface
  • Sibelius — Plugin installation, workflow, property mapping
  • LilyPond — Export features and limitations
  • Schema — Mahlif XML format specification