music21.romanText.rtObjects

Translation routines for roman numeral analysis text files, as defined and demonstrated by Dmitri Tymoczko, Mark Gotham, Michael Scott Cuthbert, and Christopher Ariza in ISMIR 2019.

RTAnalyticKey

class music21.romanText.rtObjects.RTAnalyticKey(src='', container=None)

An RTAnalyticKey(RTKeyTypeAtom) only defines a change in the key being analyzed. It does not in itself create a Key object.

>>> gMinor = romanText.rtObjects.RTAnalyticKey('g:')
>>> gMinor
<music21.romanText.rtObjects.RTAnalyticKey 'g:'>
>>> gMinor.getKey()
<music21.key.Key of g minor>
>>> bMinor = romanText.rtObjects.RTAnalyticKey('bb:')
>>> bMinor
<music21.romanText.rtObjects.RTAnalyticKey 'bb:'>
>>> bMinor.getKey()
<music21.key.Key of b- minor>

RTAnalyticKey bases

RTAnalyticKey read-only properties

Read-only properties inherited from ProtoM21Object:

RTAnalyticKey methods

Methods inherited from RTKeyTypeAtom:

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTAtom

class music21.romanText.rtObjects.RTAtom(src='', container=None)

In RomanText, definitions of chords, phrases boundaries, open/close parenthesis, beat indicators, etc. appear within measures (RTMeasure objects). These individual elements will be called Atoms, as they are data that is not tagged.

Each atom store a reference to its container (normally an RTMeasure).

>>> chordIV = romanText.rtObjects.RTAtom('IV')
>>> beat4 = romanText.rtObjects.RTAtom('b4')
>>> beat4
<music21.romanText.rtObjects.RTAtom 'b4'>
>>> beat4.isAtom()
True

However, see RTChord, RTBeat, etc. which are subclasses of RTAtom specifically for storing chords, beats, etc.

RTAtom bases

RTAtom read-only properties

Read-only properties inherited from ProtoM21Object:

RTAtom methods

RTAtom.isAtom()

Atoms are any untagged data; generally only found inside a measure definition.

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTBeat

class music21.romanText.rtObjects.RTBeat(src='', container=None)

An RTAtom subclass that defines a beat definition. Also contains a reference to the container.

>>> beatFour = romanText.rtObjects.RTBeat('b4')
>>> beatFour
<music21.romanText.rtObjects.RTBeat 'b4'>

RTBeat bases

RTBeat read-only properties

Read-only properties inherited from ProtoM21Object:

RTBeat methods

RTBeat.getBeatFloatOrFrac()

Gets the beat number as a float or fraction. Time signature independent

>>> RTB = romanText.rtObjects.RTBeat

Simple ones:

>>> RTB('b1').getBeatFloatOrFrac()
1.0
>>> RTB('b2').getBeatFloatOrFrac()
2.0

etc.

with easy float:

>>> RTB('b1.5').getBeatFloatOrFrac()
1.5
>>> RTB('b1.25').getBeatFloatOrFrac()
1.25

with harder:

>>> RTB('b1.33').getBeatFloatOrFrac()
Fraction(4, 3)
>>> RTB('b2.66').getBeatFloatOrFrac()
Fraction(8, 3)
>>> RTB('b1.2').getBeatFloatOrFrac()
Fraction(6, 5)

A third digit of 0.5 adds 1/2 of 1/DENOM of before. Here DENOM is 3 (in 5/3) so we add 1/6 to 5/3 to get 11/6:

>>> RTB('b1.66').getBeatFloatOrFrac()
Fraction(5, 3)
>>> RTB('b1.66.5').getBeatFloatOrFrac()
Fraction(11, 6)

Similarly 0.25 adds 1/4 of 1/DENOM, to get 21/12 or 7/4 or 1.75:

>>> RTB('b1.66.25').getBeatFloatOrFrac()
1.75

And 0.75 adds 3/4 of 1/DENOM to get 23/12:

>>> RTB('b1.66.75').getBeatFloatOrFrac()
Fraction(23, 12)

A weird way of writing ‘b1.5’:

>>> RTB('b1.33.5').getBeatFloatOrFrac()
1.5
RTBeat.getOffset(timeSignature)

Given a time signature, return the offset position specified by this beat.

