music21.style

The style module represents information about the style of a Note, Accidental, etc. such that precise positioning information, layout, size, etc. can be specified.

BeamStyle

class music21.style.BeamStyle

Style for beams

BeamStyle bases

BeamStyle read-only properties

Read-only properties inherited from ProtoM21Object:

BeamStyle read/write properties

Read/write properties inherited from Style:

BeamStyle methods

Methods inherited from ProtoM21Object:

BeamStyle instance variables

Instance variables inherited from Style:

BezierStyle

class music21.style.BezierStyle

From the MusicXML Definition.

BezierStyle bases

BezierStyle read-only properties

Read-only properties inherited from ProtoM21Object:

BezierStyle read/write properties

Read/write properties inherited from Style:

BezierStyle methods

Methods inherited from ProtoM21Object:

BezierStyle instance variables

Instance variables inherited from Style:

Enclosure

class music21.style.Enclosure(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)

Enclosure bases

LineStyle

class music21.style.LineStyle

from the MusicXML Definition

Defines lineShape (‘straight’, ‘curved’ or None) lineType (‘solid’, ‘dashed’, ‘dotted’, ‘wavy’ or None) dashLength (in tenths) spaceLength (in tenths)

LineStyle bases

LineStyle read-only properties

Read-only properties inherited from ProtoM21Object:

LineStyle read/write properties

Read/write properties inherited from Style:

LineStyle methods

Methods inherited from ProtoM21Object:

LineStyle instance variables

Instance variables inherited from Style:

NoteStyle

class music21.style.NoteStyle

A Style object that also includes stem and accidental style information.

Beam style is stored on the Beams object. Lyric style is stored on the Lyric object.

NoteStyle bases

NoteStyle read-only properties

Read-only properties inherited from ProtoM21Object:

NoteStyle read/write properties

Read/write properties inherited from Style:

NoteStyle methods

Methods inherited from ProtoM21Object:

NoteStyle instance variables

NoteStyle.accidentalStyle

An optional style.Style object describing what the accidental looks like.

>>> n = note.Note()
>>> n.style.accidentalStyle is None
True

Note that accidentalStyle is not created automatically. Users must instantiate a Style object.

>>> n.style.accidentalStyle = style.Style()
>>> n.style.accidentalStyle.relativeX = -2.0

Note: do not use .hideObjectOnPrint in accidentalStyle to hide the accidental. Set the displayType on the Accidental itself.

This object may eventually move to Note.pitch.accidental.style.

NoteStyle.noteSize

An optional string representing the size of the note as a type of note.

Valid values are None (=normal), ‘cue’, ‘grace’, ‘graceCue’, and ‘large’ (taken from MusicXML, with “graceCue” replacing “grace-cue”).

NoteStyle.stemStyle

An optional style.Style object describing what the stem looks like.

>>> n = note.Note()
>>> n.style.stemStyle is None
True

Note that stemStyle is not created automatically. Users must instantiate a Style object.

>>> n.style.stemStyle = style.Style()
>>> n.style.stemStyle.color = 'red'

Instance variables inherited from Style:

StreamStyle

class music21.style.StreamStyle

Includes several elements in the MusicXML <appearance> tag in <defaults> along with <music-font> and <word-font>

StreamStyle bases

StreamStyle read-only properties

Read-only properties inherited from ProtoM21Object:

StreamStyle read/write properties

Read/write properties inherited from Style:

StreamStyle methods

Methods inherited from ProtoM21Object:

StreamStyle instance variables

Instance variables inherited from Style:

Style

class music21.style.Style

A style object is a lightweight object that keeps track of information about the look of an object.

>>> st = style.Style()
>>> st.units
'tenths'
>>> st.absoluteX is None
True
>>> st.absoluteX = 20.4
>>> st.absoluteX
20.4

Style bases

Style read-only properties

Read-only properties inherited from ProtoM21Object:

Style read/write properties

Style.absoluteY

Get or set the vertical position, where 0 is the top line of the staff and units are whatever is defined in .units, generally “tenths”, meaning 1/10th of a staff space.

Other legal positions are ‘above’ and ‘below’ which are synonyms for 10 and -70 respectively (for 5-line staves; other staves are not yet implemented) This behavior may change in music21 v8 or after.

