Skip to content

Commit

Permalink
v0.8.8
Browse files Browse the repository at this point in the history
- Added a getter to class `meico.mpm.Mpm` to provide access to the metadata: `getMetadata()`.
- Added support for MEI `verse` and `syl` elements, so they are converted to MSM `lyrics` elements.
- Added support for MEI `dynam` and `tempo` elements that are positioned within a `verse` environment.
- New method `processSpace()` for processing MEI `space` elements. These elements are usually interpreted as rests. However, this should not be done when they encode a textual space, e.g. in lyrics. That is what the method ensures.
  • Loading branch information
axelberndt committed Jul 3, 2020
1 parent b2c0cd7 commit 2e3afbc
Show file tree
Hide file tree
Showing 232 changed files with 723 additions and 514 deletions.
14 changes: 11 additions & 3 deletions MEI Coverage Documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ Depending on the soundfont/synthesizer these values may be more or less appropri

If the `dynam` has an `xml:id` it is also applied in the MPM encoding. Attributes `part` (priority) and `staff` can be used to associate the instruction with one or more `staff` elements, i.e. MSM `part` elements. If these attributes are omitted the instruction is treated as global, i.e. relevant to all musical parts. In attribute `part` - and in contrast to the MEI specification - the following values are supported: `%all` and space separated staff numbers. Attribute `layer` is not supported and meico will not search for the staffs that contain the specified layers. If `layer` is used in the MEI encoding `staff` should also be specified so the dynamics instruction is assigned to the correct musical part at least.

Mandatory for the interpretation of the `dynam` is also the presence of either a `tstamp.ges`, `tstamp` or `startid` attribute. For continuous dynamics the attributes `dur`, `tstamp2.ges`, `tstamp2` and `endid` are supported (in this exact priority, i.e. `endid` is only used if none of the other three is given). The `endid` can also be the id of the subsequent `dynam` element. Continuous dynamics transitions without one of the previous four attributes end at the subsequent instruction. Our recommendation: If there is a dynamics instruction anyway the attributes should not be used at all to avoid potential contradictory or erroneous encodings.
Mandatory for the interpretation of the `dynam` is information about its temporal location in the music. The easiest way is placing it within a `verse` element that itself is a child of a note, so the performance instruction gets the same timing position. Alternatively, attributes `tstamp.ges`, `tstamp` or `startid` can be used. For continuous dynamics the attributes `dur`, `tstamp2.ges`, `tstamp2` and `endid` are supported (in this exact priority, i.e. `endid` is only used if none of the other three is given). The `endid` can also be the id of the subsequent `dynam` element. Continuous dynamics transitions without one of the previous four attributes end at the subsequent instruction. Our recommendation: If there is a dynamics instruction anyway the attributes should not be used at all to avoid potential contradictory or erroneous encodings.

#### ending
MEI `ending` elements are transformed to entries in an MSM `sequencingMap`. If there is only one `ending`, playback will skip it at repetition by default. Meico tries to realize the order of the endings according to the numbering in the endings' `n` attribute. This attribute should contain an integer substring (e.g., `"1"`, `"1."`, `"2nd"`, `"Play this at the 3rd time!"`, but not `"first"` or `"Play this at the third time!"`). (Sub-)String `"fine"`/`"Fine"`/`"FINE"` will also be recognized. Strings such as `"1-3"` will be recognized as `"1"`, this means that more complex instructions will not be recognized correctly due to the lack of unambiguous, binding formalization (meico is no "guessing machine"). If meico does not find attribute `n`, it tries to parse attribute `label`. If neither of them is provided or meico fails to extract a meaningful numbering, the endings are played in order of appearance in the MEI source.
Expand Down Expand Up @@ -228,6 +228,8 @@ For computing the duration of a note, meico supports the following duration-rela

If the `note` specifies one of the attributes `artic` and `artic.ges` (the latter is prioritized) meico will generate the corresponding MPM data from it. It is processed in the same way as element `artic`. Meico supports any articulation denominator in these attributes, not only those allowed in the MEI specification.

Attribute `syl` is also supported and will be converted to an MSM `lyrics` element that is child of the MSM `note`.

Grace notes are not yet supported.

#### octave
Expand Down Expand Up @@ -307,7 +309,7 @@ If a `slur` element defines a `plist`, meico uses this to identify all `note` an
If (and only if) no `plist` is specified, meico will compute the start date from `tstamp.ges`, `tstamp` or `startid` and the end date from `dur`, `tstamp2.ges`, `tstamp2` or `endid`. Attributes `staff` and `layer` are taken into account to determine the notes to be articulated. In the absence of a `staff` or `layer` attribute meico checks whether `startid` and `endid` are in the same staff or layer, respectively, and articulates only notes within this same staff or layer. If they are in different layers, the whole staff content under the slur will be articulated. If even the staff relation is indefinite, all musical content under the `slur` is played legato. The final notes of a `slur`, i.e. those notes that are at the slur's end, are always articulated `"legatoStop"` even if another `slur` starts at this note or goes further.