>>> rtb = romanText.rtObjects.RTBeat('b1.5')
>>> rtb.getOffset(meter.TimeSignature('3/4'))
0.5
>>> rtb.getOffset(meter.TimeSignature('6/8'))
0.75
>>> rtb.getOffset(meter.TimeSignature('2/2'))
1.0
>>> rtb = romanText.rtObjects.RTBeat('b2')
>>> rtb.getOffset(meter.TimeSignature('3/4'))
1.0
>>> rtb.getOffset(meter.TimeSignature('6/8'))
1.5
>>> rtb = romanText.rtObjects.RTBeat('b1.66')
>>> rtb.getOffset(meter.TimeSignature('6/8'))
1.0
>>> rtc = romanText.rtObjects.RTBeat('b1.66.5')
>>> rtc.getOffset(meter.TimeSignature('6/8'))
1.25

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTChord

class music21.romanText.rtObjects.RTChord(src='', container=None)

An RTAtom subclass that defines a chord. Also contains a reference to the container.

>>> chordIV = romanText.rtObjects.RTChord('IV')
>>> chordIV
<music21.romanText.rtObjects.RTChord 'IV'>

RTChord bases

RTChord read-only properties

Read-only properties inherited from ProtoM21Object:

RTChord methods

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTCloseParens

class music21.romanText.rtObjects.RTCloseParens(src=')', container=None)

A simple close parenthesis Atom with a sensible default

>>> romanText.rtObjects.RTCloseParens(')')
<music21.romanText.rtObjects.RTCloseParens ')'>

RTCloseParens bases

RTCloseParens read-only properties

Read-only properties inherited from ProtoM21Object:

RTCloseParens methods

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTEllisonStart

class music21.romanText.rtObjects.RTEllisonStart(src='|*', container=None)
>>> phrase = romanText.rtObjects.RTEllisonStart('|*')
>>> phrase
<music21.romanText.rtObjects.RTEllisonStart '|*'>

RTEllisonStart bases

RTEllisonStart read-only properties

Read-only properties inherited from ProtoM21Object:

RTEllisonStart methods

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTEllisonStop

class music21.romanText.rtObjects.RTEllisonStop(src='*|', container=None)
>>> phrase = romanText.rtObjects.RTEllisonStop('*|')
>>> phrase
<music21.romanText.rtObjects.RTEllisonStop '*|'>

RTEllisonStop bases

RTEllisonStop read-only properties

Read-only properties inherited from ProtoM21Object:

RTEllisonStop methods

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTFile

class music21.romanText.rtObjects.RTFile

Roman Text File access.

RTFile bases

RTFile read-only properties

Read-only properties inherited from ProtoM21Object:

RTFile methods

RTFile.close()
RTFile.open(filename)

Open a file for reading, trying a variety of encodings and then trying them again with an “ignore” flag if it is not possible.

RTFile.openFileLike(fileLike)

Assign a file-like object, such as those provided by StringIO, as an open file object.

RTFile.read()

Read a file. Note that this calls readstr, which processes all tokens.

If number is given, a work number will be extracted if possible.

RTFile.readstr(strSrc)

Read a string and process all Tokens. Returns a ABCHandler instance.

Methods inherited from ProtoM21Object:

RTHandler

class music21.romanText.rtObjects.RTHandler

RTHandler read/write properties

RTHandler.tokens

Get or set tokens for this Handler.

RTHandler methods

RTHandler.definesMovement()

Return True if this handler has 1 or more movement.

>>> rth = romanText.rtObjects.RTHandler()
>>> rth.process('Movement: 1 \n \n m1')
>>> rth.definesMovements()
False
>>> rth.definesMovement()
True
RTHandler.definesMovements(countRequired=2)

Return True if more than one movement is defined in a RT file.

>>> rth = romanText.rtObjects.RTHandler()
>>> rth.process('Movement: 1 \n Movement: 2 \n \n m1')
>>> rth.definesMovements()
True
>>> rth.process('Movement: 1 \n m1')
>>> rth.definesMovements()
False
RTHandler.process(src)

Given an entire specification as a single source string, strSrc, tokenize it. This is usually provided in a file.

RTHandler.splitAtHeader(lines)

Divide string into header and non-header; this is done before tokenization.

>>> rth = romanText.rtObjects.RTHandler()
>>> rth.splitAtHeader(['Title: s', 'Time Signature:', '', 'm1 g: i'])
(['Title: s', 'Time Signature:', ''], ['m1 g: i'])
RTHandler.splitByMovement(duplicateHeader=True)