>>> te = style.Style()
>>> te.absoluteY = 10
>>> te.absoluteY
10
>>> te.absoluteY = 'below'
>>> te.absoluteY
-70

Setting an invalid position raises a TextFormatException

>>> te.absoluteY = 'hello'
Traceback (most recent call last):
music21.style.TextFormatException:
    Not a supported absoluteY position: 'hello'
Style.enclosure

Get or set the enclosure as a style.Enclosure enum or None.

Valid names are:

  • “rectangle”/style.Enclosure.RECTANGLE,

  • “square”/style.Enclosure.SQUARE,

  • “oval”/style.Enclosure.OVAL,

  • “circle”/style.Enclosure.CIRCLE,

  • “bracket”/style.Enclosure.BRACKET,

  • “inverted-bracket”/style.Enclosure.INVERTED_BRACKET (output in musicxml 4 only)

  • None/”none”/style.Enclosure.NONE (returns Python None object)

or the following other shapes with their ALLCAPS Enclosure equivalents:

triangle, diamond, pentagon, hexagon, heptagon, octagon, nonagon, or decagon.

>>> tst = style.TextStyle()
>>> tst.enclosure = None
>>> tst.enclosure = style.Enclosure.RECTANGLE
>>> tst.enclosure
<Enclosure.RECTANGLE>

Setting as a string is still supported, but is converted to an enum.

>>> tst.enclosure = 'octagon'
>>> tst.enclosure
<Enclosure.OCTAGON>

Setting an invalid enclosure raises a TextFormatException

>>> tst.enclosure = 'parabola'
Traceback (most recent call last):
music21.style.TextFormatException:
    Not a supported enclosure: 'parabola'

Style methods

Methods inherited from ProtoM21Object:

Style instance variables

Style.hideObjectOnPrint

If set to True, the Music21Object will not print upon output (only used in MusicXML output at this point and in Lilypond output for notes, chords, and rests).

Style.units

What distances are measured in. The default “tenths” is a concept borrowed from MusicXML which refers to 1/10th of the distance between two staff lines. It is currently also the only supported unit.

StyleMixin

class music21.style.StyleMixin

Mixin for any class that wants to support style and editorial, since several non-music21 objects, such as Lyrics and Accidentals will support Style.

Not used by Music21Objects because of the added trouble in copying etc. so there is code duplication with base.Music21Object

StyleMixin bases

StyleMixin read-only properties

StyleMixin.hasEditorialInformation

Returns True if there is a Editorial object already associated with this object, False otherwise.

Calling .style on an object will always create a new Style object, so even though a new Style object isn’t too expensive to create, this property helps to prevent creating new Styles more than necessary.

>>> acc = pitch.Accidental('#')
>>> acc.hasEditorialInformation
False
>>> acc.editorial
<music21.editorial.Editorial {}>
>>> acc.hasEditorialInformation
True
StyleMixin.hasStyleInformation

Returns True if there is a Style object already associated with this object, False otherwise.

Calling .style on an object will always create a new Style object, so even though a new Style object isn’t too expensive to create, this property helps to prevent creating new Styles more than necessary.

>>> lObj = note.Lyric('hello')
>>> lObj.hasStyleInformation
False
>>> lObj.style
<music21.style.TextStylePlacement object at 0x10b0a2080>
>>> lObj.hasStyleInformation
True

StyleMixin read/write properties

StyleMixin.editorial

a Editorial object that stores editorial information (comments, footnotes, harmonic information, ficta).

Created automatically as needed:

>>> acc = pitch.Accidental()
>>> acc.editorial
<music21.editorial.Editorial {}>
>>> acc.editorial.ficta = pitch.Accidental('sharp')
>>> acc.editorial.ficta
<music21.pitch.Accidental sharp>
>>> acc.editorial
<music21.editorial.Editorial {'ficta': <music21.pitch.Accidental sharp>}>
StyleMixin.style

Returns (or Creates and then Returns) the Style object associated with this object, or sets a new style object. Different classes might use different Style objects because they might have different style needs (such as text formatting or bezier positioning)

