Introduced MEI ornament expansions and their conversion to MPM ornamentation - #33
LarsEngeln wants to merge 145 commits into
Conversation
…has a certain value, find sibling, including a simple way to add a short UUID
…nctions, where MeiElement is more abstract
…o be played as <supplied>. Mainly this is for rendering via MPM.
…dict) that is used by the MeiInstructifier
…ion of halfsteps between two note. "intm" is now in halfsteps, not interval anymore
…es only), and changes the OrnamentProcessor to only use MeiElementHelper (instead of Helper./XOM directly)
| * @param chord an mei chord, bTrem or fTrem element | ||
| */ | ||
| private void processChord(Element chord) { | ||
| public void processChord(Element chord) { |
There was a problem hiding this comment.
Not public. If private is too strict use protected.
| } | ||
| } | ||
|
|
||
| public MsmNoteElement meiNote2MsmNote(MeiElementHelper meiNote) { |
There was a problem hiding this comment.
Not public!
Missing documentationen above method header.
There was a problem hiding this comment.
Pull request overview
This PR introduces an end-to-end pipeline for expanding MEI ornaments into explicit note material (<supplied>/<graceGrp>) and converting that information into MPM ornamentation data, including new temporal-domain handling for ornament timing/spread.
Changes:
- Added MEI ornament expansion/preprocessing (
meico.mei.ornament) plus conversion support into MPMornamentationMap. - Introduced new XML helper abstractions (
RichElement,MeiElementHelper,MsmNoteElement) and additional MEI helper utilities. - Extended ornamentation/temporal rendering capabilities (relative/ticks/ms domains, alignment “at start/end”, tremolo support, multi-ornament distribution).
Reviewed changes
Copilot reviewed 26 out of 26 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
| src/resources/ornaments.dict | Adds ornament name → pitch-alteration patterns used for ornament expansion/matching. |
| src/meico/xml/RichElement.java | Introduces an OO wrapper around XOM Element with attribute/child/id utilities. |
| src/meico/supplementary/Stopwatch.java | Adds a simple stopwatch utility for console timing output. |
| src/meico/msm/MsmNoteElement.java | Adds MSM-focused RichElement wrapper utilities for note access/comparison. |
| src/meico/msm/Msm.java | Extends expressive MIDI export API and clamps negative dates during MIDI event creation. |
| src/meico/mpm/elements/TemporalValue.java | Adds temporal value abstraction with unit/domain parsing and relative/absolute operations. |
| src/meico/mpm/elements/styles/defs/OrnamentDef.java | Extends ornament temporal spread model (TemporalValue, alignment) and render logic. |
| src/meico/mpm/elements/Performance.java | Wires ornament expansion/rendering into performance pipeline; attempts map cloning. |
| src/meico/mpm/elements/maps/OrnamentationMap.java | Major rework: supports child notes/repetitions, note generation, grouping/spacing logic. |
| src/meico/mpm/elements/maps/GenericMap.java | Adds removeElement(String id) convenience removal by xml:id. |
| src/meico/mpm/elements/maps/data/OrnamentData.java | Extends ornament data to include correspondence, notes, repetitions, and new apply API. |
| src/meico/mpm/elements/maps/ArticulationMap.java | Adds articulation lookup/copy helper for ornament-generated notes. |
| src/meico/mei/ornament/package-info.java | Adds package docs for new ornament subpackage. |
| src/meico/mei/ornament/OrnamentProcessor.java | Implements MEI→MPM ornament extraction from generated <supplied> expansions. |
| src/meico/mei/ornament/OrnamentExpansion.java | Defines the in-memory model for generated ornament expansions and merge behavior. |
| src/meico/mei/ornament/OrnamentExpander.java | Adds MEI preprocessing step that generates <supplied> ornament expansions. |
| src/meico/mei/NoteProcessor.java | Introduces interface to decouple note/chord processing for ornament processors. |
| src/meico/mei/MeiElementHelper.java | Adds MEI-specific wrapper over RichElement (namespace + .ges fallback). |
| src/meico/mei/Mei2MsmMpmConverter.java | Integrates ornament processor; exposes context/hooks for ornament conversion. |
| src/meico/mei/Mei.java | Adds expandOrnaments() and export flag to optionally bypass ornament expansion. |
| src/meico/mei/Helper.java | Adds multiple MEI XML utilities and pitch/interval helper functions. |
| src/meico/mei/Context.java | Adds context interface used by ornament processing to access converter state. |
| src/meico/mei/AttributesWithIds.java | Adjusts visibility (package-private). |
| README.md | Updates contributors and adds CLI flag --ignore-ornaments; updates formatting/content. |
| MEI2MSM_Coverage_Documentation.md | Updates documentation to reflect new ornament/grace/tremolo preprocessing behavior. |
| history.md | Adds v0.11.15 changelog documenting the ornament/temporal spread feature set. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| @@ -2,6 +2,9 @@ | |||
|
|
|||
There was a problem hiding this comment.
Lots of missing documentations in this class.
| * @param map | ||
| * @return returns a map of principal note IDs and the IDs of the notes that have been added to the map for that principal note | ||
| */ | ||
| public Map<String, ArrayList<String>> applyNotesToMaps(GenericMap map) { |
There was a problem hiding this comment.
I have no idea, what you do in this method. Please document!
2b46165 to
dcdefb9
Compare
v0.11.15
Introduced MEI ornament expansions and their conversion to MPM ornamentation.