If we have movements defined, return a list of RTHandler rtObjects, representing header information and each movement, in order.

>>> rth = romanText.rtObjects.RTHandler()
>>> rth.process('Title: Test \n Movement: 1 \n m1 \n Movement: 2 \n m1')
>>> post = rth.splitByMovement(False)
>>> len(post)
3
>>> len(post[0])
1
>>> post[0].__class__
<class 'music21.romanText.rtObjects.RTHandler'>
>>> len(post[1]), len(post[2])
(2, 2)
>>> post = rth.splitByMovement(duplicateHeader=True)
>>> len(post)
2
>>> len(post[0]), len(post[1])
(3, 3)
RTHandler.tokenize(src)

Walk the RT string, creating RT rtObjects along the way.

RTHandler.tokenizeAtoms(line, container=None)

Given a line of data stored in measure consisting only of Atoms, tokenize and return a list.

>>> rth = romanText.rtObjects.RTHandler()
>>> rth.tokenizeAtoms('IV b3 ii7 b4 ii')
[<music21.romanText.rtObjects.RTChord 'IV'>,
 <music21.romanText.rtObjects.RTBeat 'b3'>,
 <music21.romanText.rtObjects.RTChord 'ii7'>,
 <music21.romanText.rtObjects.RTBeat 'b4'>,
 <music21.romanText.rtObjects.RTChord 'ii'>]
>>> rth.tokenizeAtoms('V7 b2 V13 b3 V7 iio6/5[no5]')
[<music21.romanText.rtObjects.RTChord 'V7'>,
 <music21.romanText.rtObjects.RTBeat 'b2'>,
 <music21.romanText.rtObjects.RTChord 'V13'>,
 <music21.romanText.rtObjects.RTBeat 'b3'>,
 <music21.romanText.rtObjects.RTChord 'V7'>,
 <music21.romanText.rtObjects.RTChord 'iio6/5[no5]'>]
>>> tokenList = rth.tokenizeAtoms('I b2 I b2.25 V/ii b2.5 bVII b2.75 V g: IV')
>>> tokenList
[<music21.romanText.rtObjects.RTChord 'I'>,
 <music21.romanText.rtObjects.RTBeat 'b2'>,
 <music21.romanText.rtObjects.RTChord 'I'>,
 <music21.romanText.rtObjects.RTBeat 'b2.25'>,
 <music21.romanText.rtObjects.RTChord 'V/ii'>,
 <music21.romanText.rtObjects.RTBeat 'b2.5'>,
 <music21.romanText.rtObjects.RTChord 'bVII'>,
 <music21.romanText.rtObjects.RTBeat 'b2.75'>,
 <music21.romanText.rtObjects.RTChord 'V'>,
 <music21.romanText.rtObjects.RTAnalyticKey 'g:'>,
 <music21.romanText.rtObjects.RTChord 'IV'>]
>>> tokenList[-2].getKey()
<music21.key.Key of g minor>
>>> rth.tokenizeAtoms('= m3')
[]
>>> tokenList = rth.tokenizeAtoms('g;: ||: V b2 ?(Bb: VII7 b3 III b4 ?)Bb: i :||')
>>> tokenList
[<music21.romanText.rtObjects.RTKey 'g;:'>,
 <music21.romanText.rtObjects.RTRepeatStart '||:'>,
 <music21.romanText.rtObjects.RTChord 'V'>,
 <music21.romanText.rtObjects.RTBeat 'b2'>,
 <music21.romanText.rtObjects.RTOptionalKeyOpen '?(Bb:'>,
 <music21.romanText.rtObjects.RTChord 'VII7'>,
 <music21.romanText.rtObjects.RTBeat 'b3'>,
 <music21.romanText.rtObjects.RTChord 'III'>,
 <music21.romanText.rtObjects.RTBeat 'b4'>,
 <music21.romanText.rtObjects.RTOptionalKeyClose '?)Bb:'>,
 <music21.romanText.rtObjects.RTChord 'i'>,
 <music21.romanText.rtObjects.RTRepeatStop ':||'>]
RTHandler.tokenizeBody(lines)

In the body, we may have measure, time signature, or note declarations, as well as possible other tagged definitions.

RTHandler.tokenizeHeader(lines)

In the header, we only have RTTagged tokens. We can this process these all as the same class.

RTKey

class music21.romanText.rtObjects.RTKey(src='', container=None)

An RTKey(RTAtom) defines both a change in KeySignature and a change in the analyzed Key.