Eventually will also query the groups to see if they have any styles associated with them.

>>> acc = pitch.Accidental()
>>> st = acc.style
>>> st
<music21.style.TextStyle object at 0x10ba96208>
>>> st.absoluteX = 20.0
>>> st.absoluteX
20.0
>>> acc.style = style.TextStyle()
>>> acc.style.absoluteX is None
True

TextStyle

class music21.style.TextStyle

A Style object that also includes text formatting.

>>> ts = style.TextStyle()
>>> ts.classes
('TextStyle', 'Style', 'ProtoM21Object', 'object')

TextStyle bases

TextStyle read-only properties

Read-only properties inherited from ProtoM21Object:

TextStyle read/write properties

TextStyle.alignHorizontal

Get or set the horizontal alignment. Valid values are left, right, center, or None

>>> te = style.TextStyle()
>>> te.alignHorizontal = 'right'
>>> te.alignHorizontal
'right'

Invalid horizontal aligns raise a TextFormatException:

>>> te.alignHorizontal = 'hello'
Traceback (most recent call last):
music21.style.TextFormatException:
    Invalid horizontal align: 'hello'
TextStyle.alignVertical

Get or set the vertical align. Valid values are top, middle, bottom, baseline or None

>>> te = style.TextStyle()
>>> te.alignVertical = 'top'
>>> te.alignVertical
'top'

Invalid vertical aligns raise a TextFormatException:

>>> te.alignVertical = 'hello'
Traceback (most recent call last):
music21.style.TextFormatException:
    Invalid vertical align: 'hello'
TextStyle.fontFamily

Returns a list of font family names associated with the style, or sets the font family name list.

If a single string is passed then it is converted to a list.

>>> ts = style.TextStyle()
>>> ff = ts.fontFamily
>>> ff
[]
>>> ff.append('Times')
>>> ts.fontFamily
['Times']
>>> ts.fontFamily.append('Garamond')
>>> ts.fontFamily
['Times', 'Garamond']
>>> ts.fontFamily = 'Helvetica, sans-serif'
>>> ts.fontFamily
['Helvetica', 'sans-serif']
TextStyle.fontSize

Get or set the size. Best, an int or float, but also a css font size

>>> tst = style.TextStyle()
>>> tst.fontSize = 20
>>> tst.fontSize
20
TextStyle.fontStyle

Get or set the style, as normal, italic, bold, and bolditalic. None is currently an acceptable value which should be “normal”.

>>> tst = style.TextStyle()
>>> tst.fontStyle = 'bold'
>>> tst.fontStyle
'bold'

Invalid values raise a TextFormatException

>>> tst.fontStyle = 'hello'
Traceback (most recent call last):
music21.style.TextFormatException:
    Not a supported fontStyle: 'hello'
TextStyle.fontWeight

Get or set the weight, as normal, or bold.

>>> tst = style.TextStyle()
>>> tst.fontWeight = 'bold'
>>> tst.fontWeight
'bold'
TextStyle.justify

Get or set the justification. Valid values are left, center, right, full (not supported by MusicXML), and None

>>> tst = style.TextStyle()
>>> tst.justify = 'center'
>>> tst.justify
'center'

Invalid values raise a TextFormatException

>>> tst.justify = 'hello'
Traceback (most recent call last):
music21.style.TextFormatException:
    Not a supported justification: 'hello'
TextStyle.letterSpacing

Get or set the letter spacing.

>>> tst = style.TextStyle()
>>> tst.letterSpacing = 20
>>> tst.letterSpacing
20.0
>>> tst.letterSpacing = 'normal'

Read/write properties inherited from Style:

TextStyle methods

Methods inherited from ProtoM21Object:

TextStyle instance variables

Instance variables inherited from Style:

TextStylePlacement

class music21.style.TextStylePlacement

TextStyle plus a placement attribute

TextStylePlacement bases

TextStylePlacement read-only properties

Read-only properties inherited from ProtoM21Object:

TextStylePlacement read/write properties

Read/write properties inherited from TextStyle:

Read/write properties inherited from Style:

TextStylePlacement methods

Methods inherited from ProtoM21Object:

TextStylePlacement instance variables

Instance variables inherited from Style: