music21.volpiano

The Volpiano font is a specialized font for encoding Western Plainchant easily with immediate visual feedback (see the CANTUS database).

This module parses chants encoded in Volpiano and can generate Volpiano from any music21 Stream.

This module will move to a medren package hopefully by v7

ColumnBreak

class music21.volpiano.ColumnBreak(id: str | int | None = None, groups: Groups | None = None, sites: Sites | None = None, duration: Duration | None = None, activeSite: stream.Stream | None = None, style: Style | None = None, editorial: Editorial | None = None, offset: OffsetQL = 0.0, quarterLength: OffsetQLIn | None = None, **keywords)

Indicates that the page breaks at this point in the manuscript

Denoted by three 7s.

ColumnBreak bases

ColumnBreak read-only properties

Read-only properties inherited from Music21Object:

Read-only properties inherited from ProtoM21Object:

ColumnBreak read/write properties

Read/write properties inherited from Music21Object:

ColumnBreak methods

Methods inherited from Music21Object:

Methods inherited from ProtoM21Object:

ColumnBreak instance variables

Instance variables inherited from Music21Object:

ErrorLevel

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

LineBreak

class music21.volpiano.LineBreak(id: str | int | None = None, groups: Groups | None = None, sites: Sites | None = None, duration: Duration | None = None, activeSite: stream.Stream | None = None, style: Style | None = None, editorial: Editorial | None = None, offset: OffsetQL = 0.0, quarterLength: OffsetQLIn | None = None, **keywords)

Indicates that the line breaks at this point in the manuscript.

Denoted by one 7.

LineBreak bases

LineBreak read-only properties

Read-only properties inherited from Music21Object:

Read-only properties inherited from ProtoM21Object:

LineBreak read/write properties

Read/write properties inherited from Music21Object:

LineBreak methods

Methods inherited from Music21Object:

Methods inherited from ProtoM21Object:

LineBreak instance variables

Instance variables inherited from Music21Object:

Neume

class music21.volpiano.Neume(*spannedElements: Music21Object | Sequence[Music21Object], **keywords)

A spanner that represents a Neume. No name of the neume, just that it is a Neume.

Neume bases

Neume read-only properties

Read-only properties inherited from Music21Object:

Read-only properties inherited from ProtoM21Object:

Neume read/write properties

Read/write properties inherited from Music21Object:

Neume methods

Methods inherited from Spanner:

Methods inherited from Music21Object:

Methods inherited from ProtoM21Object:

Neume instance variables

Instance variables inherited from Music21Object:

PageBreak

class music21.volpiano.PageBreak(id: str | int | None = None, groups: Groups | None = None, sites: Sites | None = None, duration: Duration | None = None, activeSite: stream.Stream | None = None, style: Style | None = None, editorial: Editorial | None = None, offset: OffsetQL = 0.0, quarterLength: OffsetQLIn | None = None, **keywords)

Indicates that the page breaks at this point in the manuscript

Denoted by two 7s.

PageBreak bases

PageBreak read-only properties

Read-only properties inherited from Music21Object:

Read-only properties inherited from ProtoM21Object:

PageBreak read/write properties

Read/write properties inherited from Music21Object:

PageBreak methods

Methods inherited from Music21Object:

Methods inherited from ProtoM21Object:

PageBreak instance variables

Instance variables inherited from Music21Object:

Functions

music21.volpiano.fromStream(s, *, layoutToBreaks=False)

Convert a Stream to Volpiano.

These tests show how the same input converts back out:

>>> volpianoInput = '1--c--d---f--d---ed--c--d---f---g--h--j---hgf--g--h---'
>>> veniSancti = volpiano.toPart(volpianoInput)
>>> volpiano.fromStream(veniSancti)
'1---c-d-f-d-ed-c-d-f-g-h-j-hg-f-g-h-'
>>> breakTest = volpiano.toPart('1---e-E--')
>>> volpiano.fromStream(breakTest)
'1---e-E-'
>>> accTest = volpiano.toPart('1---e--we--e--We--e')
>>> volpiano.fromStream(accTest)
'1---e-we-e-We-e-'
music21.volpiano.toPart(volpianoText, *, breaksToLayout=False)

