-
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.