An open API service indexing awesome lists of open source software.

https://github.com/metaist/mahlif

Universal music notation interchange format with bidirectional converters
https://github.com/metaist/mahlif

music musicxml notation

Last synced: 19 days ago
JSON representation

Universal music notation interchange format with bidirectional converters

Awesome Lists containing this project

README

          

# 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

```bash
pip install mahlif
# or
uv add mahlif
```

## Quick Start

### Export from Sibelius

```bash
# Install the export plugin
mahlif sibelius install
```

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

### Convert to LilyPond

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

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

### Python API

```python
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](docs/index.md) for:

- [CLI Reference](docs/cli.md) — All commands and options
- [Sibelius](docs/sibelius.md) — Plugin installation, linter, property mapping
- [LilyPond](docs/lilypond.md) — Export features and limitations
- [Schema](docs/schema.md) — Mahlif XML format specification

## License

[MIT License](LICENSE.md)