Returns a music21 Part from volpiano text.

>>> veniSancti = volpiano.toPart('1---c--d---f--d---ed--c--d---f'
...                              + '---g--h--j---hgf--g--h---')
>>> veniSancti.show('text')
{0.0} <music21.stream.Measure 0 offset=0.0>
    {0.0} <music21.clef.TrebleClef>
    {0.0} <music21.note.Note C>
    {1.0} <music21.note.Note D>
    {2.0} <music21.note.Note F>
    {3.0} <music21.note.Note D>
    {4.0} <music21.note.Note E>
    {5.0} <music21.note.Note D>
    {6.0} <music21.volpiano.Neume <music21.note.Note E><music21.note.Note D>>
    {6.0} <music21.note.Note C>
    {7.0} <music21.note.Note D>
    {8.0} <music21.note.Note F>
    {9.0} <music21.note.Note G>
    {10.0} <music21.note.Note A>
    {11.0} <music21.note.Note B>
    {12.0} <music21.note.Note A>
    {13.0} <music21.note.Note G>
    {14.0} <music21.note.Note F>
    {15.0} <music21.volpiano.Neume <music21.note.Note A><music21.note.Note G>>
    {15.0} <music21.note.Note G>
    {16.0} <music21.note.Note A>

Clefs!

>>> clefTest = volpiano.toPart('1---c--2---c')
>>> clefTest.show('text')
{0.0} <music21.stream.Measure 0 offset=0.0>
    {0.0} <music21.clef.TrebleClef>
    {0.0} <music21.note.Note C>
    {1.0} <music21.clef.BassClef>
    {1.0} <music21.note.Note E>
>>> for n in clefTest.recurse().notes:
...     n.nameWithOctave
'C4'
'E2'

Flats and Naturals:

>>> accTest = volpiano.toPart('1---e--we--e--We--e')
>>> [n.name for n in accTest.recurse().notes]
['E', 'E-', 'E-', 'E', 'E']

Breaks and barlines

>>> breakTest = volpiano.toPart('1---e-7-e-77-e-777-e-3-e-4')
>>> breakTest.show('text')
{0.0} <music21.stream.Measure 0 offset=0.0>
    {0.0} <music21.clef.TrebleClef>
    {0.0} <music21.note.Note E>
    {1.0} <music21.volpiano.LineBreak object at 0x105250fd0>
    {1.0} <music21.note.Note E>
    {2.0} <music21.volpiano.PageBreak object at 0x105262128>
    {2.0} <music21.note.Note E>
    {3.0} <music21.volpiano.ColumnBreak object at 0x105262240>
    {3.0} <music21.note.Note E>
    {4.0} <music21.bar.Barline type=regular>
{4.0} <music21.stream.Measure 0 offset=4.0>
    {0.0} <music21.note.Note E>
    {1.0} <music21.bar.Barline type=double>

As layout objects using breaksToLayout=True

>>> breakTest = volpiano.toPart('1---e-7-e-77-e-777-e-3-e-4', breaksToLayout=True)
>>> breakTest.show('text')
{0.0} <music21.stream.Measure 0 offset=0.0>
    {0.0} <music21.clef.TrebleClef>
    {0.0} <music21.note.Note E>
    {1.0} <music21.layout.SystemLayout>
    {1.0} <music21.note.Note E>
    {2.0} <music21.layout.PageLayout>
    {2.0} <music21.note.Note E>
    {3.0} <music21.volpiano.ColumnBreak object at 0x105262240>
    {3.0} <music21.note.Note E>
    {4.0} <music21.bar.Barline type=regular>
{4.0} <music21.stream.Measure 0 offset=4.0>
    {0.0} <music21.note.Note E>
    {1.0} <music21.bar.Barline type=double>

Liquescence test:

>>> breakTest = volpiano.toPart('1---e-E-')
>>> breakTest.recurse().notes[0].editorial.liquescence
False
>>> breakTest.recurse().notes[0].notehead
'normal'
>>> breakTest.recurse().notes[1].editorial.liquescence
True
>>> breakTest.recurse().notes[1].notehead
'x'
  • Changed in v5.7: corrected spelling of liquescence.