#### space
This is interpreted as `rest`.
If this element encodes a textual gap (e.g. in lyrics) it has no musical meaning and is ignored. Otherwise, it is interpreted as `rest`.

#### staff
Meico requires either attribute `def` or `n` to associate the `staff` element and its contents with a preceding `staffDef`. If none is give or there is no corresponding `staffDef` meico will generate a new `part` during MSM export.
Expand All @@ -326,6 +328,9 @@ This element is processed as part of the `choice` environment and also outside o
#### supplied
There is no special processing routine for this element. Meico just processes its children.

#### syl
MEI `syl` elements are only processed if they are descendants of a `note` to be associated with. Meico generates an MSM `lyrics` element from it. If it have a parental `verse` element meico uses their attribute `n` to add a verse number.

#### tempo
Tempo instructions require either a metronomic value or a textual value, i.e. a descriptor string such as `"Allegro"`, `"rit."` etc. Supported attributes for numeric tempo values are `mm`, `midi.bpm` and `midi.mspb` (if several are present this is the priority order). To specify the length of one metronomic beat meico supports attributes `mm.unit` and `mm.dots`. Meico's parser understands the following descriptor strings and generates corresponding tempo values:

Expand Down Expand Up @@ -356,7 +361,7 @@ If the `tempo` element does not specify a descriptor string as value, i.e. inner

If the `tempo` has an `xml:id` it is also applied in the MPM encoding. Attributes `part` (priority) and `staff` can be used to associate the instruction with one or more `staff` elements, i.e. MSM `part` elements. If these attributes are omitted the instruction is treated as global, i.e. relevant to all musical parts. In attribute `part` - and in contrast to the MEI specification - the following values are supported: `%all` and space separated staff numbers. Attribute `layer` is not supported and meico will not search for the staffs that contain the specified layers.

Mandatory for the interpretation of the `tempo` is also the presence of either a `tstamp.ges`, `tstamp` or `startid` attribute. For continuous tempo transitions the attributes `dur`, `tstamp2.ges`, `tstamp2` and `endid` are supported (in this exact priority, i.e. `endid` is only used if none of the other three is given). The `endid` can also be the id of the subsequent `tempo` element. Continuous tempo transitions without one of the previous four attributes end at the subsequent instruction. Our recommendation: If there is a tempo instruction anyway the attributes should not be used at all to avoid potential contradictory or erroneous encodings.
Mandatory for the interpretation of the `tempo` is information about its temporal location in the music. The easiest way is placing it within a `verse` element that itself is a child of a note, so the performance instruction gets the same timing position. Alternatively, attributes `tstamp.ges`, `tstamp` or `startid` can be used. For continuous tempo transitions the attributes `dur`, `tstamp2.ges`, `tstamp2` and `endid` are supported (in this exact priority, i.e. `endid` is only used if none of the other three is given). The `endid` can also be the id of the subsequent `tempo` element. Continuous tempo transitions without one of the previous four attributes end at the subsequent instruction. Our recommendation: If there is a tempo instruction anyway the attributes should not be used at all to avoid potential contradictory or erroneous encodings.

#### tie
Meico requires attributes `startid` and `endid`. The editor should ensure that the corresponding `note` or `chord` elements actually exist. Cross-layer tieing is supported, cross-staff tieing is not. Furthermore, it is mandatory that both notes have the exact same pitch, including accidentals! Even though the end note of a tie is ususally notated without accidental (hence, no `accid` attribute or child element) it must then have an `accid.ges` attribute or it will not be tied to the previous note and played with the notated wrong pitch! Each `tie` element is internally resolved into `tie` attributes. Meico is able to handle a mixture of `tie` elements and already existing `tie` attributes on `note` or `chord` elements. Tieing of non-adjacent notes is not supported.
Expand All @@ -377,6 +382,9 @@ For computing the `date` of the `tupletSpan`, attributes `tstamp.ges`, `tstamp`
#### unclear
This element is processed as part of the `choice` environment and also outside of that environment.

#### verse
There is no special processing routine for this element. Meico just processes its children. When a child `syl` element is processed it looks here to find a verse number (attribute `n`). However, it is optional.

#### work
Meico uses `meter` signature and `tempo` information from this element's children if they cannot be found in the `music` environment.