They are defined by “;:” after the Key.

>>> gMinor = romanText.rtObjects.RTKey('g;:')
>>> gMinor
<music21.romanText.rtObjects.RTKey 'g;:'>
>>> gMinor.getKey()
<music21.key.Key of g minor>
>>> bMinor = romanText.rtObjects.RTKey('bb;:')
>>> bMinor
<music21.romanText.rtObjects.RTKey 'bb;:'>
>>> bMinor.getKey()
<music21.key.Key of b- minor>
>>> bMinor.getKeySignature()
<music21.key.KeySignature of 5 flats>
>>> eFlatMajor = romanText.rtObjects.RTKey('Eb;:')
>>> eFlatMajor
<music21.romanText.rtObjects.RTKey 'Eb;:'>
>>> eFlatMajor.getKey()
<music21.key.Key of E- major>

RTKey bases

RTKey read-only properties

Read-only properties inherited from ProtoM21Object:

RTKey methods

Methods inherited from RTKeyTypeAtom:

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTKeySignature

class music21.romanText.rtObjects.RTKeySignature(src='', container=None)

An RTKeySignature(RTAtom) only defines a change in the KeySignature. It does not in itself create a Key object, nor does it change the analysis taking place.

The number after KS defines the number of sharps (negative for flats).

>>> gMinor = romanText.rtObjects.RTKeySignature('KS-2')
>>> gMinor
<music21.romanText.rtObjects.RTKeySignature 'KS-2'>
>>> gMinor.getKeySignature()
<music21.key.KeySignature of 2 flats>
>>> aMajor = romanText.rtObjects.RTKeySignature('KS3')
>>> aMajor.getKeySignature()
<music21.key.KeySignature of 3 sharps>

RTKeySignature bases

RTKeySignature read-only properties

Read-only properties inherited from ProtoM21Object:

RTKeySignature methods

RTKeySignature.getKeySignature()

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTKeyTypeAtom

class music21.romanText.rtObjects.RTKeyTypeAtom(src='', container=None)

RTKeyTypeAtoms contain utility functions for all Key-type tokens, i.e. RTKey, RTAnalyticKey, but not KeySignature.

>>> gMinor = romanText.rtObjects.RTKeyTypeAtom('g;:')
>>> gMinor
<music21.romanText.rtObjects.RTKeyTypeAtom 'g;:'>
>>> gMinor.getKey()
<music21.key.Key of g minor>

RTKeyTypeAtom bases

RTKeyTypeAtom read-only properties

Read-only properties inherited from ProtoM21Object:

RTKeyTypeAtom methods

RTKeyTypeAtom.getKey()

This returns a Key, not a KeySignature object

RTKeyTypeAtom.getKeySignature()

Get a KeySignature object.

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTMeasure

class music21.romanText.rtObjects.RTMeasure(src='')

In RomanText, measures are given one per line and always start with ‘m’.

For instance:

m4 i b3 v b4 VI m5 b2 g: IV b4 V m6 i m7 D: V

Measure ranges can be used and copied, such as:

m8-m9=m4-m5

RTMeasure objects can also define variant readings for a measure:

m1 ii m1var1 ii b2 ii6 b3 IV

Variants are not part of the tag, but are read into an attribute.

Endings are indicated by a single letter after the measure number, such as “a” for first ending.

>>> rtm = romanText.rtObjects.RTMeasure('m15a V6 b1.5 V6/5 b2 I b3 viio6')
>>> rtm.data
'V6 b1.5 V6/5 b2 I b3 viio6'
>>> rtm.number
[15]
>>> rtm.repeatLetter
['a']
>>> rtm.isMeasure()
True

RTMeasure bases

RTMeasure read-only properties

Read-only properties inherited from ProtoM21Object:

RTMeasure methods

RTMeasure.getCopyTarget()

If this measure defines a copy operation, return two lists defining the measures to copy; the second list has the repeat data.

>>> rtm = romanText.rtObjects.RTMeasure('m35-36 = m29-30')
>>> rtm.number
[35, 36]
>>> rtm.getCopyTarget()
([29, 30], ['', ''])
>>> rtm = romanText.rtObjects.RTMeasure('m4 = m1')
>>> rtm.number
[4]
>>> rtm.getCopyTarget()
([1], [''])
RTMeasure.isMeasure()

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTNoChord

class music21.romanText.rtObjects.RTNoChord(src='', container=None)

