-
Notifications
You must be signed in to change notification settings - Fork 2
MPM Performance Rendering Pipeline
Axel Berndt edited this page Apr 1, 2022
·
7 revisions
As implemented in the official MPM API as part of meico, method meico.mpm.elements.Performance.perform().
| Term | Items covered |
|---|---|
| All global MSM maps |
keySignatureMap, timeSignatureMap, sectionMap, sequencingMap, markerMap, pedalMap
|
All local MSM maps for each MSM part includes |
score, keySignatureMap, timeSignatureMap, sectionMap, sequencingMap, markerMap, programChangeMap, pedalMap
|
During performance rendering, transformations are applied to MSM maps in the following sequence.
| Sequence | MPM Feature | Effect |
|---|---|---|
| 1 | Temporary Attributes | the values of @date, @date.end and @duration are copied into newly added @date.perf, @date.end.perf and @duration.perf, so the original remains unaltered |
| 2 | Global Ornamentation | adds or edits modifier attributes @ornament.dynamics, @ornament.date.offset/@ornament.milliseconds.date.offset, @ornament.duration/@ornament.milliseconds.duration, @ornament.noteoff.shift for all affected MSM note elements |
| 3 | Global Rubato | all global MSM maps; modifies @date.perf
|
| 4 | Global Tempo | all global MSM maps; adds @milliseconds.date and @milliseconds.date.end to each element in the map |
| 5 | Global Asynchrony | global pedalMap; modifies @milliseconds.date and @milliseconds.date.end
|
| 6 | Global Timing Imprecision | global pedalMap; modifies @milliseconds.date and @milliseconds.date.end
|
| 7 | For each MSM part (if a local map is given, the corresponding global map is ignored for this part) |
|
| 7.1 | Temporary Attributes | the values of @date, @date.end and @duration are copied into newly added @date.perf, @date.end.perf and @duration.perf, so the original remains unaltered |
| 7.2 | Dynamics | local score; adds @velocity to all note elements; this will also generate a channelVolumeMap for sub-note dynamics instructions <volume date="", date.perf="" value=""/> which is added to the MSM part's dated environment |
| 7.3 | Metrical Accentuation | local score; modifies @velocity of the note elements |
| 7.4 | Articulation (excluding milliseconds modifiers) | local score; adds or modifies @date.perf, @duration.perf, @velocity, @detuneCents, @detuneHz
|
| 7.5 | Rubato | all local MSM maps modifies @date.perf
|
| 7.6 | Ornamentation | adds or edits modifier attributes @ornament.dynamics, @ornament.date.offset/@ornament.milliseconds.date.offset, @ornament.duration/@ornament.milliseconds.duration, @ornament.noteoff.shift for all affected MSM note elements; renders all non-milliseconds modifiers into performance attributes @velocity, @date.perf, @date.end.perf and @duration.perf
|
| 7.7 | Tempo | all local MSM maps; adds @milliseconds.date and @milliseconds.date.end to each element in the map |
| 7.8 | Asynchrony | local pedalMap; modifies @milliseconds.date and @milliseconds.date.end
|
| 7.9 | Timing Imprecision | local pedalMap; modifies @milliseconds.date and @milliseconds.date.end
|
| 7.10 | Tempo | local channelVolumeMap (from step 5.1); adds @milliseconds.date
|
| 7.11 | Asynchrony | local channelVolumeMap (from step 5.1); modifies @milliseconds.date
|
| 7.12 | Asynchrony | local score; modifies @milliseconds.date and @milliseconds.date.end
|
| 7.13 | Articulation (milliseconds modifiers only) | local score; modifies @milliseconds.date, @milliseconds.date.end
|
| 7.14 | Ornamentation (milliseconds modifiers only) | local score; renders @ornament.milliseconds.date.offset and @ornament.milliseconds.duration into performance attributes @milliseconds.date and @milliseconds.date.end
|
| 7.15 | Timing Imprecision | local score; modifies @milliseconds.date and @milliseconds.date.end
|
| 7.16 | Dynamics Imprecision | local score; modifies @velocity
|
| 7.17 | Tone Duration Imprecision | local score; modifies @milliseconds.date.end
|
| 7.18 | Tuning Imprecision | local score; modifies @tuning.offset
|
| 8 | Cleanup | obsolete |
The output is an altered and enriched MSM instance that can be exported to expressive MIDI.