neumaRk — Overview¶
1. What is neumaRk¶
neumaRk is a formal text-based system for representing music.
It is designed to be simultaneously human-readable and machine-readable, with a well-defined syntax and semantics that allow the description of musical events, temporal structures, harmony, dynamics, lyrics, and formal sections.
neumaRk is, at the same time:
- a musical markup language;
- a DSL (Domain Specific Language) for music notation;
- a plain text format, usable as a standalone file.
The language was created to bridge the gap between traditional music notation and the needs of modern software systems: versioning, reliable parsing, compactness, sharing, and automated transformation.
2. Design goals¶
neumaRk is designed around the following core goals:
-
Semantic clarity
Every construct has a precise and unambiguous meaning. -
Human readability
A neumaRk file can be read and understood directly by a musician or an author. -
Parsing reliability
The syntax enables deterministic parsing, even in the presence of implicit information. -
Expressive flexibility
The same musical content can be expressed in more compact or more verbose forms. -
Rendering neutrality
The language describes what the music is, not how it should be drawn. -
Compatibility with modern workflows
Text files that are diff-friendly and suitable for version control systems and URL-based sharing.
3. neumaRk as a musical DSL¶
neumaRk is a DSL: a specialized language with a clearly defined domain.
The neumaRk domain includes:
- time and meter;
- pitches and durations;
- articulations and dynamics;
- harmony and chord symbols;
- text (lyrics);
- formal structure (markers, sections, repeats);
- layout and formatting hints.
The language does not attempt to replicate every graphical detail of traditional staff notation, but instead provides a coherent and transformable textual representation.
4. Human-readable and machine-readable¶
neumaRk is designed to be:
- readable by humans, without the need for dedicated tools;
- interpretable by machines, without fragile heuristics.
This is achieved through:
- a line-based syntax;
- a limited set of symbols with stable meaning;
- explicit rules for the deduction of implicit information.
A neumaRk file can be written quickly by hand, but can also be generated, validated, and transformed automatically.
5. Formal and informal syntax¶
One of the central aspects of neumaRk is the coexistence of two levels of syntax:
-
Formal syntax
Rigorous and fully disambiguated, designed to guarantee reliable parsing in any situation. -
Informal syntax
More compact and natural to write, based on common conventions and contextual deduction.
These are not separate languages, but two expressive modes of the same language.
The author can decide, case by case, whether to prioritize:
- maximum semantic precision;
- maximum writing speed and readability.
6. File formats and levels of detail¶
neumaRk supports different levels of explicitness, which affect how much information is present in the file:
-
Compact
Information reduced to the essential. Maximum compactness. -
Human
A balance between compactness and clarity. Optimized for human reading. -
Verbose
All information is explicit. Zero semantic ambiguity.
These levels do not define different languages, but different ways of using the same language.
7. Typical use cases¶
neumaRk is designed to support, among others, the following scenarios:
- writing and sharing leadsheets;
- textual representation of scores;
- embedding music in URLs or messages;
- automatic parsing and rendering;
- collaborative editing and versioning;
- conversion to graphical or audio formats.
8. Relationship with traditional music notation¶
neumaRk is not a direct transcription of staff notation.
Many concepts are shared (durations, measures, ties, chords), but the language:
- prioritizes semantics over graphics;
- allows implicit information that is difficult to express on paper;
- separates musical description from visual rendering.
Traditional notation is considered a possible output representation, not the internal model.
9. Non-goals¶
neumaRk does not aim to:
- replace traditional music notation in publishing contexts;
- define a single graphical standard;
- represent micro-level calligraphic details;
- cover every possible existing musical practice.
The language is intentionally focused and modular.
10. Specification organization¶
The neumaRk documentation is split into multiple files, each with a specific responsibility:
- conceptual overview;
- normative specification;
- syntax;
- file structure;
- header and metadata;
- music and rhythm;
- harmony;
- rendering and formatting;
- validation and examples.
This organization enables progressive reading and long-term maintainability of the specification.