<phrase>

Indication of 1) a "unified melodic idea" or 2) performance technique.
Module MEI.shared
Attributes
@bezier(optional)Records the placement of Bezier control points as a series of pairs of space-separated values; e.g., 19 45 -32 118. One or more values, each consisting of a sequence of decimal and decimal sub-values. att.curvature
@bulge(optional)Describes a curve as one or more pairs of values with respect to an imaginary line connecting the starting and ending points of the curve. The first value captures a distance to the left (positive value) or right (negative value) of the line, expressed in virtual units. The second value of each pair represents a point along the line, expressed as a percentage of the line's length. N.B. An MEI virtual unit (VU) is half the distance between adjacent staff lines. One or more of decimal. att.curvature
@color(optional)Used to indicate visual appearance. Do not confuse this with the musical term 'color' as used in pre-CMN notation. Value conforms to data.COLOR. att.color
@copyof(optional)Points to an element of which the current element is a copy. Value conforms to data.URI. att.common.anl
@corresp(optional)Used to point to other elements that correspond to this one in a generic fashion. One or more values from data.URI, separated by spaces. att.common.anl
@curvedir(optional)Describes a curve with a generic term indicating the direction of curvature. Allowed values are: "above" (Upward curve.), "below" (Downward curve.), "mixed" (A "meandering" curve, both above and below the items it pertains to.)att.curvature
@dots(optional)Records the number of augmentation dots required by a dotted duration. Value conforms to data.AUGMENTDOT. att.augmentdots
@dur(optional)Records duration using optionally dotted, relative durational values provided by the data.DURATION datatype. When the duration is "irrational", as is sometimes the case with tuplets, multiple space-separated values that add up to the total duration may be used. When dotted values are present, the dots attribute must be ignored. One or more values from data.DURATION.additive, separated by spaces. att.duration.additive
@dur.ges(optional)Records performed duration information that differs from the written duration. Its value may be expressed in several forms; that is, ppq (MIDI clicks and MusicXML 'divisions'), Humdrum **recip values, beats, seconds, or mensural duration values. Value conforms to data.DURATION.gestural. att.duration.performed
@endho(optional)Records the horizontal adjustment of a feature's programmatically-determined end point. Value conforms to data.MEASUREMENTREL. att.visualoffset2.ho
@endid(optional)Indicates the final element in a sequence of events to which the feature applies. Value conforms to data.URI. att.startendid
@endto(optional)Records a timestamp adjustment of a feature's programmatically-determined end point. Value conforms to data.TSTAMPOFFSET. att.visualoffset2.to
@endvo(optional)Records a vertical adjustment of a feature's programmatically-determined end point. Value conforms to data.MEASUREMENTREL. att.visualoffset2.vo
@evaluate(optional)Specifies the intended meaning when a participant in a relationship is itself a pointer. Allowed values are: "all" (If an element pointed to is itself a pointer, then the target of that pointer will be taken, and so on, until an element is found which is not a pointer.), "one" (If an element pointed to is itself a pointer, then its target (whether a pointer or not) is taken as the target of this pointer.), "none" (No further evaluation of targets is carried out beyond that needed to find the element(s) specified in plist or target attribute.)att.targeteval
@facs(optional)Permits the current element to reference a facsimile surface or image zone which corresponds to it. One or more values from data.URI, separated by spaces. att.facsimile
@ho(optional)Records a horizontal adjustment to a feature's programmatically-determined location in terms of staff interline distance; that is, in units of 1/2 the distance between adjacent staff lines. Value conforms to data.MEASUREMENTREL. att.visualoffset.ho
@join(optional)Used for linking visually separate entities that form a single logical entity, for example, multiple slurs broken across a system break that form a single musical phrase. Also used to indicate a measure which metrically completes the current one. Record the identifiers of the separately encoded components, excluding the one carrying the attribute. One or more values from data.URI, separated by spaces. att.joined
@label(optional)Provides a name or label for an element. The value may be any string. Value of datatype string. att.commonPart
@layer(optional)Identifies the layer to which a feature applies. One or more values of datatype positiveInteger, separated by spaces. att.layerident
@lform(optional)Describes the line style of a curve. Value conforms to data.LINEFORM. att.curverend
@lwidth(optional)Width of a curved line. Value conforms to data.LINEWIDTH. att.curverend
@n(optional)Provides a number-like designation for an element. Value conforms to token. att.common
@next(optional)Used to point to the next event(s) in a user-defined collection. One or more values from data.URI, separated by spaces. att.common.anl
@plist(optional)Contains a space separated list of references that identify active participants in a collection/relationship, such as notes under a phrase mark; that is, the entities pointed "from". One or more values from data.URI, separated by spaces. att.plist
@prev(optional)Points to the previous event(s) in a user-defined collection. One or more values from data.URI, separated by spaces. att.common.anl
@sameas(optional)Points to an element that is the same as the current element but is not a literal copy of the current element. One or more values from data.URI, separated by spaces. att.common.anl
@staff(optional)Signifies the staff on which a notated event occurs or to which a control event applies. Mandatory when applicable. One or more values of datatype positiveInteger, separated by spaces. att.staffident
@startho(optional)Records the horizontal adjustment of a feature's programmatically-determined start point. Value conforms to data.MEASUREMENTREL. att.visualoffset2.ho
@startid(optional)Holds a reference to the first element in a sequence of events to which the feature applies. Value conforms to data.URI. att.startid
@startto(optional)Records a timestamp adjustment of a feature's programmatically-determined start point. Value conforms to data.TSTAMPOFFSET. att.visualoffset2.to
@startvo(optional)Records a vertical adjustment of a feature's programmatically-determined start point. Value conforms to data.MEASUREMENTREL. att.visualoffset2.vo
@subtype(optional)Provide any sub-classification for the element, additional to that given by its type attribute. Value of datatype NMTOKEN. att.typed
@synch(optional)Points to elements that are synchronous with the current element. One or more values from data.URI, separated by spaces. att.common.anl
@to(optional)Records a timestamp adjustment of a feature's programmatically-determined location in terms of musical time; that is, beats. Value conforms to data.TSTAMPOFFSET. att.visualoffset.to
@tstamp(optional)Encodes the onset time in terms of musical time, i.e., beats[.fractional_beat_part]. Value conforms to data.BEAT. att.timestamp.musical
@tstamp.ges(optional)Captures performed onset time in several forms; that is, ppq (MIDI clicks and MusicXML 'divisions'), Humdrum **recip values, beats, seconds, or mensural duration values. Value conforms to data.DURATION.gestural. att.timestamp.performed
@tstamp.real(optional)Used to record the onset time in terms of ISO time. Value conforms to data.ISOTIME. att.timestamp.performed
@tstamp2(optional)Encodes the ending point of an event in terms of musical time, i.e., a count of measures plus a beat location. Value conforms to data.MEASUREBEAT. att.timestamp2.musical
@type(optional)Characterizes the element in some sense, using any convenient classification scheme or typology. Value of datatype NMTOKEN. att.typed
@vo(optional)Records the vertical adjustment of a feature's programmatically-determined location in terms of staff interline distance; that is, in units of 1/2 the distance between adjacent staff lines. Value conforms to data.MEASUREMENTREL. att.visualoffset.vo
@when(optional)Indicates the point of occurrence of this feature along a time line. Its value must be the ID of a when element elsewhere in the document. Value conforms to data.URI. att.alignment
@x(optional)Encodes an x coordinate for a feature in an output coordinate system. When it is necessary to record the placement of a feature in a facsimile image, use the facs attribute. Value of datatype decimal. att.xy
@x2(optional)Encodes the optional 2nd x coordinate. Value of datatype decimal. att.xy2
@xml:base(optional)Provides a base URI reference with which applications can resolve relative URI references into absolute URI references. Value conforms to data.URI. att.commonPart
@xml:id(optional)Regularizes the naming of an element and thus facilitates building links between it and other resources. Each id attribute within a document must have a unique value. Value of datatype ID. att.id
@y(optional)Encodes an y coordinate for a feature in an output coordinate system. When it is necessary to record the placement of a feature in a facsimile image, use the facs attribute. Value of datatype decimal. att.xy
@y2(optional)Encodes the optional 2nd y coordinate. Value of datatype decimal. att.xy2
Member of
Contained by
MEI.cmnmeasure
MEI.critapplem rdg
MEI.mensuralligature
MEI.neumessyllable
MEI.sharedlayer
May contain
MEI.usersymbolscurve
Declaration
<classes>
<memberOf key="att.common"/>
<memberOf key="att.facsimile"/>
<memberOf key="att.phrase.log"/>
<memberOf key="att.phrase.vis"/>
<memberOf key="att.phrase.ges"/>
<memberOf key="att.phrase.anl"/>
<memberOf key="att.typed"/>
<memberOf key="model.controleventLike"/>
</classes>
<content>
<rng:zeroOrMore>
<rng:ref name="curve" />
</rng:zeroOrMore>
</content>
Remarks

