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
- Host: GitHub
- URL: https://github.com/metaist/mahlif
- Owner: metaist
- License: mit
- Created: 2026-01-28T00:32:45.000Z (28 days ago)
- Default Branch: main
- Last Pushed: 2026-01-28T02:08:57.000Z (28 days ago)
- Last Synced: 2026-01-28T17:35:05.776Z (27 days ago)
- Topics: music, musicxml, notation
- Language: Python
- Homepage: https://docs.metaist.com/mahlif
- Size: 117 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# mahlif: Universal Music Notation Interchange Format
**מַחֲלִיף** (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)