Skip to main content

Universal music notation interchange format with bidirectional converters

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mahlif-0.1.0.tar.gz (99.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mahlif-0.1.0-py3-none-any.whl (114.3 kB view details)

Uploaded Python 3

File details

Details for the file mahlif-0.1.0.tar.gz.

File metadata

  • Download URL: mahlif-0.1.0.tar.gz
  • Upload date:
  • Size: 99.1 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for mahlif-0.1.0.tar.gz
Algorithm Hash digest
SHA256 35e6560eac4df061d0f49f13fa1a8076af5d2aee9029ffca35bc17f5460215b2
MD5 20bc82cfb4e7f5221e878b6226aa51d5
BLAKE2b-256 12bde8d5563c4ceadd5b82e8b3f4cd29038f1f6a6b101fa46c155ca0a51a8a66

See more details on using hashes here.

File details

Details for the file mahlif-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mahlif-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 114.3 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for mahlif-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 526dcbf746a17ee61d553b81eaf8b8cfb25f3e599383645a3ac5b974e86a42d5
MD5 96d32e7d99f04a446c0d32a3b0efd9e7
BLAKE2b-256 5c47e4ca3a5ca29177c98f9bc606e919af187f2ecab1307e756b9ad8484e6feb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page