Expand Down
4 changes: 2 additions & 2 deletions docs/allclasses-frame.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>All Classes</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
Expand Down
4 changes: 2 additions & 2 deletions docs/allclasses-noframe.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>All Classes</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
Expand Down
6 changes: 3 additions & 3 deletions docs/constant-values.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>Constant Field Values</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
Expand Down Expand Up @@ -95,7 +95,7 @@ <h2 title="meico">meico.*</h2>
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
<td><code><a href="meico/Meico.html#version">version</a></code></td>
<td class="colLast"><code>"0.8.5"</code></td>
<td class="colLast"><code>"0.8.8"</code></td>
</tr>
</tbody>
</table>
Expand Down
4 changes: 2 additions & 2 deletions docs/deprecated-list.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>Deprecated List</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
Expand Down
4 changes: 2 additions & 2 deletions docs/help-doc.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>API Help</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
Expand Down
4 changes: 2 additions & 2 deletions docs/index-files/index-1.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>A-Index</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
</head>
Expand Down
4 changes: 2 additions & 2 deletions docs/index-files/index-10.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>J-Index</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
</head>
Expand Down
4 changes: 2 additions & 2 deletions docs/index-files/index-11.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>K-Index</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
</head>
Expand Down
6 changes: 4 additions & 2 deletions docs/index-files/index-12.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>L-Index</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
</head>
Expand Down Expand Up @@ -126,6 +126,8 @@ <h2 class="title">L</h2>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="../meico/supplementary/RandomNumberProvider.html#lowerLimit">lowerLimit</a></span> - Variable in class meico.supplementary.<a href="../meico/supplementary/RandomNumberProvider.html" title="class in meico.supplementary">RandomNumberProvider</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="../meico/mei/Helper.html#lyrics">lyrics</a></span> - Variable in class meico.mei.<a href="../meico/mei/Helper.html" title="class in meico.mei">Helper</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">Q</a>&nbsp;<a href="index-18.html">R</a>&nbsp;<a href="index-19.html">S</a>&nbsp;<a href="index-20.html">T</a>&nbsp;<a href="index-21.html">U</a>&nbsp;<a href="index-22.html">V</a>&nbsp;<a href="index-23.html">W</a>&nbsp;<a href="index-24.html">X</a>&nbsp;</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
Expand Down
4 changes: 2 additions & 2 deletions docs/index-files/index-13.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>M-Index</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
</head>
Expand Down
4 changes: 2 additions & 2 deletions docs/index-files/index-14.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>N-Index</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
</head>
Expand Down
4 changes: 2 additions & 2 deletions docs/index-files/index-15.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>O-Index</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
</head>
Expand Down
12 changes: 10 additions & 2 deletions docs/index-files/index-16.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>P-Index</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
</head>
Expand Down Expand Up @@ -806,6 +806,10 @@ <h2 class="title">P</h2>
<dd>
<div class="block">process MEI slur elements</div>
</dd>
<dt><span class="memberNameLink"><a href="../meico/mei/Mei.html#processSpace-nu.xom.Element-">processSpace(Element)</a></span> - Method in class meico.mei.<a href="../meico/mei/Mei.html" title="class in meico.mei">Mei</a></dt>
<dd>
<div class="block">process an mei space element</div>
</dd>
<dt><span class="memberNameLink"><a href="../meico/mei/Mei.html#processStaff-nu.xom.Element-">processStaff(Element)</a></span> - Method in class meico.mei.<a href="../meico/mei/Mei.html" title="class in meico.mei">Mei</a></dt>
<dd>
<div class="block">process an mei staff element</div>
Expand All @@ -814,6 +818,10 @@ <h2 class="title">P</h2>
<dd>
<div class="block">process an mei staffDef element</div>
</dd>
<dt><span class="memberNameLink"><a href="../meico/mei/Mei.html#processSyl-nu.xom.Element-">processSyl(Element)</a></span> - Method in class meico.mei.<a href="../meico/mei/Mei.html" title="class in meico.mei">Mei</a></dt>
<dd>
<div class="block">process an mei syl element</div>
</dd>
<dt><span class="memberNameLink"><a href="../meico/midi/Midi2MsmConverter.html#processSysexEvent-javax.sound.midi.MidiEvent-">processSysexEvent(MidiEvent)</a></span> - Method in class meico.midi.<a href="../meico/midi/Midi2MsmConverter.html" title="class in meico.midi">Midi2MsmConverter</a></dt>
<dd>
<div class="block">this converts midi sysex events (midi event with a SysexMesage) to msm;
Expand Down
4 changes: 2 additions & 2 deletions docs/index-files/index-17.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>Q-Index</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
</head>
Expand Down
4 changes: 2 additions & 2 deletions docs/index-files/index-18.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon May 18 17:44:24 CEST 2020 -->
<!-- Generated by javadoc (1.8.0_172) on Fri Jul 03 16:02:37 CEST 2020 -->
<title>R-Index</title>
<meta name="date" content="2020-05-18">
<meta name="date" content="2020-07-03">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
</head>
Expand Down
Loading

0 comments on commit 2e3afbc

Please sign in to comment.