Historically, the term "slur" indicated two notes performed legato, while the term "phrase" was used for a "unified melodic idea". Nowadays, however, "slur" often has the same meaning as "phrase" (See Read, p. 265-266), since the visual rendition of the two concepts is the same. MEI provides two distinct elements so that those users wishing to maintain a distinction for historical reasons may do so. If the user does not want to maintain the distinction, then the more generic slur element should be employed. The starting point of the phrase/slur may be indicated by either a startid, tstamp, tstamp.ges, or tstamp.real attribute, while the ending point may be recorded by either a dur, dur.ges, endid, or tstamp2 attribute. It is a semantic error not to specify one starting and one ending type of attribute. Either place, bulge, or bezier attributes may be used to record the curvature of the phrase/slur. The slur and tie elements may be used instead of the slur.* and tie.* attributes provided on chord and note elements when 1) they are required by software, or 2) multiple, alternative slurs are needed.

Constraint
Must have one of the attributes: startid, tstamp, tstamp.ges or tstamp.real.
Must have one of the attributes: dur, dur.ges, endid, or tstamp2.
<sch:rule context="mei:phrase">
<sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
<sch:assert test="@dur or @dur.ges or @endid or @tstamp2">Must have one of the attributes: dur, dur.ges, endid, or tstamp2.</sch:assert>
</sch:rule>
Constraint
The visual attributes of the phrase (@bezier, @bulge, @curvedir, @lform, @lwidth, @ho, @startho, @endho, @to, @startto, @endto, @vo, @startvo, @endvo, @x, @y, @x2, and @y2) will be overridden by visual attributes of the contained curve elements.
<sch:rule context="mei:phrase[mei:curve[@bezier or @bulge or @curvedir or @lform or @lwidth or @ho or @startho or @endho or @to or @startto or @endto or @vo or @startvo or @endvo or @x or @y or @x2 or @y2]]">
<sch:assert role="warning" test="not(@bezier or @bulge or @curvedir or @lform or @lwidth or @ho or @startho or @endho or @to or @startto or @endto or @vo or @startvo or @endvo or @x or @y or @x2 or @y2)">The visual attributes of the phrase (@bezier, @bulge, @curvedir, @lform, @lwidth, @ho, @startho, @endho, @to, @startto, @endto, @vo, @startvo, @endvo, @x, @y, @x2, and @y2) will be overridden by visual attributes of the contained curve elements.</sch:assert>
</sch:rule>