An RTAtom subclass that defines absence of a chord. Also contains a reference to the container.

>>> chordNC = romanText.rtObjects.RTNoChord('NC')
>>> chordNC
<music21.romanText.rtObjects.RTNoChord 'NC'>
>>> rth = romanText.rtObjects.RTHandler()
>>> rth.tokenizeAtoms('nc NC N.C.')
[<music21.romanText.rtObjects.RTNoChord 'nc'>,
 <music21.romanText.rtObjects.RTNoChord 'NC'>,
 <music21.romanText.rtObjects.RTNoChord 'N.C.'>]

RTNoChord bases

RTNoChord read-only properties

Read-only properties inherited from ProtoM21Object:

RTNoChord methods

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTOpenParens

class music21.romanText.rtObjects.RTOpenParens(src='(', container=None)

A simple open parenthesis Atom with a sensible default

>>> romanText.rtObjects.RTOpenParens('(')
<music21.romanText.rtObjects.RTOpenParens '('>

RTOpenParens bases

RTOpenParens read-only properties

Read-only properties inherited from ProtoM21Object:

RTOpenParens methods

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTOptionalKeyClose

class music21.romanText.rtObjects.RTOptionalKeyClose(src='', container=None)

Marks the end of an optional Key area which does not affect the roman numeral analysis.

For example, it is possible to analyze in Bb major, while remaining in g minor.

>>> possibleKey = romanText.rtObjects.RTOptionalKeyClose('?)Bb:')
>>> possibleKey
<music21.romanText.rtObjects.RTOptionalKeyClose '?)Bb:'>
>>> possibleKey.getKey()
<music21.key.Key of B- major>

RTOptionalKeyClose bases

RTOptionalKeyClose read-only properties

Read-only properties inherited from ProtoM21Object:

RTOptionalKeyClose methods

RTOptionalKeyClose.getKey()

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTOptionalKeyOpen

class music21.romanText.rtObjects.RTOptionalKeyOpen(src='', container=None)

Marks the beginning of an optional Key area which does not affect the roman numeral analysis. (For instance, it is possible to analyze in Bb major, while remaining in g minor)

>>> possibleKey = romanText.rtObjects.RTOptionalKeyOpen('?(Bb:')
>>> possibleKey
<music21.romanText.rtObjects.RTOptionalKeyOpen '?(Bb:'>
>>> possibleKey.getKey()
<music21.key.Key of B- major>

RTOptionalKeyOpen bases

RTOptionalKeyOpen read-only properties

Read-only properties inherited from ProtoM21Object:

RTOptionalKeyOpen methods

RTOptionalKeyOpen.getKey()

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTPhraseBoundary

class music21.romanText.rtObjects.RTPhraseBoundary(src='||', container=None)
>>> phrase = romanText.rtObjects.RTPhraseBoundary('||')
>>> phrase
<music21.romanText.rtObjects.RTPhraseBoundary '||'>

RTPhraseBoundary bases

RTPhraseBoundary read-only properties

Read-only properties inherited from ProtoM21Object:

RTPhraseBoundary methods

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTPhraseMarker

class music21.romanText.rtObjects.RTPhraseMarker(src='', container=None)

A Phrase Marker:

>>> rtPhraseMarker = romanText.rtObjects.RTPhraseMarker('')
>>> rtPhraseMarker
<music21.romanText.rtObjects.RTPhraseMarker ''>

RTPhraseMarker bases

RTPhraseMarker read-only properties

Read-only properties inherited from ProtoM21Object:

RTPhraseMarker methods

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTRepeat

class music21.romanText.rtObjects.RTRepeat(src='', container=None)
>>> repeat = romanText.rtObjects.RTRepeat('||:')
>>> repeat
<music21.romanText.rtObjects.RTRepeat '||:'>

RTRepeat bases

RTRepeat read-only properties

Read-only properties inherited from ProtoM21Object:

RTRepeat methods

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTRepeatStart

class music21.romanText.rtObjects.RTRepeatStart(src='||:', container=None)
>>> repeat = romanText.rtObjects.RTRepeatStart()
>>> repeat
<music21.romanText.rtObjects.RTRepeatStart ...'||:'>

RTRepeatStart bases

RTRepeatStart read-only properties

Read-only properties inherited from ProtoM21Object:

RTRepeatStart methods

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTRepeatStop

class music21.romanText.rtObjects.RTRepeatStop(src=':||', container=None)
>>> repeat = romanText.rtObjects.RTRepeatStop()
>>> repeat
<music21.romanText.rtObjects.RTRepeatStop ...':||'>

RTRepeatStop bases

RTRepeatStop read-only properties

Read-only properties inherited from ProtoM21Object:

RTRepeatStop methods

Methods inherited from RTAtom:

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTTagged

class music21.romanText.rtObjects.RTTagged(src='')

In romanText, some data elements are tags, that is a tag name, a colon, optional whitespace, and data. In non-RTTagged elements, there is just data.

All tagged tokens are subclasses of this class. Examples are:

Title: Die Jahrzeiten Composer: Fanny Mendelssohn

>>> rtTag = romanText.rtObjects.RTTagged('Title: Die Jahrzeiten')
>>> rtTag.tag
'Title'
>>> rtTag.data
'Die Jahrzeiten'
>>> rtTag.isTitle()
True
>>> rtTag.isComposer()
False

RTTagged bases

RTTagged read-only properties

Read-only properties inherited from ProtoM21Object:

RTTagged methods

RTTagged.isAnalyst()

True if tag represents an analyst, otherwise False.

>>> tag = romanText.rtObjects.RTTagged('Analyst: This is an analyst.')
>>> tag.isAnalyst()
True
>>> tag = romanText.rtObjects.RTTagged('Nothing: Nothing at all.')
>>> tag.isAnalyst()
False
RTTagged.isComposer()

True is the tag represents a composer.

>>> rth = romanText.rtObjects.RTTagged('Composer: Claudio Monteverdi')
>>> rth.isComposer()
True
>>> rth.isTitle()
False
>>> rth.isWork()
False
>>> rth.data
'Claudio Monteverdi'
RTTagged.isForm()

True if tag represents a form, otherwise False.

>>> tag = romanText.rtObjects.RTTagged('Form: This is a form.')
>>> tag.isForm()
True
>>> tag = romanText.rtObjects.RTTagged('Nothing: Nothing at all.')
>>> tag.isForm()
False
RTTagged.isKeySignature()

True if tag represents a key signature, otherwise False.

>>> tag = romanText.rtObjects.RTTagged('KeySignature: This is a key signature.')
>>> tag.isKeySignature()
True
>>> tag.data
'This is a key signature.'

KeySignatures are a type of tagged data found outside of measures, such as “Key Signature: -1” meaning one flat.

Key signatures are generally numbers representing the number of sharps (or negative for flats). Non-standard key signatures are not supported.

>>> tag = romanText.rtObjects.RTTagged('KeySignature: -3')
>>> tag.data
'-3'

music21 supports one legacy key signature type: KeySignature: Bb which represents a one-flat signature. Important to note: no other key signatures of this type are supported. (For instance, KeySignature: Ab has no effect)

>>> tag = romanText.rtObjects.RTTagged('KeySignature: Bb')
>>> tag.data
'Bb'

Testing that .isKeySignature returns False for non-key signatures:

>>> tag = romanText.rtObjects.RTTagged('Nothing: Nothing at all.')
>>> tag.isKeySignature()
False

N.B.: this is not the same as a key definition found inside a Measure. These are represented by RTKey rtObjects, defined below, and are not RTTagged rtObjects, but RTAtom subclasses.

RTTagged.isMovement()

True if tag represents a movement, otherwise False.

>>> tag = romanText.rtObjects.RTTagged('Movement: This is a movement.')
>>> tag.isMovement()
True
>>> tag = romanText.rtObjects.RTTagged('Nothing: Nothing at all.')
>>> tag.isMovement()
False
RTTagged.isNote()

True if tag represents a note, otherwise False.

>>> tag = romanText.rtObjects.RTTagged('Note: This is a note.')
>>> tag.isNote()
True
>>> tag = romanText.rtObjects.RTTagged('Nothing: Nothing at all.')
>>> tag.isNote()
False
RTTagged.isPedal()

True if tag represents a pedal, otherwise False.

>>> tag = romanText.rtObjects.RTTagged('Pedal: This is a pedal.')
>>> tag.isPedal()
True
>>> tag = romanText.rtObjects.RTTagged('Nothing: Nothing at all.')
>>> tag.isPedal()
False
RTTagged.isPiece()

True if tag represents a piece, otherwise False.

