Skip to main content

mahlif: Universal Music Notation Interchange Format

Build PyPI Supported Python Versions

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

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

Metadata

Release files for mahlif 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mahlif 0.1.0
File Size Uploaded
mahlif-0.1.0.tar.gz 99.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mahlif 0.1.0
File Interpreter ABI Platform
mahlif-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 213.4 kB

Release files / mahlif-0.1.0.tar.gz

Download URL mahlif-0.1.0.tar.gz
Size 99.1 kB
Tags Source
SHA-256 checksum
How to use checksums
35e6560eac4df061d0f49f13fa1a8076af5d2aee9029ffca35bc17f5460215b2
BLAKE2b-256 checksum
How to use checksums
12bde8d5563c4ceadd5b82e8b3f4cd29038f1f6a6b101fa46c155ca0a51a8a66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / mahlif-0.1.0-py3-none-any.whl

Download URL mahlif-0.1.0-py3-none-any.whl
Size 114.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
526dcbf746a17ee61d553b81eaf8b8cfb25f3e599383645a3ac5b974e86a42d5
BLAKE2b-256 checksum
How to use checksums
5c47e4ca3a5ca29177c98f9bc606e919af187f2ecab1307e756b9ad8484e6feb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page