music21.braille.text¶
BrailleKeyboard¶
-
class
music21.braille.text.
BrailleKeyboard
(lineLength=40)¶ A subclass of BrailleText that handles both hands at once.
BrailleKeyboard
bases
BrailleKeyboard
read/write properties
Read/write properties inherited from BrailleText
:
BrailleKeyboard
methods
-
BrailleKeyboard.
addNoteGroupings
(measureNumber, noteGroupingR, noteGroupingL)¶
-
BrailleKeyboard.
makeNewLines
()¶
Methods inherited from BrailleText
:
BrailleText¶
-
class
music21.braille.text.
BrailleText
(lineLength=40, showHand=None)¶ Object that handles all the formatting associated with braille music notation on multiple lines.
>>> bt = braille.text.BrailleText(lineLength=10, showHand='right') >>> bt.lineLength 10 >>> bt.allLines [<music21.braille.text.BrailleTextLine object at 0x10af8a6a0>] >>> bt.rightHandSymbol True >>> bt.leftHandSymbol False >>> bt.allHeadings []
BrailleText
read/write properties
-
BrailleText.
showHand
¶
BrailleText
methods
-
BrailleText.
addHeading
(heading)¶ adds a heading to the BrailleText. Heading can be a single or multiple line Unicode string representing a heading.
These headings are not stored in allHeadings, but instead in .allLines, what .allHeadings stores is the index of the start of a heading section and the index of the end of a heading section.
(since each BrailleTextLine knows whether it is a heading or not, storing the index of headings might be overkill)
>>> bt = braille.text.BrailleText(lineLength=10) >>> headingText = braille.basic.timeSigToBraille(meter.TimeSignature('4/8')) >>> bt.addHeading(headingText) >>> len(bt.allLines) 2 >>> bt.allLines[0].isHeading True >>> print(str(bt.allLines[0])) ⠼⠙⠦ >>> bt.allHeadings [(0, 1)] >>> bt.addMeasureNumber(7) >>> headingText = braille.basic.timeSigToBraille(meter.TimeSignature('3/4')) >>> bt.addHeading(headingText) >>> len(bt.allLines) 4 >>> bt.allHeadings [(0, 1), (2, 3)]
-
BrailleText.
addLongExpression
(longExpr)¶ Adds an expression long enough that it is split at each space symbol such that line wrapping could occur.
>>> bt = braille.text.BrailleText(lineLength=10) >>>
-
BrailleText.
addMeasureNumber
(measureNumber)¶ Add a measure number (either a braille number or an int).
>>> bt = braille.text.BrailleText(lineLength=10) >>> bt.allLines [<music21.braille.text.BrailleTextLine object at 0x10af8a6a0>] >>> bt.addMeasureNumber(4) >>> print(str(bt.allLines[0])) ⠼⠙ >>> bt.currentLine.textLocation 2
If there are already lines, then add a new one:
>>> bt.addMeasureNumber(5) >>> bt.allLines [<music21.braille.text.BrailleTextLine object at 0x10af8a6a0>, <music21.braille.text.BrailleTextLine object at 0x10af8a6b3>] >>> print(str(bt.allLines[-1])) ⠼⠑
-
BrailleText.
addSignatures
(signatures)¶ Appends signatures to the current location if there is space, otherwise appends to a new line:
>>> bt = braille.text.BrailleText(lineLength=5) >>> bt.addSignatures(braille.basic.timeSigToBraille(meter.TimeSignature('4/8'))) >>> print(str(bt.currentLine)) ⠼⠙⠦ >>> bt.addSignatures(braille.basic.timeSigToBraille(meter.TimeSignature('3/4'))) >>> print(str(bt.currentLine)) ⠀⠀⠼⠉⠲ >>> len(bt.allLines) 2
-
BrailleText.
addToNewLine
(brailleNoteGrouping)¶ Adds a NoteGrouping to a new line, prefacing that new line with the appropriate spaces or keyboard symbols and dots.
>>> bt = braille.text.BrailleText(10) >>> bt.currentLine.append('hi', addSpace=False) >>> print(str(bt)) hi >>> c = braille.lookup.pitchNameToNotes['C']['quarter'] # dots 1456 >>> bt.addToNewLine(c + c + c) >>> print(str(bt)) hi ⠀⠀⠹⠹⠹
It is done differently if there are hand symbols involved:
>>> bt = braille.text.BrailleText(10) >>> bt.showHand = 'right' >>> bt.currentLine.append('hi', addSpace=False) >>> bt.addToNewLine(c + c + c) >>> print(str(bt)) hi ⠨⠜⠄⠹⠹⠹
-
BrailleText.
appendOrInsertCurrent
(brailleExpr, addSpace=True)¶ append expression to the current line if it is possible, or make a new line and insert it there:
>>> bt = braille.text.BrailleText(lineLength=10) >>> bt.appendOrInsertCurrent(u"hello", addSpace=False) >>> print(str(bt)) hello >>> bt.appendOrInsertCurrent(braille.lookup.symbols['space'] + u"hi") >>> print(str(bt)) hello⠀⠀hi >>> bt.appendOrInsertCurrent(braille.lookup.symbols['space'] + u"there") >>> print(str(bt)) hello⠀⠀hi ⠀⠀⠀there
-
BrailleText.
makeNewLine
()¶ Add a newline to the BrailleText
>>> bt = braille.text.BrailleText(lineLength=10) >>> len(bt.allLines) 1 >>> bt.makeNewLine() >>> len(bt.allLines) 2 >>> bt.makeNewLine() >>> len(bt.allLines) 3
-
BrailleText.
optionalAddKeyboardSymbolsAndDots
(noteGrouping=None)¶ Adds symbols for rh_keyboard or lh_keyboard depending on what is appropriate
returns a boolean indicating whether a space needs to be added before the next symbol is needed.
-
BrailleText.
recenterHeadings
()¶ Recenter each of the headings so that they exactly align with the text beneath them.
Demonstration with non braille text...
>>> heading1 = u'hello' >>> body1 = u'anyoneHome?' + braille.lookup.symbols['space'] + u'yup!' >>> bt = braille.text.BrailleText(lineLength=12) >>> bt.addHeading(heading1) >>> bt.addLongExpression(body1) >>> bt.allHeadings [(0, 1)] >>> bt.recenterHeadings() >>> print(str(bt)) ⠀⠀⠀hello⠀⠀⠀⠀ ⠀anyoneHome? ⠀⠀yup!
Each heading is aligned with its own text
>>> heading2 = u'buh' >>> body2 = u'short' + braille.lookup.symbols['space'] + u'court' >>> bt.addHeading(heading2) >>> bt.addLongExpression(body2) >>> bt.allHeadings [(0, 1), (3, 4)] >>> bt.recenterHeadings() >>> print(str(bt)) ⠀⠀⠀hello⠀⠀⠀⠀ ⠀anyoneHome? ⠀⠀yup! ⠀⠀⠀⠀buh⠀⠀⠀⠀⠀ ⠀short⠀court
BrailleTextLine¶
-
class
music21.braille.text.
BrailleTextLine
(lineLength=40)¶ An object representing a single line of braille text:
The initial value is the length of the line:
>>> btl = braille.text.BrailleTextLine(40) >>> btl.isHeading False >>> btl.containsNoteGrouping False >>> btl.lineLength 40 >>> btl.textLocation 0 >>> btl.highestUsedLocation 0 >>> btl.allChars == 40 * [braille.lookup.symbols['space']] True
>>> btl.append(braille.lookup.symbols['tie']) >>> btl <music21.braille.text.BrailleTextLine object at 0x10af9c630> >>> print(str(btl)) ⠀⠈⠉
BrailleTextLine
methods
-
BrailleTextLine.
append
(text, addSpace=True)¶ Appends text (with optional space at the beginning) or raises an exception if it cannot be appended.
>>> btl = braille.text.BrailleTextLine(6) >>> btl.append(braille.lookup.symbols['tie'], addSpace=False) >>> print(str(btl)) ⠈⠉ >>> btl.textLocation 2 >>> btl.highestUsedLocation 2
Default is to add a space:
>>> btl.append(braille.lookup.symbols['tie']) >>> print(str(btl)) ⠈⠉⠀⠈⠉
Out of room:
>>> btl.append(braille.lookup.symbols['tie']) Traceback (most recent call last): music21.braille.text.BrailleTextException: Text does not fit at end of braille text line.
Text is appended at textLocation, overwriting other text that might be there.
>>> btl.textLocation = btl.highestUsedLocation = 0 >>> btl.append('hi', addSpace=False) >>> btl.textLocation = btl.highestUsedLocation = 5 >>> print(str(btl)) hi⠀⠈⠉
-
BrailleTextLine.
canAppend
(text, addSpace=True)¶ Returns True if there is enough space in this line to append the text, or False if not:
>>> btl = braille.text.BrailleTextLine(10) >>> btl.canAppend('1234567890', addSpace=False) True >>> btl.canAppend('12345678901', addSpace=False) False >>> btl.canAppend('1234567890', addSpace=True) False >>> btl.textLocation 0 >>> btl.textLocation = 5 >>> btl.canAppend('12345', addSpace=False) True >>> btl.canAppend('123456', addSpace=False) False
If highestUsedLocation > textLocation, highestUsedLocation is used instead:
>>> btl.highestUsedLocation = 7 >>> btl.canAppend('123', addSpace=False) True >>> btl.canAppend('1234', addSpace=False) False
-
BrailleTextLine.
canInsert
(textLocation, text)¶ Returns True if there is enough space starting at textLocation to append the text. False otherwise:
>>> btl = braille.text.BrailleTextLine(10) >>> btl.canInsert(4, '123456') True >>> btl.canInsert(5, '123456') False
-
BrailleTextLine.
insert
(textLocation, text)¶ Inserts text at a certain location, updating textLocation and possibly highestUsedLocation:
>>> btl = braille.text.BrailleTextLine(6) >>> btl.insert(2, braille.lookup.symbols['tie']) >>> print(str(btl)) ⠀⠀⠈⠉ >>> btl.textLocation 4 >>> btl.highestUsedLocation 4
>>> btl.insert(0, braille.lookup.symbols['tie'])
It looks like we have deleted the previous tie:
>>> print(str(btl)) ⠈⠉
But that’s because only characters up to .textLocation are printed (this may change later)
>>> btl.textLocation 2 >>> btl.highestUsedLocation 4
Let’s change textLocation and now see:
>>> btl.textLocation = btl.highestUsedLocation >>> print(str(btl)) ⠈⠉⠈⠉
Inserting beyond the end creates an error:
>>> btl.insert(5, braille.lookup.symbols['tie']) Traceback (most recent call last): music21.braille.text.BrailleTextException: Text cannot be inserted at specified location.
Unlike list inserts, this insert overwrites the previous text:
>>> btl.insert(0, "hi") >>> btl.textLocation = btl.highestUsedLocation >>> print(str(btl)) hi⠈⠉
-
BrailleTextLine.
lastHyphenToSpace
()¶ Occasionally a line ends with a hyphen because the last appender thought it would be helpful, such as to put more characters into a line. But in case it is not, then this method will change that last character to a space and set textLocation back one character so it is not printed.
>>> bt = braille.text.BrailleTextLine(10) >>> bt.append('hi', addSpace=False) >>> bt.append(braille.lookup.symbols['music_hyphen'], addSpace=False) >>> if ext.six.PY2: str = unicode # _DOCS_HIDE >>> print(str(bt)) hi⠐ >>> bt.textLocation 3 >>> print(bt.allChars[2]) ⠐ >>> bt.lastHyphenToSpace() >>> print(str(bt)) hi >>> bt.allChars[2] == braille.lookup.symbols['space'] True >>> bt.textLocation 2