>>> tag = romanText.rtObjects.RTTagged('Piece: This is a piece.')
>>> tag.isPiece()
True
>>> tag = romanText.rtObjects.RTTagged('Nothing: Nothing at all.')
>>> tag.isPiece()
False
RTTagged.isProofreader()

True if tag represents a proofreader, otherwise False.

>>> tag = romanText.rtObjects.RTTagged('Proofreader: This is a proofreader.')
>>> tag.isProofreader()
True
>>> tag = romanText.rtObjects.RTTagged('Nothing: Nothing at all.')
>>> tag.isProofreader()
False
RTTagged.isSeventhMinor()

True if tag represents a configuration setting for setting vii/viio/VII in minor

>>> tag = romanText.rtObjects.RTTagged('Seventh Minor: Courtesy')
>>> tag.isSeventhMinor()
True
>>> tag.data
'Courtesy'
RTTagged.isSixthMinor()

True if tag represents a configuration setting for setting vi/vio/VI in minor

>>> tag = romanText.rtObjects.RTTagged('Sixth Minor: Flat')
>>> tag.isSixthMinor()
True
>>> tag.data
'Flat'
RTTagged.isTimeSignature()

True if tag represents a time signature, otherwise False.

>>> tag = romanText.rtObjects.RTTagged('TimeSignature: This is a time signature.')
>>> tag.isTimeSignature()
True
>>> tag = romanText.rtObjects.RTTagged('Nothing: Nothing at all.')
>>> tag.isTimeSignature()
False

TimeSignature header data can be found intermingled with measures.

RTTagged.isTitle()

True if tag represents a title, otherwise False.

>>> tag = romanText.rtObjects.RTTagged('Title: This is a title.')
>>> tag.isTitle()
True
>>> tag = romanText.rtObjects.RTTagged('Nothing: Nothing at all.')
>>> tag.isTitle()
False
RTTagged.isVersion()

True if tag defines the version of RomanText standard used, otherwise False.

Pieces without the tag are defined to conform to RomanText 1.0, the version described in the ISMIR publication.

>>> rth = romanText.rtObjects.RTTagged('RTVersion: 1.0')
>>> rth.isTitle()
False
>>> rth.isVersion()
True
>>> rth.tag
'RTVersion'
>>> rth.data
'1.0'
RTTagged.isWork()

True if tag represents a work, otherwise False.

The “work” is not defined as a header tag, but is used to represent all tags, often placed after Composer, for the work or pieces designation.

>>> rth = romanText.rtObjects.RTTagged('Work: BWV232')
>>> rth.isWork()
True
>>> rth.tag
'Work'
>>> rth.data
'BWV232'

For historical reasons, the tag ‘Madrigal’ also designates a work.

>>> rth = romanText.rtObjects.RTTagged('Madrigal: 4.12')
>>> rth.isTitle()
False
>>> rth.isWork()
True
>>> rth.tag
'Madrigal'
>>> rth.data
'4.12'

Methods inherited from RTToken:

Methods inherited from ProtoM21Object:

RTToken

class music21.romanText.rtObjects.RTToken(src='')

Stores each linear, logical entity of a RomanText.

A multi-pass parsing procedure is likely necessary, as RomanText permits variety of groupings and markings.

>>> rtt = romanText.rtObjects.RTToken('||:')
>>> rtt
<music21.romanText.rtObjects.RTToken '||:'>

A standard RTToken returns False for all the following.

>>> rtt.isComposer() or rtt.isTitle() or rtt.isPiece()
False
>>> rtt.isAnalyst() or rtt.isProofreader()
False
>>> rtt.isTimeSignature() or rtt.isKeySignature() or rtt.isNote()
False
>>> rtt.isForm() or rtt.isPedal() or rtt.isMeasure() or rtt.isWork()
False
>>> rtt.isMovement() or rtt.isVersion() or rtt.isAtom()
False

RTToken bases

RTToken read-only properties

Read-only properties inherited from ProtoM21Object:

RTToken methods

RTToken.isAnalyst()
RTToken.isAtom()

Atoms are any untagged data; generally only found inside a measure definition.

RTToken.isComposer()
RTToken.isForm()

Occasionally found in header.

RTToken.isKeySignature()
RTToken.isMeasure()
RTToken.isMovement()
RTToken.isNote()
RTToken.isPedal()
RTToken.isPiece()
RTToken.isProofreader()
RTToken.isTimeSignature()
RTToken.isTitle()
RTToken.isVersion()
RTToken.isWork()

Methods inherited from ProtoM21Object: