<curve>

A curved line that cannot be represented by a more specific element, such as a slur.
Module MEI.usersymbols
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
@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
@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
@label(optional)Provides a name or label for an element. The value may be any string. Value of datatype string. att.commonPart
@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
@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
@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
@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.critapplem rdg
MEI.harmonyharm
MEI.neumessyllable
MEI.usersymbolssymbolDef
May contain
Empty
Declaration
<classes>
<memberOf key="att.common.anl"/>
<memberOf key="att.color"/>
<memberOf key="att.common"/>
<memberOf key="att.curvature"/>
<memberOf key="att.curverend"/>
<memberOf key="att.facsimile"/>
<memberOf key="att.startendid"/>
<memberOf key="att.typed"/>
<memberOf key="att.visualoffset"/>
<memberOf key="att.visualoffset2"/>
<memberOf key="att.xy"/>
<memberOf key="att.xy2"/>
<memberOf key="model.graphicprimitiveLike"/>
</classes>
<content>
<rng:empty/>
</content>
Remarks

The starting point of the curve may be identified in absolute output coordinate terms using the x and y attributes or relative to the location of another element using the startid attribute. The attributes in the att.visualoffset class may be used to record horizontal, vertical, or time offsets from the absolute coordinates or from the location of the referenced element. Similarly, the terminal point of the curve may be recorded using either the x2 and y2 coordinates or in relation to the location of another element using the endid attribute. Attributes in the att.visualoffset2 class maybe used to record the offsets of the ending point. The bulge attribute or, alternatively, the bezier attribute, describe the shape of the curve and the lform and lwidth attributes capture its appearance.

Constraint
In the symbolDef context, curve must have either a startid attribute or x and y attributes.
In the symbolDef context, curve must have either an endid attribute or both x2 and y2 attributes.
In the symbolDef context, curve must have either a bezier or bulge attribute.
<sch:rule context="mei:curve[ancestor::mei:symbolDef]">
<sch:assert test="@startid or (@x and @y)">In the symbolDef context, curve must have either a startid attribute or x and y attributes.</sch:assert>
<sch:assert test="@endid or (@x2 and @y2)">In the symbolDef context, curve must have either an endid attribute or both x2 and y2 attributes.</sch:assert>
<sch:assert test="@bezier or @bulge">In the symbolDef context, curve must have either a bezier or bulge attribute.</sch:assert>
</sch:rule>