§
    ƒØj” ã                  óì	  — d Z ddlmZ ddlZddlZddlmZ ddlmZ ddlm	Z	  G d„ dej
        ¦  «        Z G d	„ d
e	j        ¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d e¦  «        Z G d!„ d"e¦  «        Z G d#„ d$e¦  «        Z G d%„ d&e¦  «        Z G d'„ d(e¦  «        Z G d)„ d*e¦  «        Z G d+„ d,e¦  «        Z G d-„ d.e¦  «        Z G d/„ d0e¦  «        Z  G d1„ d2e¦  «        Z! G d3„ d4e¦  «        Z" G d5„ d6e¦  «        Z# G d7„ d8e¦  «        Z$ G d9„ d:e¦  «        Z% G d;„ d<e¦  «        Z& G d=„ d>e¦  «        Z' G d?„ d@e¦  «        Z( G dA„ dBe¦  «        Z) G dC„ dDe¦  «        Z* G dE„ dFe¦  «        Z+ G dG„ dHe¦  «        Z, G dI„ dJe¦  «        Z- G dK„ dLe¦  «        Z. G dM„ dNe¦  «        Z/ G dO„ dPe¦  «        Z0 G dQ„ dRe¦  «        Z1 G dS„ dTe¦  «        Z2 G dU„ dVe¦  «        Z3 G dW„ dXe¦  «        Z4 G dY„ dZe¦  «        Z5 G d[„ d\e¦  «        Z6 G d]„ d^e¦  «        Z7 G d_„ d`e¦  «        Z8 G da„ dbe¦  «        Z9 G dc„ dde¦  «        Z: G de„ dfe¦  «        Z; G dg„ dhe¦  «        Z< G di„ dje¦  «        Z= G dk„ dle¦  «        Z> G dm„ dne¦  «        Z? G do„ dpe¦  «        Z@ G dq„ dre¦  «        ZA G ds„ dte¦  «        ZB G du„ dve¦  «        ZC G dw„ dxe¦  «        ZD G dy„ dze¦  «        ZE G d{„ d|e¦  «        ZF G d}„ d~e¦  «        ZG G d„ d€e¦  «        ZH G d�„ d‚e¦  «        ZI G dƒ„ d„e¦  «        ZJ G d…„ d†e¦  «        ZK G d‡„ dˆe¦  «        ZL G d‰„ dŠe¦  «        ZM G d‹„ dŒe¦  «        ZN G d�„ dŽe¦  «        ZO G d�„ d�e¦  «        ZP G d‘„ d’e¦  «        ZQ G d“„ d”e¦  «        ZR G d•„ d–e¦  «        ZS G d—„ d˜e¦  «        ZT G d™„ dše¦  «        ZU G d›„ dœe¦  «        ZV G d�„ dže¦  «        ZW G dŸ„ d e¦  «        ZX G d¡„ d¢e¦  «        ZY G d£„ d¤e¦  «        ZZ G d¥„ d¦e¦  «        Z[ G d§„ d¨e¦  «        Z\ G d©„ dªe¦  «        Z] G d«„ d¬e¦  «        Z^ G d­„ d®e¦  «        Z_ G d¯„ d°ej`        ¦  «        Zaebd±k    rddlZ ejc        ea¦  «         dS dS )²a   
music21 translates to Lilypond format and if Lilypond is installed on the
local computer, can automatically generate .pdf, .png, and .svg versions
of musical files using Lilypond.

The Grammar for Lilypond comes from
http://lilypond.org/doc/v2.14/Documentation/notation/lilypond-grammar
é    )ÚannotationsN)Úcommon)Úexceptions21)Úprebasec                  ó   — e Zd ZdS )ÚLilyObjectsExceptionN)Ú__name__Ú
__module__Ú__qualname__© ó    ú�/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/music21/lily/lilyObjects.pyr   r      s   € € € € € Ø€Dr   r   c                  ó¾   — e Zd ZU dZg Zded<   i Zded<   i Zded<   dZd	„ Z	d
„ Z
d„ Zd„ Zd„ Zdd„Zed„ ¦   «         Zd„ Zd„ Zd d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd!d„ZdS )"ÚLyObjectzŒ
    LyObject is the base class of all other Lily Objects

    >>> lyo = lily.lilyObjects.LyObject()
    >>> lyo.stringOutput()
    ''

    zlist[object]ÚsupportedClasseszdict[str, dict]Úm21toLyzdict[str, t.Any]ÚdefaultAttributesú\c                óh   — i | _         d | _        d| _        d | _        d | _        d | _        d | _        d S ©Nr   )ÚlilyAttributesÚ_parentÚ
thisIndentÚ	markupTopÚlyricMarkupOrIdentifierÚmarkupListOrIdentifierÚmarkupTopOrIdentifier©Úselfs    r   Ú__init__zLyObject.__init__/   s=   € à ˆÔØˆŒØˆŒØˆŒØ'+ˆÔ$Ø&*ˆÔ#Ø%)ˆÔ"Ð"Ð"r   c                ó(  — t          |t          ¦  «        r|                     | ¦  «         nJt          j        |¦  «        r6|D ]3}t          |t          ¦  «        r|j        €|                     | ¦  «         Œ4t                               | ||¦  «         d S ©N)Ú
isinstancer   Ú	setParentr   Ú
isIterabler   ÚobjectÚ__setattr__)r   ÚnameÚvalueÚvs       r   r'   zLyObject.__setattr__:   s–   € Ý�e�XÑ&Ô&ð 	*Ø�OŠO˜DÑ!Ô!Ð!Ð!ÝÔ˜uÑ%Ô%ð 	*Øð *ð *�Ý˜a¥Ñ*Ô*ð *Ø”yÐ(ØŸš DÑ)Ô)Ð)øå×Ò˜4  uÑ-Ô-Ð-Ð-Ð-r   c                óJ   — | j         �t          j        | j         ¦  «        }|S d S r"   )r   r   ÚunwrapWeakref)r   ÚactualParents     r   Ú	getParentzLyObject.getParentE   s*   € ØŒ<Ð#Ý!Ô/°´Ñ=Ô=ˆLØÐð $Ð#r   c                ó8   — t          j        |¦  «        | _        d S r"   )r   ÚwrapWeakrefr   )r   ÚparentObjects     r   r$   zLyObject.setParentJ   s   € ÝÔ)¨,Ñ7Ô7ˆŒˆˆr   c                óŒ   — g }|                       ¦   «         }|�+|                     |¦  «         |                      ¦   «         }|­+|S )zW
        returns a list of all unwrapped parent objects for the current object
        )r.   Úappend)r   Ú	ancestorsÚcurrentParents      r   ÚancestorListzLyObject.ancestorListM   sS   € ð ˆ	ØŸšÑ(Ô(ˆØÐ'Ø×Ò˜]Ñ+Ô+Ð+Ø)×3Ò3Ñ5Ô5ˆMð Ð'ð Ðr   é   c                óv   — d}|                       ¦   «         D ]!}t          ||¦  «        r||k    r|c S |dz  }Œ"d S )Nr7   )r6   r#   )r   ÚclassObjÚgetAncestorNumberÚcurrentIterÚas        r   ÚgetAncestorByClasszLyObject.getAncestorByClassX   sY   € ØˆØ×"Ò"Ñ$Ô$ð 	%ð 	%ˆAÝ˜!˜XÑ&Ô&ð %ØÐ"3Ò3Ð3Ø�H�H�Hà 1Ñ$�KøØˆtr   c                ó\   — |                       ¦   «         }t          |¦  «        }d|z  }d|z   S )Nú ú
)r6   Úlen)r   r4   ÚtotalIndentsÚindentSpacess       r   ÚnewlineIndentzLyObject.newlineIndentb   s7   € ð ×%Ò%Ñ'Ô'ˆ	õ ˜9‘~”~ˆØ˜\Ñ)ˆØ�lÑ"Ð"r   c                ó¬   — d}d}| j         D ]+}||j        v s|dk    r|                      ||¦  «        }d} nŒ,|st          d|› d| j         › �¦  «        ‚|S )aš  
        Returns a dictionary and sets self.lilyAttributes to that dictionary, for a m21Object
        of class classLookup using the mapping of self.m21toLy[classLookup]

        >>> class Mock(base.Music21Object):
        ...     pass
        >>> m = Mock()
        >>> m.mockAttribute = 32
        >>> m.mockAttribute2 = None

        >>> lm = lily.lilyObjects.LyMock()

        LyMock (our test class) defines mappings for two classes:
        to LyMock.lilyAttributes:

        >>> print(lm.supportedClasses)
        [...'Mock', ...'Mocker']

        Thus, we can get attributes from the Mock class (see `setAttributesFromClassObject`):

        >>> lilyAttributes = lm.setAttributes(m)
        >>> for x in sorted(lilyAttributes.keys()):
        ...    print(f'{x}: {lilyAttributes[x]}')
        mock-attribute: 32
        mock-attribute-2: None

        >>> lilyAttributes is lm.lilyAttributes
        True
        NFÚ*Tú*Could not support setting attributes from z: supported classes: )r   ÚclassesÚsetAttributesFromClassObjectr   )r   Ú	m21ObjectÚattrsÚ
foundClassÚtryClasss        r   ÚsetAttributeszLyObject.setAttributesl   s©   € ð< ˆØˆ
ØÔ-ð 	ð 	ˆHØ˜9Ô,Ð,Ð,°¸C²°Ø×9Ò9¸(ÀIÑNÔN�Ø!�
Ø�ð 1@ð
 ð 	LÝ&ðKØðKð KØ37Ô3HðKð KñLô Lð Lð ˆr   c                ó  — || j         vrt          d|› d�¦  «        ‚| j         |         }|D ]O}	 t          ||¦  «        }n)# t          $ r || j        v r| j        |         }nd}Y nw xY w||         }|| j        |<   ŒP| j        S )ad  
        Returns a dictionary and sets self.lilyAttributes to that dictionary, for a m21Object
        of class classLookup using the mapping of self.m21toLy[classLookup]

        >>> class Mock(base.Music21Object): pass
        >>> m = Mock()
        >>> lm = lily.lilyObjects.LyMock()

        LyMock (our test class) defines certain mappings from the m21 Mock class
        to LyMock.lilyAttributes:

        >>> for x in sorted(lm.m21toLy['Mock'].keys()):
        ...    print(f"{x}: {lm.m21toLy['Mock'][x]}")
        mockAttribute: mock-attribute
        mockAttribute2: mock-attribute-2

        Some of these attributes have defaults:

        >>> for x in sorted(lm.defaultAttributes.keys()):
        ...    print(f'{x}: {lm.defaultAttributes[x]}')
        mockAttribute2: 7

        >>> m.mockAttribute = 'hello'
        >>> lilyAttributes = lm.setAttributesFromClassObject('Mock', m)
        >>> for x in sorted(lilyAttributes.keys()):
        ...    print(f'{x}: {lilyAttributes[x]}')
        mock-attribute: hello
        mock-attribute-2: 7

        >>> lilyAttributes is lm.lilyAttributes
        True
        rG   z< error in self.m21toLy, missing class definitions and no "*"N)r   r   ÚgetattrÚAttributeErrorr   r   )r   ÚclassLookuprJ   Ú	classDictÚm21Attributer)   ÚlyAttributes          r   rI   z%LyObject.setAttributesFromClassObject˜   sÒ   € ðB ˜dœlÐ*Ð*Ý&ð8Øð8ð 8ð 8ñô ð ð
 ”L Ô-ˆ	Ø%ð 
	5ð 
	5ˆLð!Ý 	¨<Ñ8Ô8��øÝ!ð !ð !ð !Ø 4Ô#9Ð9Ð9Ø Ô2°<Ô@�E�Eà �Eøøð	!øøøð
 $ LÔ1ˆKà/4ˆDÔ Ñ,Ð,ØÔ"Ð"s   ¯A Á #A&Á%A&ÚreturnÚstrc                ó�   — t          | ¦  «        }|                     dd¦  «         t          |¦  «        dk    r|d d…         dz   }|S )Nr@   z  é   é
   z...)rW   ÚreplacerA   )r   Úmsgs     r   Ú_reprInternalzLyObject._reprInternalÍ   sG   € Ý�$‰iŒiˆØ�Š�D˜$ÑÔÐÝˆs‰8Œ8�rŠ>ˆ>Ø�c�r�c”(˜UÑ"ˆCØˆ
r   c                óZ   — |                       ¦   «         }|                     dd¦  «        }|S )Nz

r@   )ÚstringOutputr[   )r   Úsos     r   Ú__str__zLyObject.__str__Ô   s+   € Ø×ÒÑ Ô ˆØ�ZŠZ˜ Ñ%Ô%ˆØˆ	r   c                ó   — dS ©NÚ r   r   s    r   r_   zLyObject.stringOutputÙ   s   € Øˆrr   c                óT   — |D ]$}t          | |¦  «        �t          | |¦  «        c S Œ%d S r"   )rP   )r   ÚattributeListr<   s      r   ÚgetFirstNonNoneAttributez!LyObject.getFirstNonNoneAttributeÜ   sA   € Øð 	(ð 	(ˆAÝ�t˜QÑÔÐ+Ý˜t QÑ'Ô'Ð'Ð'Ð'ð ,àˆtr   c                óN   — d}|D ]}|€Œ|t          |¦  «        | j        z   z  }Œ |S rc   )rW   rD   )r   ÚcontentsÚcÚns       r   Ú$newlineSeparateStringOutputIfNotNonez-LyObject.newlineSeparateStringOutputIfNotNoneâ   s=   € ØˆØð 	-ð 	-ˆAØˆyØØ•�Q‘”˜$Ô,Ñ,Ñ,ˆAˆAàˆr   c                ó*  — t          |t          ¦  «        rD| j                             |¦  «        }d                     d| j        || j        d| j        g¦  «        S |�7d                     d| j        t	          |¦  «        | j        d| j        g¦  «        S dS )Nrd   ú { ú } z { } )r#   ÚlistrD   ÚjoinrW   )r   ÚargÚstrArgs      r   ÚencloseCurlyzLyObject.encloseCurlyë   sž   € Ý�c�4Ñ Ô ð 	ØÔ'×,Ò,¨SÑ1Ô1ˆFØ—7’7˜E 4Ô#5°v¸tÔ?QØ! 4Ô#5ð7ñ 8ô 8ð 8àˆ_Ø—7’7˜E 4Ô#5µs¸3±x´xÀÔASØ! 4Ô#5ð7ñ 8ô 8ð 8ð �7r   c                ó>   — |                      dd¦  «        }d|z   dz   S )a
  
        returns a string that is quoted with
        internal quotation marks backslash'd out
        and an extra space at the end.

        >>> m = lily.lilyObjects.LyObject()
        >>> print(m.quoteString(r'Hello "there"!'))
        "Hello \"there\"!"
        ú"z\"z" )r[   )r   ÚstringInÚ	stringNews      r   ÚquoteStringzLyObject.quoteStringö   s(   € ð ×$Ò$ S¨%Ñ0Ô0ˆ	Ø�Y‰ Ñ%Ð%r   rw   c                ó6   — d|                      ¦   «         z   dz   S )zˆ
        returns a comment that is %{ stringIn.strip() %}

        (Don't put %} etc. in comments -- it will break the system.)
        z %{ z %} )Ústrip)r   rw   s     r   ÚcommentzLyObject.comment  s   € ð ˜ŸšÑ(Ô(Ñ(¨6Ñ1Ð1r   N)r7   )rV   rW   )rw   rW   rV   rW   )r	   r
   r   Ú__doc__r   Ú__annotations__r   r   Ú	backslashr    r'   r.   r$   r6   r=   ÚpropertyrD   rN   rI   r]   ra   r_   rg   rl   rt   ry   r|   r   r   r   r   r   !   sx  € € € € € € ðð ð &(ÐÐ'Ð'Ð'Ñ'Ø!€GÐ!Ð!Ð!Ñ!Ø*,ÐÐ,Ð,Ð,Ñ,Ø€Ið*ð *ð *ð	.ð 	.ð 	.ð ð  ð  ð
8ð 8ð 8ð	ð 	ð 	ðð ð ð ð ð#ð #ñ „Xð#ð*ð *ð *ðX3#ð 3#ð 3#ðjð ð ð ðð ð ð
ð ð ðð ð ðð ð ð	ð 	ð 	ð&ð &ð &ð2ð 2ð 2ð 2ð 2ð 2r   r   c                  ó8   — e Zd ZdZddgZdddœdddœdœZd	d
iZdS )ÚLyMockzG
    A test object for trying various music21 to Lily conversions

    ÚMockÚMockerzmock-attributezmock-attribute-2)ÚmockAttributeÚmockAttribute2)ÚmockerAttributeÚgreg)rƒ   r„   r†   é   N)r	   r
   r   r}   r   r   r   r   r   r   r‚   r‚     sd   € € € € € ðð ð  Ð)ÐØ)9Ø+=ðð ð .>Ø"4ð8ð 8ðð €Gð *¨1ð ÐÐÐr   r‚   c                  ó2   ‡ — e Zd ZdZg d¢Zdˆ fd„	Zd„ Zˆ xZS )ÚLyLilypondTopa3  
    corresponds to the highest level lilypond object in Appendix C:

    ::

      `lilypond: /* empty */
             | lilypond toplevel_expression
             | lilypond assignment
             | lilypond error
             | lilypond "\invalid"`

    error and \invalid are not defined by music21
    )NÚTopLevelExpressionÚ
AssignmentNc                ó^   •— |€g }t          ¦   «                              ¦   «          || _        d S r"   ©Úsuperr    ri   ©r   ri   Ú	__class__s     €r   r    zLyLilypondTop.__init__.  s/   ø€ ØÐØˆHÝ‰Œ×ÒÑÔÐØ ˆŒˆˆr   c                ó6   — |                       | j        ¦  «        S r"   ©rl   ri   r   s    r   r_   zLyLilypondTop.stringOutput4  ó   € Ø×8Ò8¸¼ÑGÔGÐGr   r"   )r	   r
   r   r}   Ú
canContainr    r_   Ú__classcell__©r’   s   @r   r‹   r‹     sj   ø€ € € € € ðð ð <Ð;Ð;€Jð!ð !ð !ð !ð !ð !ðHð Hð Hð Hð Hð Hð Hr   r‹   c                  ó0   ‡ — e Zd ZdZ	 	 	 dˆ fd„	Zd„ Zˆ xZS )ÚLyTopLevelExpressionab  
    can contain one of:

      lilypondHeader
      bookBlock
      bookPartBlock
      scoreBlock
      compositeMusic
      fullMarkup
      fullMarkupList
      outputDef

    >>> bookBlock = lily.lilyObjects.LyBookBlock()
    >>> lyTopLevel = lily.lilyObjects.LyTopLevelExpression(bookBlock=bookBlock)
    >>> str(lyTopLevel)
    '\\book  { } '
    Nc	                ó¸   •— t          ¦   «                              ¦   «          || _        || _        || _        || _        || _        || _        || _        || _	        d S r"   )
r�   r    ÚlilypondHeaderÚ	bookBlockÚbookPartBlockÚ
scoreBlockÚcompositeMusicÚ
fullMarkupÚfullMarkupListÚ	outputDef)
r   rœ   r�   rž   rŸ   r    r¡   r¢   r£   r’   s
            €r   r    zLyTopLevelExpression.__init__K  s[   ø€ õ 	‰Œ×ÒÑÔÐØ,ˆÔØ"ˆŒØ*ˆÔØ$ˆŒØ,ˆÔØ$ˆŒØ,ˆÔØ"ˆŒˆˆr   c                óz   — |                       g d¢¦  «        }|€t          d¦  «        ‚|                     ¦   «         S )N)rœ   r�   rž   rŸ   r    r¡   r¢   r£   zNeed an outputObject to report©rg   r   r_   ©r   ÚoutputObjects     r   r_   z!LyTopLevelExpression.stringOutputY  sT   € Ø×4Ò4ð 6Kð 6Kð 6Kñ Lô Lˆð ÐÝ&Ð'GÑHÔHÐHØ×(Ò(Ñ*Ô*Ð*r   )NNNNNNNN©r	   r
   r   r}   r    r_   r—   r˜   s   @r   rš   rš   8  sa   ø€ € € € € ðð ð$ 7;ØEIØAEð#ð #ð #ð #ð #ð #ð+ð +ð +ð +ð +ð +ð +r   rš   c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyLilypondHeaderz…
    A header object with a LyHeaderBody

    >>> lyh = lily.lilyObjects.LyLilypondHeader()
    >>> str(lyh)
    '\\header { } '
    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚlilypondHeaderBody)r   r¬   r’   s     €r   r    zLyLilypondHeader.__init__k  ó'   ø€ Ý‰Œ×ÒÑÔÐØ"4ˆÔÐÐr   c                óL   — | j         dz   |                      | j        ¦  «        z   S )NÚheader)r   rt   r¬   r   s    r   r_   zLyLilypondHeader.stringOutputo  s%   € ØŒ~ Ñ(¨4×+<Ò+<¸TÔ=TÑ+UÔ+UÑUÐUr   r"   r¨   r˜   s   @r   rª   rª   b  s]   ø€ € € € € ðð ð5ð 5ð 5ð 5ð 5ð 5ðVð Vð Vð Vð Vð Vð Vr   rª   c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyEmbeddedScmaU  
    represents Scheme embedded in Lilypond code.

    Can be either an SCM_TOKEN (Scheme Token) or SCM_IDENTIFIER String stored in self.content

    Note that if any LyEmbeddedScm is found in an output then the output SHOULD be marked as unsafe.
    But a lot of standard lilypond functions are actually embedded scheme.
    For instance, \clef, which
    as http://lilypond.org/doc/v2.12/input/lsr/lilypond-snippets/Pitches#Tweaking-clef-properties
    shows is a macro to run a lot of \set commands.

    >>> lyScheme = lily.lilyObjects.LyEmbeddedScm('##t')
    >>> str(lyScheme)
    '##t'
    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   ©r�   r    Úcontent©r   r´   r’   s     €r   r    zLyEmbeddedScm.__init__„  ó$   ø€ Ý‰Œ×ÒÑÔÐØˆŒˆˆr   c                ó   — | j         S r"   ©r´   r   s    r   r_   zLyEmbeddedScm.stringOutputˆ  ó
   € ØŒ|Ðr   r"   r¨   r˜   s   @r   r±   r±   s  sV   ø€ € € € € ðð ð ð ð ð ð ð ðð ð ð ð ð ð r   r±   c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyLilypondHeaderBodyNc                ó^   •— |€g }t          ¦   «                              ¦   «          || _        d S r"   )r�   r    Úassignments)r   r½   r’   s     €r   r    zLyLilypondHeaderBody.__init__�  s2   ø€ ØÐØˆKÝ‰Œ×ÒÑÔÐØ&ˆÔÐÐr   c                ó6   — |                       | j        ¦  «        S r"   )rl   r½   r   s    r   r_   z!LyLilypondHeaderBody.stringOutput“  s   € Ø×8Ò8¸Ô9IÑJÔJÐJr   r"   ©r	   r
   r   r    r_   r—   r˜   s   @r   r»   r»   Œ  sS   ø€ € € € € ð'ð 'ð 'ð 'ð 'ð 'ðKð Kð Kð Kð Kð Kð Kr   r»   c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyAssignmentIdz„
    >>> lyAssignmentId = lily.lilyObjects.LyAssignmentId('title', isLyricString=False)
    >>> str(lyAssignmentId)
    'title'
    NFc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    r´   ÚisLyricString)r   r´   rÃ   r’   s      €r   r    zLyAssignmentId.__init__ž  s.   ø€ Ý‰Œ×ÒÑÔÐØˆŒØ*ˆÔÐÐr   c                ó   — | j         S r"   r¸   r   s    r   r_   zLyAssignmentId.stringOutput£  r¹   r   ©NFr¨   r˜   s   @r   rÁ   rÁ   —  sV   ø€ € € € € ðð ð+ð +ð +ð +ð +ð +ð
ð ð ð ð ð ð r   rÁ   c                  ó.   ‡ — e Zd ZdZ	 	 dˆ fd„	Zd„ Zˆ xZS )ÚLyAssignmentaf  
    one of three forms of assignment:

      assignment_id '=' identifier_init
      assignment_id property_path '=' identifier_init
      embedded_scm

    if self.embeddedScm is not None, uses type 3
    if self.propertyPath is not None, uses type 2
    else uses type 1 or raises an exception.

    >>> lyIdInit = lily.lilyObjects.LyIdentifierInit(string='hi')
    >>> lya = lily.lilyObjects.LyAssignment(assignmentId='title', identifierInit=lyIdInit)
    >>> print(lya)
    title = "hi"

    Note that you could also pass assignmentId a LyAssignmentId object,
    but that's overkill for a lot of things.
    Nc                ó€   •— t          ¦   «                              ¦   «          || _        || _        || _        || _        d S r"   )r�   r    ÚassignmentIdÚidentifierInitÚpropertyPathÚembeddedScm)r   rÉ   rÊ   rË   rÌ   r’   s        €r   r    zLyAssignment.__init__¼  s?   ø€ å‰Œ×ÒÑÔÐØ(ˆÔØ,ˆÔØ(ˆÔØ&ˆÔÐÐr   c                óþ  — | j         �| j                              ¦   «         S | j        �x| j        �| j        €t          d¦  «        ‚d                     t          | j        ¦  «        d| j                             ¦   «         d| j                             ¦   «         dg¦  «        S | j        �| j        €t          d¦  «        ‚d                     t          | j        ¦  «        d| j                             ¦   «         dg¦  «        S )Nz&need an assignmentId or identifierInitrd   r?   ú = ú=)rÌ   r_   rË   rÉ   rÊ   r   rq   rW   r   s    r   r_   zLyAssignment.stringOutputÄ  s  € ØÔÐ'ØÔ#×0Ò0Ñ2Ô2Ð2ØÔÐ*ØÔ Ð(¨DÔ,?Ð,GÝ*Ð+SÑTÔTÐTà—7’7�C Ô 1Ñ2Ô2°CØ Ô-×:Ò:Ñ<Ô<¸eØ Ô/×<Ò<Ñ>Ô>ÀðEñ Fô Fð Fð Ô Ð(¨DÔ,?Ð,GÝ*Ð+SÑTÔTÐTØ—8’8�S Ô!2Ñ3Ô3°SØ!Ô0×=Ò=Ñ?Ô?ÀðFñ Gô Gð Gr   ©NNNNr¨   r˜   s   @r   rÇ   rÇ   §  se   ø€ € € € € ðð ð( :>Ø04ð'ð 'ð 'ð 'ð 'ð 'ðGð Gð Gð Gð Gð Gð Gr   rÇ   c                  ó:   ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 dˆ fd„	Zd„ Zˆ xZS )ÚLyIdentifierInitzo

    >>> lyIdInit = lily.lilyObjects.LyIdentifierInit(string='hello')
    >>> print(lyIdInit)
    "hello"
    Nc                ó  •— t          ¦   «                              ¦   «          || _        || _        || _        || _        || _        || _        || _        || _	        |	| _
        |
| _        || _        || _        || _        || _        d S r"   )r�   r    rŸ   r�   rž   r£   ÚcontextDefSpecBlockÚmusicÚ	postEventÚnumberExpressionÚstringrÌ   r¡   r¢   ÚdigitÚcontextModification)r   rŸ   r�   rž   r£   rÔ   rÕ   rÖ   r×   rØ   rÌ   r¡   r¢   rÙ   rÚ   r’   s                  €r   r    zLyIdentifierInit.__init__Ý  s‰   ø€ õ 	‰Œ×ÒÑÔÐØ$ˆŒØ"ˆŒØ*ˆÔØ"ˆŒØ#6ˆÔ ØˆŒ
Ø"ˆŒØ 0ˆÔØˆŒØ&ˆÔØ$ˆŒØ,ˆÔØˆŒ
Ø#6ˆÔ Ð Ð r   c                óæ   — |                       g d¢¦  «        }|€t          d¦  «        ‚|| j        u rt          |¦  «        S || j        u r|                      |¦  «        S |                     ¦   «         S )N)rŸ   r�   rž   r£   rÔ   rÕ   rÖ   r×   rØ   rÌ   r¡   r¢   rÙ   rÚ   zneed an outputObject)rg   r   rÙ   rW   rØ   ry   r_   r¦   s     r   r_   zLyIdentifierInit.stringOutputö  s‹   € Ø×4Ò4ð 6,ð 6,ð 6,ñ -ô -ˆð
 ÐÝ&Ð'=Ñ>Ô>Ð>à˜4œ:Ð%Ð%Ý�|Ñ$Ô$Ð$Ø˜Tœ[Ð(Ð(Ø×#Ò# LÑ1Ô1Ð1à×,Ò,Ñ.Ô.Ð.r   )NNNNNNNNNNNNNNr¨   r˜   s   @r   rÒ   rÒ   Õ  sp   ø€ € € € € ðð ð !ØØ#ØØ%)Ø>BØPTØ15ð7ð 7ð 7ð 7ð 7ð 7ð2/ð /ð /ð /ð /ð /ð /r   rÒ   c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyContextDefSpecBlockNc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚcontextDefSpecBody)r   rß   r’   s     €r   r    zLyContextDefSpecBlock.__init__  r­   r   c                óL   — | j         dz   |                      | j        ¦  «        z   S )Nzcontext )r   rt   rß   r   s    r   r_   z"LyContextDefSpecBlock.stringOutput  s%   € ØŒ~ 
Ñ*¨T×->Ò->¸tÔ?VÑ-WÔ-WÑWÐWr   r"   r¿   r˜   s   @r   rÝ   rÝ     sS   ø€ € € € € ð5ð 5ð 5ð 5ð 5ð 5ðXð Xð Xð Xð Xð Xð Xr   rÝ   c                  ó.   ‡ — e Zd ZdZ	 	 dˆ fd„	Zd„ Zˆ xZS )ÚLyContextDefSpecBodyam  
    None or one of four forms:

       CONTEXT_DEF_IDENTIFIER
       context_def_spec_body "\grobdescriptions" embedded_scm
       context_def_spec_body context_mod
       context_def_spec_body context_modification

    >>> lyContextBody = lily.lilyObjects.LyContextDefSpecBody(contextDefIdentifier='cdi')
    >>> lyContextBody.stringOutput()
    'cdi'

    >>> embedScm = lily.lilyObjects.LyEmbeddedScm('#t')
    >>> lyContextBody = lily.lilyObjects.LyContextDefSpecBody(
    ...                 contextDefSpecBody='body', embeddedScm=embedScm)
    >>> lyContextBody.stringOutput()
    'body \\grobdescriptions #t'
    Nc                óŽ   •— t          ¦   «                              ¦   «          || _        || _        || _        || _        || _        d S r"   )r�   r    ÚcontextDefIdentifierrß   rÌ   Ú
contextModrÚ   )r   rä   rß   rÌ   rå   rÚ   r’   s         €r   r    zLyContextDefSpecBody.__init__$  sF   ø€ å‰Œ×ÒÑÔÐØ$8ˆÔ!Ø"4ˆÔØ&ˆÔØ$ˆŒØ#6ˆÔ Ð Ð r   c                ó  — | j         �| j         S | j        �Kd}| j        �$d                     | j        d| j        ddg¦  «        }|| j                             ¦   «         z  }|S | j        �D| j        �$| j        dz   | j                             ¦   «         z   S | j                             ¦   «         S | j        �S| j        �3d                     | j        | j                             ¦   «         g¦  «        S | j                             ¦   «         S d S )Nrd   r?   Úgrobdescriptions)rä   rÌ   rß   rq   r   r_   rå   rÚ   ©r   Úouts     r   r_   z!LyContextDefSpecBody.stringOutput-  s  € ØÔ$Ð0ØÔ,Ð,ØÔÐ)ØˆCØÔ&Ð2Ø—g’g˜tÔ6¸¸T¼^Ø1°3ð8ñ 9ô 9�à�4Ô#×0Ò0Ñ2Ô2Ñ2ˆCØˆJØŒ_Ð(ØÔ&Ð2ØÔ.°Ñ4°t´×7SÒ7SÑ7UÔ7UÑUÐUà”×3Ò3Ñ5Ô5Ð5ØÔ%Ð1ØÔ&Ð2Ø—x’x Ô!8Ø!%Ô!9×!FÒ!FÑ!HÔ!Hð!Jñ Kô Kð Kð Ô/×<Ò<Ñ>Ô>Ð>à�4r   )NNNNNr¨   r˜   s   @r   râ   râ     s`   ø€ € € € € ðð ð& FJØQUð7ð 7ð 7ð 7ð 7ð 7ðð ð ð ð ð ð r   râ   c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyBookBlockNc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚbookBody)r   rí   r’   s     €r   r    zLyBookBlock.__init__G  ó$   ø€ Ý‰Œ×ÒÑÔÐØ ˆŒˆˆr   c                óR   — | j         dz   dz   |                      | j        ¦  «        z   S )NÚbookr?   )r   rt   rí   r   s    r   r_   zLyBookBlock.stringOutputK  s)   € ØŒ~ Ñ&¨Ñ,¨t×/@Ò/@ÀÄÑ/OÔ/OÑOÐOr   r"   r¿   r˜   s   @r   rë   rë   F  sS   ø€ € € € € ð!ð !ð !ð !ð !ð !ðPð Pð Pð Pð Pð Pð Pr   rë   c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )Ú
LyBookBodyaU  
    Contains None, bookIdentifier (string?) or one or more of the following:

       paperBlock
       bookPartBlock
       scoreBlock
       compositeMusic
       fullMarkup
       fullMarkupList
       lilypondHeader
       error

    >>> lyBookBody = lily.lilyObjects.LyBookBody(bookIdentifier='bookId')
    >>> lyBookBody.stringOutput()
    'bookId'

    >>> lyBookBody = lily.lilyObjects.LyBookBody()
    >>> lyBookBody.stringOutput() is None
    True

    >>> lyBookBody = lily.lilyObjects.LyBookBody(contents=['a', 'b', 'c'])
    >>> print(lyBookBody.stringOutput())
    a
    b
    c
    Nc                ól   •— |€g }t          ¦   «                              ¦   «          || _        || _        d S r"   ©r�   r    ri   ÚbookIdentifier©r   ri   rõ   r’   s      €r   r    zLyBookBody.__init__k  ó9   ø€ ØÐØˆHÝ‰Œ×ÒÑÔÐØ ˆŒØ,ˆÔÐÐr   c                ód   — | j         �| j         S | j        sd S |                      | j        ¦  «        S r"   ©rõ   ri   rl   r   s    r   r_   zLyBookBody.stringOutputr  ó:   € ØÔÐ*ØÔ&Ð&Ø”ð 	LØ�4à×<Ò<¸T¼]ÑKÔKÐKr   ©NNr¨   r˜   s   @r   rò   rò   O  s]   ø€ € € € € ðð ð6-ð -ð -ð -ð -ð -ðLð Lð Lð Lð Lð Lð Lr   rò   c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyBookpartBlockzo
    >>> lbb = lily.lilyObjects.LyBookpartBlock()
    >>> lbb.stringOutput()
    '\\bookpart  { \n\n } \n'
    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚbookpartBody)r   rÿ   r’   s     €r   r    zLyBookpartBlock.__init__‚  s'   ø€ Ý‰Œ×ÒÑÔÐØ(ˆÔÐÐr   c                ó¾   — | j         € | j        dz   |                      d¦  «        z   S | j        dz   |                      | j                              ¦   «         ¦  «        z   S )Nz	bookpart rd   )rÿ   r   rt   r_   r   s    r   r_   zLyBookpartBlock.stringOutput†  sc   € ØÔÐ$Ø”> KÑ/°$×2CÒ2CÀBÑ2GÔ2GÑGÐGà”> KÑ/°$×2CÒ2CØÔ!×.Ò.Ñ0Ô0ñ32ô 32ñ 2ð 2r   r"   r¨   r˜   s   @r   rý   rý   {  sV   ø€ € € € € ðð ð)ð )ð )ð )ð )ð )ð2ð 2ð 2ð 2ð 2ð 2ð 2r   rý   c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyBookpartBodyad  
    Contains None, bookIdentifier (string?) or one or more of the following:

       paperBlock
       scoreBlock
       compositeMusic
       fullMarkup
       fullMarkupList
       lilypondHeader
       error

    >>> lyBookpartBody = lily.lilyObjects.LyBookpartBody(bookIdentifier='bookId')
    >>> lyBookpartBody.stringOutput()
    'bookId'

    >>> lyBookpartBody = lily.lilyObjects.LyBookpartBody()
    >>> lyBookpartBody.stringOutput() is None
    True

    >>> lyBookpartBody = lily.lilyObjects.LyBookpartBody(contents=['a', 'b', 'c'])
    >>> print(lyBookpartBody.stringOutput())
    a
    b
    c
    Nc                ól   •— |€g }t          ¦   «                              ¦   «          || _        || _        d S r"   rô   rö   s      €r   r    zLyBookpartBody.__init__©  r÷   r   c                ód   — | j         �| j         S | j        sd S |                      | j        ¦  «        S r"   rù   r   s    r   r_   zLyBookpartBody.stringOutput°  rú   r   rû   r¨   r˜   s   @r   r  r  Ž  s]   ø€ € € € € ðð ð4-ð -ð -ð -ð -ð -ðLð Lð Lð Lð Lð Lð Lr   r  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyScoreBlockzð
    represents the container for a score ( \score { ... } )

    with all the real stuff being in self.scoreBody

    >>> lyScoreBlock = lily.lilyObjects.LyScoreBlock(scoreBody='hello')
    >>> print(lyScoreBlock)
    \score { hello }
    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    Ú	scoreBody)r   r  r’   s     €r   r    zLyScoreBlock.__init__Ä  ó$   ø€ Ý‰Œ×ÒÑÔÐØ"ˆŒˆˆr   c                óx   — | j         €t          d¦  «        ‚| j        dz   |                      | j         ¦  «        z   S )Nz!scoreBody object cannot be empty!zscore )r  r   r   rt   r   s    r   r_   zLyScoreBlock.stringOutputÈ  s;   € ØŒ>Ð!Ý&Ð'JÑKÔKÐKàŒ~ Ñ(¨4×+<Ò+<¸T¼^Ñ+LÔ+LÑLÐLr   r"   r¨   r˜   s   @r   r  r  ¹  s]   ø€ € € € € ðð ð#ð #ð #ð #ð #ð #ðMð Mð Mð Mð Mð Mð Mr   r  c                  ó.   ‡ — e Zd ZdZ	 	 dˆ fd„	Zd„ Zˆ xZS )ÚLyScoreBodya  
    represents the contents of a \score { contents }
    block

    can take one of the following attributes:
    music, scoreIdentifier, scoreBody, lilypondHeader, outputDef, error

    >>> lsb = lily.lilyObjects.LyScoreBody(scoreIdentifier='score')
    >>> str(lsb)
    'score'
    Nc                óœ   •— t          ¦   «                              ¦   «          || _        || _        || _        || _        || _        || _        d S r"   )r�   r    rÕ   ÚscoreIdentifierr  rœ   r£   Úerror)r   rÕ   r  r  rœ   r£   r  r’   s          €r   r    zLyScoreBody.__init__Ü  sI   ø€ å‰Œ×ÒÑÔÐØˆŒ
Ø.ˆÔØ"ˆŒØ,ˆÔØ"ˆŒØˆŒ
ˆ
ˆ
r   c                ó  — | j         �| j                              ¦   «         S | j        �| j        S | j        €t	          d¦  «        ‚| j        �6| j                             ¦   «         dz   | j                             ¦   «         z   S | j        �6| j                             ¦   «         dz   | j                             ¦   «         z   S | j        �6| j                             ¦   «         dz   | j                             ¦   «         z   S t	          d¦  «        ‚)Nz>scoreBody cannot be None if music and scoreIdentifier are Noner?   zSone of music, scoreIdentifier, lilypondHeader, outputDef, or error must not be None)rÕ   r_   r  r  r   rœ   r£   r  r   s    r   r_   zLyScoreBody.stringOutputæ  s  € ØŒ:Ð!Ø”:×*Ò*Ñ,Ô,Ð,ØÔ!Ð-ØÔ'Ð'ØŒ^Ð#Ý&ØPñRô Rð RàÔ Ð,Ø”>×.Ò.Ñ0Ô0°3Ñ6¸Ô9L×9YÒ9YÑ9[Ô9[Ñ[Ð[ØŒ^Ð'Ø”>×.Ò.Ñ0Ô0°3Ñ6¸¼×9TÒ9TÑ9VÔ9VÑVÐVØŒZÐ#Ø”>×.Ò.Ñ0Ô0°3Ñ6¸¼×9PÒ9PÑ9RÔ9RÑRÐRå&ð%ñ&ô &ð &r   ©NNNNNNr¨   r˜   s   @r   r  r  Ï  s`   ø€ € € € € ð
ð 
ð Y]Ø'+ðð ð ð ð ð ð&ð &ð &ð &ð &ð &ð &r   r  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyPaperBlockNc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    r£   )r   r£   r’   s     €r   r    zLyPaperBlock.__init__ü  r	  r   c                óF   — | j         €d S | j                              ¦   «         S r"   )r£   r_   r   s    r   r_   zLyPaperBlock.stringOutput   s#   € ØŒ>Ð!Ø�4à”>×.Ò.Ñ0Ô0Ð0r   r"   r¿   r˜   s   @r   r  r  ú  sL   ø€ € € € € ð#ð #ð #ð #ð #ð #ð1ð 1ð 1ð 1ð 1ð 1ð 1r   r  c                  ó   — e Zd Zd„ ZdS )ÚLyLayoutc                óŽ   — | j         dz   d| j         z   dz   d| j         z   dz   d| j         z   dz   ddg}|                      |¦  «        S )	Nzlayout {r?   z	context {z   ÚRemoveEmptyStavesz-override VerticalAxisGroup.remove-first = ##tz }Ú})r   rl   )r   ÚtheseStringss     r   r_   zLyLayout.stringOutput  s]   € Øœ¨Ñ3Ø˜dœnÑ,¨{Ñ:Ø ¤Ñ.Ð1DÑDØ ¤Ñ.Ð1`Ñ`Ø! 3ð	(ˆð ×8Ò8¸ÑFÔFÐFr   N)r	   r
   r   r_   r   r   r   r  r    s(   € € € € € ðGð Gð Gð Gð Gr   r  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyOutputDefzM
    This is an ugly grammar, since it does not close the curly bracket.
    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚoutputDefBody)r   r  r’   s     €r   r    zLyOutputDef.__init__  s'   ø€ Ý‰Œ×ÒÑÔÐØ*ˆÔÐÐr   c                óf   — | j         €t          d¦  «        ‚| j                              ¦   «         dz   S )NzNeed outputDefBody to be setr  )r  r   r_   r   s    r   r_   zLyOutputDef.stringOutput  s4   € ØÔÐ%Ý&Ð'EÑFÔFÐFØÔ!×.Ò.Ñ0Ô0°3Ñ6Ð6r   r"   r¨   r˜   s   @r   r  r    sV   ø€ € € € € ðð ð+ð +ð +ð +ð +ð +ð7ð 7ð 7ð 7ð 7ð 7ð 7r   r  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyOutputDefHeadzü
    defType can be paper, midi, or layout.

    >>> lyODH = lily.lilyObjects.LyOutputDefHead()
    >>> lyODH.defType = 'midi'
    >>> print(lyODH.stringOutput())
    \midi

    According to Appendix C, is the same as LyOutputDefHeadWithModeSwitch
    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚdefType)r   r$  r’   s     €r   r    zLyOutputDefHead.__init__,  r¶   r   c                óP   — | j         dvrt          d¦  «        ‚| j        | j         z   S )N)ÚpaperÚmidiÚlayoutz8self.defType must be one of 'paper', 'midi', or 'layout')r$  r   r   r   s    r   r_   zLyOutputDefHead.stringOutput0  s.   € ØŒ<Ð:Ð:Ð:Ý&Ð'aÑbÔbÐbàŒ~ ¤Ñ,Ð,r   r"   r¨   r˜   s   @r   r"  r"     sV   ø€ € € € € ð	ð 	ðð ð ð ð ð ð-ð -ð -ð -ð -ð -ð -r   r"  c                  ó.   ‡ — e Zd ZdZ	 	 dˆ fd„	Zd„ Zˆ xZS )ÚLyOutputDefBodya]  

    output_def_body: output_def_head_with_mode_switch '{'
                    | output_def_head_with_mode_switch
                         '{'
                         OUTPUT_DEF_IDENTIFIER
                    | output_def_body assignment
                    | output_def_body context_def_spec_block
                    | output_def_body error
    Nc                óœ   •— t          ¦   «                              ¦   «          || _        || _        || _        || _        || _        || _        d S r"   )r�   r    ÚoutputDefHeadÚoutputDefIdentifierr  Ú
assignmentrÔ   r  )r   r,  r-  r  r.  rÔ   r  r’   s          €r   r    zLyOutputDefBody.__init__C  sK   ø€ å‰Œ×ÒÑÔÐØ*ˆÔØ#6ˆÔ Ø*ˆÔØ$ˆŒØ#6ˆÔ ØˆŒ
ˆ
ˆ
r   c                ó6  — | j         �7t          | j         ¦  «        dz   }| j        �|t          | j        ¦  «        z   S |S | j        �t	          d¦  «        ‚| j        �6| j                             ¦   «         dz   | j                             ¦   «         z   S | j        �6| j                             ¦   «         dz   | j                             ¦   «         z   S | j        �6| j                             ¦   «         dz   | j                             ¦   «         z   S t	          d¦  «        ‚)Nrn   zSNeed embedded outputDefBody if outputDefIdentifier or outputDefHead are not definedr?   zaNeed to define at least one of assignment, contextDefSpecBlock, or error if outputDefHead is None)	r,  rW   r-  r  r   r.  r_   rÔ   r  rè   s     r   r_   zLyOutputDefBody.stringOutputM  s$  € ØÔÐ)Ý�dÔ(Ñ)Ô)¨EÑ1ˆCØÔ'Ð3Ø�S Ô!9Ñ:Ô:Ñ:Ð:à�
ØÔÐ+Ý&ð (Lñ Mô Mð MàŒ_Ð(ØÔ%×2Ò2Ñ4Ô4°sÑ:¸T¼_×=YÒ=YÑ=[Ô=[Ñ[Ð[ØÔ%Ð1ØÔ%×2Ò2Ñ4Ô4°sÑ:¸TÔ=U×=bÒ=bÑ=dÔ=dÑdÐdØŒZÐ#ØÔ%×2Ò2Ñ4Ô4°sÑ:¸T¼Z×=TÒ=TÑ=VÔ=VÑVÐVå&ð (bñ cô cð cr   r  r¨   r˜   s   @r   r*  r*  7  sg   ø€ € € € € ð	ð 	ð TXØBFðð ð ð ð ð ðcð cð cð cð cð cð cr   r*  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyTempoEventa_  
    tempo_event: "\tempo" steno_duration '=' tempo_range
               | "\tempo" scalar steno_duration '=' tempo_range
               | "\tempo" scalar

    >>> lte = lily.lilyObjects.LyTempoEvent(scalar='40')
    >>> str(lte)
    '\\tempo 40'

    More complex:

    >>> steno = lily.lilyObjects.LyStenoDuration('quarter')
    >>> tempoRange = lily.lilyObjects.LyTempoRange(70, 100)
    >>> lte = lily.lilyObjects.LyTempoEvent(tempoRange=tempoRange, stenoDuration=steno)
    >>> str(lte)
    '\\tempo quarter  = 70~100 '

    >>> lte.scalar = 85
    >>> str(lte)
    '\\tempo 85 quarter  = 70~100 '
    Nc                ór   •— t          ¦   «                              ¦   «          || _        || _        || _        d S r"   )r�   r    Ú
tempoRangeÚstenoDurationÚscalar)r   r3  r4  r5  r’   s       €r   r    zLyTempoEvent.__init__y  s3   ø€ Ý‰Œ×ÒÑÔÐØ$ˆŒØ*ˆÔØˆŒˆˆr   c                ó   — | j         dz   }| j        �¾| j        €t          d¦  «        ‚| j        �Zd                     |t          | j        ¦  «        | j                             ¦   «         d| j                             ¦   «         g¦  «        S d                     || j                             ¦   «         d| j                             ¦   «         g¦  «        S | j        €t          d¦  «        ‚|dz   t          | j        ¦  «        z   S )NÚtempoz2If tempoRange is defined then need a stenoDurationr?   rÏ   z-If tempoRange is not defined then need scalar)r   r3  r4  r   r5  rq   rW   r_   )r   Úbases     r   r_   zLyTempoEvent.stringOutput  s   € ØŒ~ Ñ'ˆØŒ?Ð&ØÔ!Ð)Ý*Ð+_Ñ`Ô`Ð`àŒ{Ð&Ø—x’x Ý!$ T¤[Ñ!1Ô!1Ø!%Ô!3×!@Ò!@Ñ!BÔ!BÀCØ!%¤×!=Ò!=Ñ!?Ô!?ð!Añ Bô Bð Bð
 —x’x  tÔ'9×'FÒ'FÑ'HÔ'HØ!$ d¤o×&BÒ&BÑ&DÔ&Dð!Fñ Gô Gð GàŒ[Ð Ý&Ð'VÑWÔWÐWà�c‰z�C ¤Ñ,Ô,Ñ,Ð,r   ©NNNr¨   r˜   s   @r   r1  r1  b  sV   ø€ € € € € ðð ð,ð ð ð ð ð ð-ð -ð -ð -ð -ð -ð -r   r1  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyMusicListzK
    can take any number of LyMusic, LyEmbeddedScm, or LyError objects
    Nc                ó^   •— t          ¦   «                              ¦   «          |€g }|| _        d S r"   r�   r‘   s     €r   r    zLyMusicList.__init__˜  s/   ø€ Ý‰Œ×ÒÑÔÐØÐØˆHØ ˆŒˆˆr   c                ó6   — |                       | j        ¦  «        S r"   r”   r   s    r   r_   zLyMusicList.stringOutputž  r•   r   r"   r¨   r˜   s   @r   r;  r;  “  s]   ø€ € € € € ðð ð!ð !ð !ð !ð !ð !ðHð Hð Hð Hð Hð Hð Hr   r;  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyMusicNc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ÚsimpleMusicr    )r   rA  r    r’   s      €r   r    zLyMusic.__init__¤  s/   ø€ Ý‰Œ×ÒÑÔÐØ&ˆÔØ,ˆÔÐÐr   c                ó    — | j         �| j                              ¦   «         S | j        �| j                             ¦   «         S t          d¦  «        ‚)Nz3Need to define one of simpleMusic or compositeMusic)rA  r_   r    r   r   s    r   r_   zLyMusic.stringOutput©  sM   € ØÔÐ'ØÔ#×0Ò0Ñ2Ô2Ð2ØÔ Ð,ØÔ&×3Ò3Ñ5Ô5Ð5å&Ð'\Ñ]Ô]Ð]r   rû   r¿   r˜   s   @r   r?  r?  ¢  sS   ø€ € € € € ð-ð -ð -ð -ð -ð -ð
^ð ^ð ^ð ^ð ^ð ^ð ^r   r?  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyAlternativeMusicNc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    Ú	musicList)r   rF  r’   s     €r   r    zLyAlternativeMusic.__init__´  r	  r   c                ó^   — | j         €dS | j        dz   |                      | j         ¦  «        z   S )Nrd   Úalternative)rF  r   rt   r   s    r   r_   zLyAlternativeMusic.stringOutput¸  s1   € ØŒ>Ð!Ø�2à”> MÑ1°D×4EÒ4EÀdÄnÑ4UÔ4UÑUÐUr   r"   r¿   r˜   s   @r   rD  rD  ²  sS   ø€ € € € € ð#ð #ð #ð #ð #ð #ðVð Vð Vð Vð Vð Vð Vr   rD  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyRepeatedMusicNc                ó€   •— t          ¦   «                              ¦   «          || _        || _        || _        || _        d S r"   )r�   r    ÚsimpleStringÚunsignedNumberrÕ   ÚalternativeMusic)r   rL  rM  rÕ   rN  r’   s        €r   r    zLyRepeatedMusic.__init__Á  s>   ø€ Ý‰Œ×ÒÑÔÐØ(ˆÔØ,ˆÔØˆŒ
Ø 0ˆÔÐÐr   c                ó  — | j         dz   | j                             ¦   «         z   | j                             ¦   «         z   | j                             ¦   «         z   }| j        €|S |dz   | j                             ¦   «         z   S )Nzrepeat r?   )r   rL  r_   rM  rÕ   rN  rè   s     r   r_   zLyRepeatedMusic.stringOutputÈ  s‡   € ØŒ~ØñàÔ"×/Ò/Ñ1Ô1ñ2ð Ô$×1Ò1Ñ3Ô3ñ4ð ”×(Ò(Ñ*Ô*ñ	+ˆð
 Ô Ð(ØˆJà˜‘9˜tÔ4×AÒAÑCÔCÑCÐCr   rÐ   r¿   r˜   s   @r   rJ  rJ  ¿  sS   ø€ € € € € ð1ð 1ð 1ð 1ð 1ð 1ð	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Dr   rJ  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLySequentialMusiczm
    represents sequential music.

    Can be explicitly tagged with "\sequential" if displayTag is True
    NFc                ór   •— t          ¦   «                              ¦   «          || _        || _        || _        d S r"   )r�   r    rF  Ú
displayTagÚbeforeMatter)r   rF  rS  rT  r’   s       €r   r    zLySequentialMusic.__init__Û  s5   ø€ Ý‰Œ×ÒÑÔÐØ"ˆŒØ$ˆŒØ(ˆÔÐÐr   c                óÎ   — | j         �| j                              ¦   «         }nd}d}| j        du r
| j        dz   }| j        dk    r| j        dz   }nd}|dz   |z   |z   dz   | j        z   S )Nrd   Tzsequential Ú
startStaffústartStaff z{ ro   )rF  r_   rS  r   rT  rD   )r   ÚmusicListSOÚtagrT  s       r   r_   zLySequentialMusic.stringOutputá  s„   € ØŒ>Ð%Øœ.×5Ò5Ñ7Ô7ˆKˆKàˆKØˆØŒ?˜dÐ"Ð"Ø”. =Ñ0ˆCàÔ Ò,Ð,Øœ>¨MÑ9ˆLˆLàˆLà�T‰z˜LÑ(¨;Ñ6¸Ñ>ÀÔASÑSÐSr   )NFNr¨   r˜   s   @r   rQ  rQ  Ô  s]   ø€ € € € € ðð ð)ð )ð )ð )ð )ð )ðTð Tð Tð Tð Tð Tð Tr   rQ  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyOssiaMusiczi
    represents ossia music.

    Can be tagged with \startStaff and \stopStaff if startstop is True
    NTc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    rF  Ú	startstop)r   rF  r]  r’   s      €r   r    zLyOssiaMusic.__init__ú  ó+   ø€ Ý‰Œ×ÒÑÔÐØ"ˆŒØ"ˆŒˆˆr   c                óÀ   — | j         du r| j        dz   }| j        dz   }nd\  }}| j        �| j                             ¦   «         }nd}d|z   |z   dz   |z   dz   | j        z   S )	NTrW  Ú	stopStaff)rd   rd   rd   Ú{r?   r  )r]  r   rF  r_   rD   )r   ÚstartÚstoprX  s       r   r_   zLyOssiaMusic.stringOutputÿ  sz   € ØŒ>˜TÐ!Ð!Ø”N ]Ñ2ˆEØ”> KÑ/ˆDˆDà ‰KˆE�4àŒ>Ð%Øœ.×5Ò5Ñ7Ô7ˆKˆKàˆKà�U‰{˜[Ñ(¨3Ñ.°Ñ5¸Ñ;¸dÔ>PÑPÐPr   )NTr¨   r˜   s   @r   r[  r[  ó  s]   ø€ € € € € ðð ð#ð #ð #ð #ð #ð #ð
Qð Qð Qð Qð Qð Qð Qr   r[  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLySimultaneousMusicz¡
    represents simultaneous music.

    Can be explicitly tagged with '\simultaneous' if displayTag is True
    otherwise encloses in double angle brackets
    NFc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    rF  rS  )r   rF  rS  r’   s      €r   r    zLySimultaneousMusic.__init__  s+   ø€ Ý‰Œ×ÒÑÔÐØ"ˆŒØ$ˆŒˆˆr   c                óâ   — | j         �| j                              ¦   «         }nd}| j        du r | j        dz   |                      |¦  «        z   S d                     | j        d|d| j        g¦  «        S )Nrd   Tzsimultaneous z<< z >>)rF  r_   rS  r   rt   rq   rD   )r   rX  s     r   r_   z LySimultaneousMusic.stringOutput  st   € ØŒ>Ð%Øœ.×5Ò5Ñ7Ô7ˆKˆKàˆKàŒ?˜dÐ"Ð"Ø”> OÑ3°d×6GÒ6GÈÑ6TÔ6TÑTÐTà—7’7˜DÔ.°°{ÀEÈ4ÔK]Ð^Ñ_Ô_Ð_r   rÅ   r¨   r˜   s   @r   re  re    s]   ø€ € € € € ðð ð%ð %ð %ð %ð %ð %ð
	`ð 	`ð 	`ð 	`ð 	`ð 	`ð 	`r   re  c                  ó*   ‡ — e Zd Z	 	 dˆ fd„	Zd„ Zˆ xZS )ÚLySimpleMusicNc                ó€   •— t          ¦   «                              ¦   «          || _        || _        || _        || _        d S r"   )r�   r    Ú
eventChordÚmusicIdentifierÚmusicPropertyDefÚcontextChange)r   rk  rl  rm  rn  r’   s        €r   r    zLySimpleMusic.__init__)  s>   ø€ å‰Œ×ÒÑÔÐØ$ˆŒØ.ˆÔØ 0ˆÔØ*ˆÔÐÐr   c                óz   — |                       g d¢¦  «        }|€t          d¦  «        ‚|                     ¦   «         S )N)rk  rl  rm  rn  zneed one attribute setr¥   r¦   s     r   r_   zLySimpleMusic.stringOutput1  sR   € Ø×4Ò4ð 6[ð 6[ð 6[ñ \ô \ˆàÐÝ&Ð'?Ñ@Ô@Ð@Ø×(Ò(Ñ*Ô*Ð*r   rÐ   r¿   r˜   s   @r   ri  ri  '  sR   ø€ € € € € à8<Ø6:ð+ð +ð +ð +ð +ð +ð+ð +ð +ð +ð +ð +ð +r   ri  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyContextModificationze
    represents both context_modification and optional_context_mod

    but not context_mod!!!!!
    NTc                ór   •— t          ¦   «                              ¦   «          || _        || _        || _        d S r"   )r�   r    ÚcontextModListÚcontextModIdentifierÚdisplayWith)r   rs  rt  ru  r’   s       €r   r    zLyContextModification.__init__@  s7   ø€ Ý‰Œ×ÒÑÔÐØ,ˆÔØ$8ˆÔ!Ø&ˆÔÐÐr   c                ó�   — | j         �%| j        dz   |                      | j         ¦  «        z   S | j        �| j        dz   | j        z   S dS )Nzwith rd   )rs  r   rt   rt  r   s    r   r_   z"LyContextModification.stringOutputF  sQ   € ØÔÐ*Ø”> GÑ+¨d×.?Ò.?ÀÔ@SÑ.TÔ.TÑTÐTØÔ&Ð2Ø”> GÑ+¨dÔ.GÑGÐGà�2r   )NNTr¨   r˜   s   @r   rq  rq  9  sV   ø€ € € € € ðð ð'ð 'ð 'ð 'ð 'ð 'ðð ð ð ð ð ð r   rq  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyContextModListzY
    contains zero or more LyContextMod objects and an optional contextModIdentifier
    Nc                ól   •— |€g }t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ri   rt  )r   ri   rt  r’   s      €r   r    zLyContextModList.__init__T  s9   ø€ ØÐØˆHÝ‰Œ×ÒÑÔÐØ ˆŒØ$8ˆÔ!Ð!Ð!r   c                ób   — |                       | j        ¦  «        }| j        �|dz   | j        z   S |S ©Nr?   )rl   ri   rt  )r   Úoutputs     r   r_   zLyContextModList.stringOutput[  s7   € Ø×:Ò:¸4¼=ÑIÔIˆØÔ$Ð0Ø˜C‘< $Ô";Ñ;Ð;àˆMr   rû   r¨   r˜   s   @r   rx  rx  O  sV   ø€ € € € € ðð ð9ð 9ð 9ð 9ð 9ð 9ðð ð ð ð ð ð r   rx  c                  ó@   ‡ — e Zd ZdZdˆ fd„	Zed„ ¦   «         Zd„ Zˆ xZS )ÚLyCompositeMusiczU
    one of LyPrefixCompositeMusic or LyGroupedMusicList stored in self.contents
    Nc                ór   •— t          ¦   «                              ¦   «          || _        || _        || _        d S r"   )r�   r    ÚprefixCompositeMusicÚgroupedMusicListÚ	newLyrics)r   r€  r�  r‚  r’   s       €r   r    zLyCompositeMusic.__init__h  s4   ø€ Ý‰Œ×ÒÑÔÐØ$8ˆÔ!Ø 0ˆÔØ"ˆŒˆˆr   c                ó,   — | j         �| j         S | j        S r"   )r€  r�  r   s    r   ri   zLyCompositeMusic.contentsn  s   € àÔ$Ð0ØÔ,Ð,àÔ(Ð(r   c                óú   — | j         �| j         }nd}| j        �'t          | j        ¦  «        dz   t          |¦  «        z   S | j        �'t          | j        ¦  «        dz   t          |¦  «        z   S t	          d¦  «        ‚)Nrd   r@   z>Need to define either prefixCompositeMusic or groupedMusicList)r‚  r€  rW   r�  r   )r   r‚  s     r   r_   zLyCompositeMusic.stringOutputu  s„   € ØŒ>Ð%ØœˆIˆIàˆIàÔ$Ð0Ý�tÔ0Ñ1Ô1°DÑ8½3¸y¹>¼>ÑIÐIØÔ"Ð.Ý�tÔ,Ñ-Ô-°Ñ4µs¸9±~´~ÑEÐEå&ØPñRô Rð Rr   r9  )	r	   r
   r   r}   r    r€   ri   r_   r—   r˜   s   @r   r~  r~  c  sx   ø€ € € € € ðð ð#ð #ð #ð #ð #ð #ð ð)ð )ñ „Xð)ðRð Rð Rð Rð Rð Rð Rr   r~  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyGroupedMusicListz9
    one of LySimultaneousMusic or LySequentialMusic
    Nc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ÚsimultaneousMusicÚsequentialMusic)r   rˆ  r‰  r’   s      €r   r    zLyGroupedMusicList.__init__‰  s/   ø€ Ý‰Œ×ÒÑÔÐØ!2ˆÔØ.ˆÔÐÐr   c                óŒ   — | j         �t          | j         ¦  «        S | j        �t          | j        ¦  «        S t          d¦  «        ‚)Nz:Need to define either simultaneousMusic or sequentialMusic)rˆ  rW   r‰  r   r   s    r   r_   zLyGroupedMusicList.stringOutputŽ  sN   € ØÔ!Ð-Ý�tÔ-Ñ.Ô.Ð.ØÔ!Ð-Ý�tÔ+Ñ,Ô,Ð,å&ØLñNô Nð Nr   rû   r¨   r˜   s   @r   r†  r†  „  s]   ø€ € € € € ðð ð/ð /ð /ð /ð /ð /ð
Nð Nð Nð Nð Nð Nð Nr   r†  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLySchemeFunctiona§  
    Unsupported for now, represents all of::

        function_scm_argument: embedded_scm
          116                      | simple_string

          117 function_arglist_music_last: EXPECT_MUSIC function_arglist music

          118 function_arglist_nonmusic_last: EXPECT_MARKUP
                                                function_arglist
                                                full_markup
          119                               | EXPECT_MARKUP
                                                function_arglist
                                                simple_string
          120                               | EXPECT_SCM
                                                function_arglist
                                                function_scm_argument

          121 function_arglist_nonmusic: EXPECT_NO_MORE_ARGS
          122                          | EXPECT_MARKUP
                                           function_arglist_nonmusic
                                           full_markup
          123                          | EXPECT_MARKUP
                                           function_arglist_nonmusic
                                           simple_string
          124                          | EXPECT_SCM
                                           function_arglist_nonmusic
                                           function_scm_argument

          125 function_arglist: EXPECT_NO_MORE_ARGS
          126                 | function_arglist_music_last
          127                 | function_arglist_nonmusic_last

          128 generic_prefix_music_scm: MUSIC_FUNCTION function_arglist

    We have usually been using LyEmbeddedScm for this
    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   r³   rµ   s     €r   r    zLySchemeFunction.__init__¿  r¶   r   c                ó<   — | j         €d S t          | j         ¦  «        S r"   )r´   rW   r   s    r   r_   zLySchemeFunction.stringOutputÃ  s   € ØŒ<ÐØ�4å�t”|Ñ$Ô$Ð$r   r"   r¨   r˜   s   @r   rŒ  rŒ  ˜  sW   ø€ € € € € ð$ð $ðLð ð ð ð ð ð%ð %ð %ð %ð %ð %ð %r   rŒ  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyOptionalIdz 
    an optional id setting
    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   r³   rµ   s     €r   r    zLyOptionalId.__init__Ï  r¶   r   c                ó(   — | j         €d S d| j         z   S )NrÎ   r¸   r   s    r   r_   zLyOptionalId.stringOutputÓ  s   € ØŒ<ÐØ�4à˜4œ<Ñ'Ð'r   r"   r¨   r˜   s   @r   r�  r�  Ê  sV   ø€ € € € € ðð ðð ð ð ð ð ð(ð (ð (ð (ð (ð (ð (r   r�  c                  ó8   ‡ — e Zd ZdZ	 	 	 	 	 	 	 dˆ fd„	Zd„ Zˆ xZS )ÚLyPrefixCompositeMusicaÌ  
    type must be specified.  Should be one of:

    scheme, context, new, times, repeated, transpose,
    modeChanging, modeChangingWith, relative,
    rhythmed

    prefix_composite_music: generic_prefix_music_scm
                       | "\context"
                                simple_string
                                optional_id
                                optional_context_mod
                                music
                       | "\new"
                                simple_string
                                optional_id
                                optional_context_mod
                                music
                       | "\times" fraction music
                       | repeated_music
                       | "\transpose"
                                pitch_also_in_chords
                                pitch_also_in_chords
                                music
                       | mode_changing_head grouped_music_list
                       | mode_changing_head_with_context
                                optional_context_mod
                                grouped_music_list
                       | relative_music
                       | re_rhythmed_music
    Nc                ó  •— t          ¦   «                              ¦   «          || _        || _        || _        || _        || _        || _        || _        || _	        |	| _
        |
| _        || _        || _        || _        || _        || _        d S r"   )r�   r    ÚtypeÚgenericPrefixMusicScmrL  Ú
optionalIdÚoptionalContextModrÕ   ÚfractionÚrepeatedMusicÚpitchAlsoInChords1ÚpitchAlsoInChords2ÚmodeChangingHeadr�  ÚmodeChangingHeadWithContextÚrelativeMusicÚreRhythmedMusic)r   r–  r—  rL  r˜  r™  rÕ   rš  r›  rœ  r�  rž  r�  rŸ  r   r¡  r’   s                   €r   r    zLyPrefixCompositeMusic.__init__û  s•   ø€ õ 	‰Œ×ÒÑÔÐØˆŒ	Ø%:ˆÔ"Ø(ˆÔØ$ˆŒØ"4ˆÔØˆŒ
Ø ˆŒØ*ˆÔØ"4ˆÔØ"4ˆÔØ 0ˆÔØ 0ˆÔØ+FˆÔ(Ø*ˆÔØ.ˆÔÐÐr   c                óp  — | j         }|dk    rt          | j        ¦  «        S |dv rƒ| j        |z   dz   t          | j        ¦  «        z   dz   }| j        �|t          | j        ¦  «        dz   z  }| j        �|t          | j        ¦  «        dz   z  }|t          | j        ¦  «        dz   z  }|S |dk    r:| j        dz   t          | j        ¦  «        z   dz   t          | j        ¦  «        z   dz   S |dk    rt          | j	        ¦  «        S |dk    rXd 
                    | j        d	t          | j        ¦  «        dt          | j        ¦  «        dt          | j        ¦  «        dg¦  «        S |d
k    r,t          | j        ¦  «        dz   t          | j        ¦  «        z   S |dk    rTt          | j        ¦  «        dz   }| j        �|t          | j        ¦  «        dz   z  }|t          | j        ¦  «        dz   z  }|S |dk    rt          | j        ¦  «        S |dk    rt          | j        ¦  «        S t%          d| j         › �¦  «        ‚)NÚscheme)ÚcontextÚnewr?   Útimesztimes ÚrepeatedÚ	transposerd   z
transpose ÚmodeChangingÚmodeChangingWithÚrelativeÚrhythmedzunknown self.type or None: )r–  rW   r—  r   rL  r˜  r™  rÕ   rš  r›  rq   rœ  r�  rž  r�  rŸ  r   r¡  r   )r   ÚmyTyperj   s      r   r_   z#LyPrefixCompositeMusic.stringOutput  sT  € Ø”ˆØ�XÒÐÝ�tÔ1Ñ2Ô2Ð2ØÐ)Ð)Ð)Ø” Ñ'¨#Ñ-µ°DÔ4EÑ0FÔ0FÑFÈÑLˆAØŒÐ*Ø•S˜œÑ)Ô)¨CÑ/Ñ/�ØÔ&Ð2Ø•S˜Ô0Ñ1Ô1°CÑ7Ñ7�Ø•�T”Z‘” 3Ñ&Ñ&ˆAØˆHØ�wÒÐØ”> HÑ,­s°4´=Ñ/AÔ/AÑAÀCÑGÍ#ÈdÌjÉ/Ì/ÑYÐ\_Ñ_Ð_Ø�zÒ!Ð!Ý�tÔ)Ñ*Ô*Ð*Ø�{Ò"Ð"Ø—7’7˜DœN¨L½#¸dÔ>UÑ:VÔ:VÐX[Ý Ô 7Ñ8Ô8¸#½sÀ4Ä:¹¼ÐPSðUñ Vô Vð Và�~Ò%Ð%Ý�tÔ,Ñ-Ô-°Ñ3µc¸$Ô:OÑ6PÔ6PÑPÐPØÐ)Ò)Ð)Ý�DÔ4Ñ5Ô5¸Ñ;ˆAØÔ&Ð2Ø•S˜Ô0Ñ1Ô1°CÑ7Ñ7�Ø•�TÔ*Ñ+Ô+¨cÑ1Ñ1ˆAØˆHØ�zÒ!Ð!Ý�tÔ)Ñ*Ô*Ð*Ø�zÒ!Ð!Ý�tÔ+Ñ,Ô,Ð,å&Ð'PÀTÄYÐ'PÐ'PÑQÔQÐQr   )NNNNNNNNNNNNNNNr¨   r˜   s   @r   r”  r”  Ú  su   ø€ € € € € ðð ð@ 9=ØHLØ:>Ø=AØ9=ØAEØ!%ð/ð /ð /ð /ð /ð /ð2 Rð  Rð  Rð  Rð  Rð  Rð  Rr   r”  c                  ó2   ‡ — e Zd ZdZg d¢Zdˆ fd„	Zd„ Zˆ xZS )ÚLyModeChangingHeadaž  
    represents both mode_changing_head and mode_changing_head_with_context

    .hasContext = False
    .mode = ['note', 'drum', 'figure', 'chord', 'lyric']

    >>> l = lily.lilyObjects.LyModeChangingHead(hasContext=True, mode='drum')
    >>> print(l.stringOutput())
    \drummode
    >>> l2 = lily.lilyObjects.LyModeChangingHead(hasContext=False, mode='chord')
    >>> print(l2.stringOutput())
    \chords

    )ÚnoteÚdrumÚfigureÚchordÚlyricFNc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    Ú
hasContextÚmode)r   r¶  r·  r’   s      €r   r    zLyModeChangingHead.__init__H  s+   ø€ Ý‰Œ×ÒÑÔÐØ$ˆŒØˆŒ	ˆ	ˆ	r   c                óÎ   — | j         €t          d¦  «        ‚| j         | j        vrt          d| j         › �¦  «        ‚| j        r| j        | j         z   dz   S | j        | j         z   dz   S )NzMode must be setzNot an allowable mode r·  Ús)r·  r   ÚallowableModesr¶  r   r   s    r   r_   zLyModeChangingHead.stringOutputM  st   € ØŒ9ÐÝ&Ð'9Ñ:Ô:Ð:ØŒ9˜DÔ/Ð/Ð/Ý&Ð'KÀÄ	Ð'KÐ'KÑLÔLÐLàŒ?ð 	4Ø”> D¤IÑ-°Ñ6Ð6à”> D¤IÑ-°Ñ3Ð3r   ©FN)r	   r
   r   r}   rº  r    r_   r—   r˜   s   @r   r¯  r¯  7  sd   ø€ € € € € ðð ð BÐAÐA€Nðð ð ð ð ð ð
	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4r   r¯  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyRelativeMusicz
    relative music
    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   r³   rµ   s     €r   r    zLyRelativeMusic.__init__^  r¶   r   c                óJ   — | j         dz   | j                             ¦   «         z   S )Nz	relative )r   r´   r_   r   s    r   r_   zLyRelativeMusic.stringOutputb  s"   € ØŒ~ Ñ+¨d¬l×.GÒ.GÑ.IÔ.IÑIÐIr   r"   r¨   r˜   s   @r   r½  r½  Y  s]   ø€ € € € € ðð ðð ð ð ð ð ðJð Jð Jð Jð Jð Jð Jr   r½  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyNewLyricszF
    contains a list of LyGroupedMusicList objects or identifiers
    Nc                ó^   •— |€g }t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚgroupedMusicLists)r   rÃ  r’   s     €r   r    zLyNewLyrics.__init__k  s3   ø€ ØÐ$Ø "ÐÝ‰Œ×ÒÑÔÐØ!2ˆÔÐÐr   c                ó˜   — d}| j         D ]?}|| j        dz   z  }t          |d¦  «        r||                     ¦   «         z  }Œ7||dz   z  }Œ@|S )Nrd   z
addlyrics r_   r?   )rÃ  r   Úhasattrr_   )r   ÚoutputStringrj   s      r   r_   zLyNewLyrics.stringOutputq  sh   € ØˆØÔ'ð 	(ð 	(ˆAØ˜DœN¨\Ñ9Ñ9ˆLÝ�q˜.Ñ)Ô)ð (Ø §¢Ñ 0Ô 0Ñ0��à  C¡Ñ'��àÐr   r"   r¨   r˜   s   @r   rÁ  rÁ  f  sV   ø€ € € € € ðð ð3ð 3ð 3ð 3ð 3ð 3ð	ð 	ð 	ð 	ð 	ð 	ð 	r   rÁ  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyReRhythmedMusicNc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ÚgroupedMusicr‚  )r   rÊ  r‚  r’   s      €r   r    zLyReRhythmedMusic.__init__~  s,   ø€ Ý‰Œ×ÒÑÔÐØ(ˆÔØ"ˆŒˆˆr   c                ó    — | j         }t          |d¦  «        r|                     ¦   «         }n|dz   }|| j                             ¦   «         z  }|S )Nr_   r?   )rÊ  rÅ  r_   r‚  )r   rj   rÆ  s      r   r_   zLyReRhythmedMusic.stringOutputƒ  sT   € ØÔˆÝ�1�nÑ%Ô%ð 	#ØŸ>š>Ñ+Ô+ˆLˆLà˜s™7ˆLØ˜œ×3Ò3Ñ5Ô5Ñ5ˆØÐr   rû   r¿   r˜   s   @r   rÈ  rÈ  }  sL   ø€ € € € € ð#ð #ð #ð #ð #ð #ð
ð ð ð ð ð ð r   rÈ  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyContextChangeze
    >>> lcc = lily.lilyObjects.LyContextChange('x', 'y')
    >>> str(lcc)
    '\\change x = y '
    Nc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ÚbeforeÚafter)r   rÏ  rÐ  r’   s      €r   r    zLyContextChange.__init__”  s+   ø€ Ý‰Œ×ÒÑÔÐØˆŒØˆŒ
ˆ
ˆ
r   c                óB   — | j         dz   | j        z   dz   | j        z   dz   S )Nzchange rÎ   r?   )r   rÏ  rÐ  r   s    r   r_   zLyContextChange.stringOutput™  s'   € ØŒ~ 	Ñ)¨D¬KÑ7¸%Ñ?À$Ä*ÑLÈsÑRÐRr   rû   r¨   r˜   s   @r   rÍ  rÍ  �  s]   ø€ € € € € ðð ðð ð ð ð ð ð
Sð Sð Sð Sð Sð Sð Sr   rÍ  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyPropertyPathzn
    represents both property_path and property_path_revved

    has one or more of LyEmbeddedScm objects
    Nc                ó^   •— |€g }t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚembeddedScheme)r   rÕ  r’   s     €r   r    zLyPropertyPath.__init__¤  s2   ø€ ØÐ!ØˆNå‰Œ×ÒÑÔÐØ,ˆÔÐÐr   c                óJ   — d                      d„ | j        D ¦   «         ¦  «        S )Nr?   c                ó6   — g | ]}|                      ¦   «         ‘ŒS r   ©r_   )Ú.0Úess     r   ú
<listcomp>z/LyPropertyPath.stringOutput.<locals>.<listcomp>¬  s"   € ÐIÐIÐI¨r˜ŸšÑ*Ô*ÐIÐIÐIr   )rq   rÕ  r   s    r   r_   zLyPropertyPath.stringOutput«  s&   € Ø�xŠxÐIÐI°TÔ5HÐIÑIÔIÑJÔJÐJr   r"   r¨   r˜   s   @r   rÓ  rÓ  �  s]   ø€ € € € € ðð ð-ð -ð -ð -ð -ð -ðKð Kð Kð Kð Kð Kð Kr   rÓ  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyPropertyOperationa  
    Represents:

       property_operation: STRING '=' scalar
                       | "\unset" simple_string
                       | "\override" simple_string property_path '=' scalar
                       | "\revert" simple_string embedded_scm

    mandatory mode in ['set', 'unset', 'override', 'revert']

    also represents simple_music_property_def which has the same forms

    >>> lpo = lily.lilyObjects.LyPropertyOperation('unset', 'simple')
    >>> str(lpo)
    '\\unset simple '

    >>> lpo = lily.lilyObjects.LyPropertyOperation('override', 'simple', 'x', 'y')
    >>> str(lpo)
    '\\override simple.x = y '

    >>> lpo = lily.lilyObjects.LyPropertyOperation('revert', 'x', 'y')
    >>> str(lpo)
    '\\revert x.y '

    TODO: should \set be given?
    Nc                ó€   •— t          ¦   «                              ¦   «          || _        || _        || _        || _        d S r"   )r�   r    r·  Úvalue1Úvalue2Úvalue3)r   r·  rß  rà  rá  r’   s        €r   r    zLyPropertyOperation.__init__Ë  s9   ø€ Ý‰Œ×ÒÑÔÐØˆŒ	ØˆŒØˆŒØˆŒˆˆr   c           
     óª  — | j         dvrt          d| j         › �¦  «        ‚| j         dk    r | j        dz   | j        z   dz   | j        z   dz   S | j         dk    r| j        dz   | j        z   dz   S | j         d	k    r1d
                     | j        d| j        d| j        d| j        dg¦  «        S | j         dk    r | j        dz   | j        z   dz   | j        z   dz   S d S )N)ÚsetÚunsetÚoverrideÚrevertzinvalid mode rã  zset rÎ   r?   rä  zunset rå  rd   z	override ú.ræ  zrevert )r·  r   r   rß  rà  rq   rá  r   s    r   r_   z LyPropertyOperation.stringOutputÒ  sþ   € ØŒ9ÐBÐBÐBÝ&Ð'B°t´yÐ'BÐ'BÑCÔCÐCàŒ9˜ÒÐØ”> FÑ*¨T¬[Ñ8¸5Ñ@À4Ä;ÑNÐQTÑTÐTØŒY˜'Ò!Ð!Ø”> HÑ,¨t¬{Ñ:¸SÑ@Ð@ØŒY˜*Ò$Ð$Ø—7’7˜DœN¨K¸¼ÀcÈ4Ì;Ø! 4¤;°ð5ñ 6ô 6ð 6àŒY˜(Ò"Ð"Ø”> IÑ-°´Ñ;¸cÑAÀDÄKÑOÐRUÑUÐUð #Ð"r   rÐ   r¨   r˜   s   @r   rÝ  rÝ  ¯  s]   ø€ € € € € ðð ð6ð ð ð ð ð ðVð Vð Vð Vð Vð Vð Vr   rÝ  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyContextDefModz`
    one of consists, remove, accepts, defaultchild, denies, alias, type, description, name
    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    Ú
contextDef)r   rë  r’   s     €r   r    zLyContextDefMod.__init__æ  s$   ø€ Ý‰Œ×ÒÑÔÐØ$ˆŒˆˆr   c                ó&   — | j         | j        z   dz   S r{  )r   rë  r   s    r   r_   zLyContextDefMod.stringOutputê  s   € ØŒ~ ¤Ñ/°#Ñ5Ð5r   r"   r¨   r˜   s   @r   ré  ré  á  sV   ø€ € € € € ðð ð%ð %ð %ð %ð %ð %ð6ð 6ð 6ð 6ð 6ð 6ð 6r   ré  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyContextModNc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ÚcontextDefOrPropertyr5  )r   rð  r5  r’   s      €r   r    zLyContextMod.__init__ï  s,   ø€ Ý‰Œ×ÒÑÔÐØ$8ˆÔ!ØˆŒˆˆr   c                ó�   — | j         €| j                             ¦   «         S | j                             ¦   «         dz   | j         z   dz   S r{  )r5  rð  r_   r   s    r   r_   zLyContextMod.stringOutputô  sF   € ØŒ;ÐØÔ,×9Ò9Ñ;Ô;Ð;àÔ,×9Ò9Ñ;Ô;¸cÑAÀDÄKÑOÐRUÑUÐUr   rû   r¿   r˜   s   @r   rî  rî  î  sS   ø€ € € € € ðð ð ð ð ð ð
Vð Vð Vð Vð Vð Vð Vr   rî  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyMusicPropertyDefFNc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ÚisOnceÚpropertyDef)r   rõ  rö  r’   s      €r   r    zLyMusicPropertyDef.__init__   s.   ø€ Ý‰Œ×ÒÑÔÐØˆŒØ&ˆÔÐÐr   c                óf   — d}| j         r|| j        dz   z  }|| j                             ¦   «         z   S )Nrd   zonce )rõ  r   rö  r_   )r   r¹  s     r   r_   zLyMusicPropertyDef.stringOutput  s<   € ØˆØŒ;ð 	*Ø�” 'Ñ)Ñ)ˆAØ�4Ô#×0Ò0Ñ2Ô2Ñ2Ð2r   r»  r¿   r˜   s   @r   ró  ró  þ  sL   ø€ € € € € ð'ð 'ð 'ð 'ð 'ð 'ð
3ð 3ð 3ð 3ð 3ð 3ð 3r   ró  c                  ó.   ‡ — e Zd ZdZ	 	 dˆ fd„	Zd„ Zˆ xZS )ÚLyEventChorda  
    takes all the parts as a list of up to three elements::

        event_chord: simple_chord_elements post_events
               | CHORD_REPETITION optional_notemode_duration post_events
               | MULTI_MEASURE_REST optional_notemode_duration post_events
               | command_element
               | note_chord_element

    simple_chord_elements can be a LySimpleElement object.  Or it can be a
    LyNewChord or LyFigureSpec + Duration
    once that is done.  But there is no LySimpleChordElements object yet.
    Nc                óª   •— t          ¦   «                              ¦   «          || _        || _        || _        || _        || _        || _        || _        d S r"   )	r�   r    ÚsimpleChordElementsÚ
postEventsÚchordRepetitionÚmultiMeasureRestÚdurationÚcommandElementÚnoteChordElement)	r   rû  rü  rý  rþ  rÿ  r   r  r’   s	           €r   r    zLyEventChord.__init__  sU   ø€ å‰Œ×ÒÑÔÐØ#6ˆÔ Ø$ˆŒØ.ˆÔØ 0ˆÔØ ˆŒØ,ˆÔØ 0ˆÔÐÐr   c                óf  — | j         �t          | j         ¦  «        dz   S | j        �t          | j        ¦  «        dz   S | j        �Rt          | j        ¦  «        }| j        �|d| j        z   z  }| j        �| j        D ]}|t          |¦  «        z  }Œ|dz  }|S | j        �Ut          | j        ¦  «        }| j        �|d| j        z   z  }| j        �| j        D ]}|dt          |¦  «        z   z  }Œ|dz  }|S t          | j        ¦  «        }| j        �| j        D ]}|dt          |¦  «        z   z  }Œ|dz  }|S r{  )r  rW   r   rþ  rÿ  rü  rý  rû  ©r   rj   Úpes      r   r_   zLyEventChord.stringOutput(  sf  € ØÔ Ð,Ý�tÔ,Ñ-Ô-°Ñ3Ð3ØÔ Ð,Ý�tÔ*Ñ+Ô+¨cÑ1Ð1ØÔ"Ð.Ý�DÔ)Ñ*Ô*ˆAØŒ}Ð(Ø�S˜4œ=Ñ(Ñ(�ØŒÐ*Øœ/ð !ð !�BØ�˜R™œ‘L�A�AØ�‰HˆAØˆHØÔ!Ð-Ý�DÔ(Ñ)Ô)ˆAØŒ}Ð(Ø�S˜4œ=Ñ(Ñ(�ØŒÐ*Øœ/ð 'ð '�BØ˜�s 2™wœw™Ñ&�A�AØ�‰HˆAØˆHå�DÔ,Ñ-Ô-ˆAØŒÐ*Øœ/ð 'ð '�BØ˜�s 2™wœw™Ñ&�A�AØ�‰HˆAØˆHr   )NNNNNNNr¨   r˜   s   @r   rù  rù    s`   ø€ € € € € ðð ð SWØ]að	1ð 	1ð 	1ð 	1ð 	1ð 	1ðð ð ð ð ð ð r   rù  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyNoteChordElementNc                óz   •— |€g }t          ¦   «                              ¦   «          || _        || _        || _        d S r"   )r�   r    Ú	chordBodyÚoptionalNoteModeDurationrü  )r   r  r	  rü  r’   s       €r   r    zLyNoteChordElement.__init__I  s>   ø€ ØÐØˆJÝ‰Œ×ÒÑÔÐØ"ˆŒØ(@ˆÔ%Ø$ˆŒˆˆr   c                ó®   — t          | j        ¦  «        }| j        �|t          | j        ¦  «        dz   z  }| j        D ]}|t          |¦  «        dz   z  }Œ|S r{  )rW   r  r	  rü  r  s      r   r_   zLyNoteChordElement.stringOutputQ  s`   € Ý�”ÑÔˆØÔ(Ð4Ø•�TÔ2Ñ3Ô3°cÑ9Ñ9ˆAØ”/ð 	ð 	ˆBØ•�R‘”˜3‘ÑˆAˆAØˆr   r9  r¿   r˜   s   @r   r  r  H  sL   ø€ € € € € ð%ð %ð %ð %ð %ð %ðð ð ð ð ð ð r   r  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyChordBodyNc                ó^   •— |€g }t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚchordBodyElements)r   r  r’   s     €r   r    zLyChordBody.__init__\  s3   ø€ ØÐ$Ø "Ðå‰Œ×ÒÑÔÐØ!2ˆÔÐÐr   c                óz   — d                      d„ | j        D ¦   «         ¦  «        }d                      d|dg¦  «        S )Nr?   c                ó,   — g | ]}t          |¦  «        ‘ŒS r   ©rW   )rÙ  Úcbes     r   rÛ  z,LyChordBody.stringOutput.<locals>.<listcomp>d  s   € ÐAÐAÐA 3•c˜#‘h”hÐAÐAÐAr   ú<z> )rq   r  ©r   rj   s     r   r_   zLyChordBody.stringOutputc  s=   € Ø�HŠHÐAÐA¨$Ô*@ÐAÑAÔAÑBÔBˆØ�xŠx˜˜a ˜Ñ'Ô'Ð'r   r"   r¿   r˜   s   @r   r  r  Z  sL   ø€ € € € € ð3ð 3ð 3ð 3ð 3ð 3ð(ð (ð (ð (ð (ð (ð (r   r  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyChordBodyElementaë  
    Contains a note or a drum pitch or a music function::

      chord_body_element: pitch
                            exclamations (a string of zero or more ! marks)
                            questions (a string of zero or more ? marks)
                            octave_check
                            post_events
                       | DRUM_PITCH post_events
                       | music_function_chord_body

    TODO: only the first form is currently supported in creation
    Nc                ó^   •— |€g }t          ¦   «                              ¦   «          || _        d S r"   ©r�   r    Úparts©r   r  r’   s     €r   r    zLyChordBodyElement.__init__w  ó.   ø€ Øˆ=ØˆEÝ‰Œ×ÒÑÔÐØˆŒ
ˆ
ˆ
r   c                óJ   — d                      d„ | j        D ¦   «         ¦  «        S )Nr?   c                ó,   — g | ]}t          |¦  «        ‘ŒS r   r  ©rÙ  Úps     r   rÛ  z3LyChordBodyElement.stringOutput.<locals>.<listcomp>~  s   € Ð4Ð4Ð4 A�˜Q™œÐ4Ð4Ð4r   ©rq   r  r   s    r   r_   zLyChordBodyElement.stringOutput}  s%   € Ø�xŠxÐ4Ð4¨¬Ð4Ñ4Ô4Ñ5Ô5Ð5r   r"   r¨   r˜   s   @r   r  r  h  sV   ø€ € € € € ðð ðð ð ð ð ð ð6ð 6ð 6ð 6ð 6ð 6ð 6r   r  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyCommandElementNc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ÚcommandTypeÚargument)r   r$  r%  r’   s      €r   r    zLyCommandElement.__init__“  s,   ø€ Ý‰Œ×ÒÑÔÐØ&ˆÔØ ˆŒˆˆr   c                ó¬  — | j         }|dk    r$| j        dz   | j                             ¦   «         z   S |dk    r
| j        dz   S |dk    r
| j        dz   S || j        k    r|dz   S |dk    r$| j        d	z   | j                             ¦   «         z   S |d
k    r| j        dz   | j        z   dz   S |dk    r| j        dz   | j        z   dz   S |                     ¦   «         S )NÚskipzskip ú[z[ ú]z] r?   Úpartialzpartial Útimeztime Úmarkúmark )r$  r   r%  r_   ©r   Úcts     r   r_   zLyCommandElement.stringOutput˜  sò   € ØÔˆØ�Š<ˆ<Ø”> GÑ+¨d¬m×.HÒ.HÑ.JÔ.JÑJÐJØ�3ŠYˆYØ”> DÑ(Ð(Ø�3ŠYˆYØ”> DÑ(Ð(Ø�4”>Ò!Ð!Ø˜‘8ˆOØ�9Š_ˆ_Ø”> JÑ.°´×1KÒ1KÑ1MÔ1MÑMÐMØ�6Š\ˆ\Ø”> GÑ+¨d¬mÑ;¸cÑAÐAØ�6Š\ˆ\Ø”> GÑ+¨d¬mÑ;¸cÑAÐAà—?’?Ñ$Ô$Ð$r   rû   r¿   r˜   s   @r   r"  r"  ’  sL   ø€ € € € € ð!ð !ð !ð !ð !ð !ð
%ð %ð %ð %ð %ð %ð %r   r"  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyCommandEventNc                ór   •— t          ¦   «                              ¦   «          || _        || _        || _        d S r"   )r�   r    r$  Ú	argument1Ú	argument2)r   r$  r3  r4  r’   s       €r   r    zLyCommandEvent.__init__­  s3   ø€ Ý‰Œ×ÒÑÔÐØ&ˆÔØ"ˆŒØ"ˆŒˆˆr   c                ó  — | j         }|dk    r
| j        dz   S |dk    r| j        dz   | j        z   dz   S |dk    r| j        dz   | j        z   dz   S |dk    r | j        dz   | j        z   d	z   | j        z   d	z   S |                     ¦   «         S )
Nú~z~ zmark-defaultr-  zdefault zkey-defaultzkey Úkeyr?   )r$  r   r3  r4  r_   r.  s     r   r_   zLyCommandEvent.stringOutput³  s§   € ØÔˆØ�Š9ˆ9Ø”> DÑ(Ð(Ø�>Ò!Ð!Ø”> GÑ+¨d¬nÑ<¸zÑIÐIØ�=Ò Ð Ø”> FÑ*¨T¬^Ñ;¸jÑHÐHØ�5Š[ˆ[à”> FÑ*¨T¬^Ñ;¸cÑAÀDÄNÑRÐUXÑXÐXà—?’?Ñ$Ô$Ð$r   r9  r¿   r˜   s   @r   r1  r1  ¬  sL   ø€ € € € € ð#ð #ð #ð #ð #ð #ð%ð %ð %ð %ð %ð %ð %r   r1  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyPostEventsNc                ó^   •— |€g }t          ¦   «                              ¦   «          || _        d S r"   )r�   r    Ú	eventList)r   r;  r’   s     €r   r    zLyPostEvents.__init__Ã  s/   ø€ ØÐØˆIÝ‰Œ×ÒÑÔÐØ"ˆŒˆˆr   c                óJ   — d                      d„ | j        D ¦   «         ¦  «        S )Nr?   c                ó6   — g | ]}|                      ¦   «         ‘ŒS r   rØ  )rÙ  Úes     r   rÛ  z-LyPostEvents.stringOutput.<locals>.<listcomp>Ê  s"   € ÐBÐBÐB¨a˜ŸšÑ)Ô)ÐBÐBÐBr   )rq   r;  r   s    r   r_   zLyPostEvents.stringOutputÉ  s%   € Ø�xŠxÐBÐB°4´>ÐBÑBÔBÑCÔCÐCr   r"   r¿   r˜   s   @r   r9  r9  Â  sS   ø€ € € € € ð#ð #ð #ð #ð #ð #ðDð Dð Dð Dð Dð Dð Dr   r9  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyPostEventNc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    Úarg1Úarg2)r   rB  rC  r’   s      €r   r    zLyPostEvent.__init__Ï  s+   ø€ Ý‰Œ×ÒÑÔÐØˆŒ	ØˆŒ	ˆ	ˆ	r   c                óv   — t          | j        ¦  «        }| j        �|dt          | j        ¦  «        z   z  }|dz   S r{  )rW   rB  rC  r  s     r   r_   zLyPostEvent.stringOutputÔ  s7   € Ý�”	‰NŒNˆØŒ9Ð Ø�•s˜4œ9‘~”~Ñ%Ñ%ˆAØ�3‰wˆr   rû   r¿   r˜   s   @r   r@  r@  Í  sL   ø€ € € € € ðð ð ð ð ð ð
ð ð ð ð ð ð r   r@  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyDirectionLessEventzy
    represents ['[', ']', '~', '(', ')', '\!', '\(', '\)', '\>', '\<']
    or an EVENT_IDENTIFIER or a tremolo_type
    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   ©r�   r    Úevent©r   rI  r’   s     €r   r    zLyDirectionLessEvent.__init__á  ó$   ø€ Ý‰Œ×ÒÑÔÐØˆŒ
ˆ
ˆ
r   c                ó0   — t          | j        ¦  «        dz   S r{  ©rW   rI  r   s    r   r_   z!LyDirectionLessEvent.stringOutputå  ó   € Ý�4”:‰Œ Ñ$Ð$r   r"   r¨   r˜   s   @r   rF  rF  Û  sV   ø€ € € € € ðð ð
ð ð ð ð ð ð%ð %ð %ð %ð %ð %ð %r   rF  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyDirectionReqdEventNc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   rH  rJ  s     €r   r    zLyDirectionReqdEvent.__init__ë  rK  r   c                ó0   — t          | j        ¦  «        dz   S r{  rM  r   s    r   r_   z!LyDirectionReqdEvent.stringOutputï  rN  r   r"   r¿   r˜   s   @r   rP  rP  ê  sL   ø€ € € € € ðð ð ð ð ð ð%ð %ð %ð %ð %ð %ð %r   rP  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyOctaveCheckNc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚequalOrQuotesOrNone)r   rV  r’   s     €r   r    zLyOctaveCheck.__init__õ  s'   ø€ Ý‰Œ×ÒÑÔÐØ#6ˆÔ Ð Ð r   c                ó8   — | j         }|€d S |dk    rdS d|z   dz   S )NrÏ   z= r?   )rV  )r   Úeqns     r   r_   zLyOctaveCheck.stringOutputù  s1   € ØÔ&ˆØˆ;Ø�4Ø�CŠZˆZØ�4à˜#‘: Ñ#Ð#r   r"   r¿   r˜   s   @r   rT  rT  ó  sL   ø€ € € € € ð7ð 7ð 7ð 7ð 7ð 7ð$ð $ð $ð $ð $ð $ð $r   rT  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyPitchzx
    represents a pitch name and zero or more sup or sub quotes
    also used for steno_pitch and steno_tonic_pitch
    Nc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ÚnoteNamePitchÚquotes)r   r\  r]  r’   s      €r   r    zLyPitch.__init__	  s,   ø€ Ý‰Œ×ÒÑÔÐØ*ˆÔØˆŒˆˆr   c                ó@   — | j         t          | j        ¦  «        z   dz   S r{  )r\  rW   r]  r   s    r   r_   zLyPitch.stringOutput  s   € ØÔ!¥C¨¬Ñ$4Ô$4Ñ4°sÑ:Ð:r   rû   r¨   r˜   s   @r   rZ  rZ    sV   ø€ € € € € ðð ð
ð ð ð ð ð ð
;ð ;ð ;ð ;ð ;ð ;ð ;r   rZ  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyGenTextDefz4
    holds either full_markup, string, or DIGIT
    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   ©r�   r    r)   ©r   r)   r’   s     €r   r    zLyGenTextDef.__init__  rK  r   c                ó0   — t          | j        ¦  «        dz   S r{  ©rW   r)   r   s    r   r_   zLyGenTextDef.stringOutput  rN  r   r"   r¨   r˜   s   @r   r`  r`    sV   ø€ € € € € ðð ðð ð ð ð ð ð%ð %ð %ð %ð %ð %ð %r   r`  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyScriptAbbreviationz`
    Holds a script abbreviation (for articulations etc.), one of::

        ^ + - | > . _

    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   rb  rc  s     €r   r    zLyScriptAbbreviation.__init__)  rK  r   c                ó0   — t          | j        ¦  «        dz   S r{  re  r   s    r   r_   z!LyScriptAbbreviation.stringOutput-  rN  r   r"   r¨   r˜   s   @r   rg  rg  !  óV   ø€ € € € € ðð ðð ð ð ð ð ð%ð %ð %ð %ð %ð %ð %r   rg  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyScriptDirz[
    Holds a script direction abbreviation (above below etc), one of::

        _ ^ -

    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   rb  rc  s     €r   r    zLyScriptDir.__init__9  rK  r   c                ó0   — t          | j        ¦  «        dz   S r{  re  r   s    r   r_   zLyScriptDir.stringOutput=  rN  r   r"   r¨   r˜   s   @r   rl  rl  1  rj  r   rl  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyStenoDurationzÉ
    the main thing that we think of as non-tuplet duration.

    a duration number followed by one or more dots

    >>> lsd = lily.lilyObjects.LyStenoDuration('2', 2)
    >>> print(lsd)
    2..

    Nr   c                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ÚdurationNumberÚnumDots)r   rr  rs  r’   s      €r   r    zLyStenoDuration.__init__P  s,   ø€ Ý‰Œ×ÒÑÔÐØ,ˆÔØˆŒˆˆr   c                óJ   — d| j         z  }t          | j        ¦  «        |z   dz   S )Nrç  r?   )rs  rW   rr  )r   ÚdotStrs     r   r_   zLyStenoDuration.stringOutputU  s)   € Ø�t”|Ñ#ˆÝ�4Ô&Ñ'Ô'¨&Ñ0°3Ñ6Ð6r   r   r¨   r˜   s   @r   rp  rp  D  sV   ø€ € € € € ð	ð 	ðð ð ð ð ð ð
7ð 7ð 7ð 7ð 7ð 7ð 7r   rp  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyMultipliedDurationzá
    represents either a simple LyStenoDuration or a list of things that
    the steno duration should be multiplied by.

    if stenoDur is None then output is None -- thus also represents
    optional_notemode_duration
    Nc                ól   •— |€g }t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ÚstenoDurÚmultiply)r   ry  rz  r’   s      €r   r    zLyMultipliedDuration.__init__c  s6   ø€ ØÐØˆHÝ‰Œ×ÒÑÔÐØ ˆŒØ ˆŒˆˆr   c                ó~   — | j         €d S t          | j         ¦  «        }| j        D ]}|dt          |¦  «        z   z  }Œ|S )Nz * )ry  rW   rz  )r   r¹  Úms      r   r_   z!LyMultipliedDuration.stringOutputj  sJ   € ØŒ=Ð Ø�4å�D”MÑ"Ô"ˆAØ”]ð $ð $�Ø�U�S ™VœV‘^Ñ#��ØˆHr   rû   r¨   r˜   s   @r   rw  rw  Z  sV   ø€ € € € € ðð ð!ð !ð !ð !ð !ð !ðð ð ð ð ð ð r   rw  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyTremoloTypeNc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚtremTypeOrNone)r   r€  r’   s     €r   r    zLyTremoloType.__init__v  s'   ø€ Ý‰Œ×ÒÑÔÐØ,ˆÔÐÐr   c                óH   — | j         �dt          | j         ¦  «        z   dz   S dS )Nú:r?   z: )r€  rW   r   s    r   r_   zLyTremoloType.stringOutputz  s+   € ØÔÐ*Ø�˜TÔ0Ñ1Ô1Ñ1°CÑ7Ð7à�4r   r"   r¿   r˜   s   @r   r~  r~  t  sL   ø€ € € € € ð-ð -ð -ð -ð -ð -ðð ð ð ð ð ð r   r~  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyOptionalRestFc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    Úrest)r   r†  r’   s     €r   r    zLyOptionalRest.__init__„  s$   ø€ Ý‰Œ×ÒÑÔÐØˆŒ	ˆ	ˆ	r   c                ó,   — | j         du rdS | j        dz   S )NFrd   zrest )r†  r   r   s    r   r_   zLyOptionalRest.stringOutputˆ  s!   € ØŒ9˜ÐÐØ�2à”> GÑ+Ð+r   )Fr¿   r˜   s   @r   r„  r„  ƒ  sL   ø€ € € € € ðð ð ð ð ð ð,ð ,ð ,ð ,ð ,ð ,ð ,r   r„  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLySimpleElementa"  
    A single note, lyric element, drum pitch or hidden rest::

        simple_element: pitch
                        exclamations (a string of zero or more ! marks)
                        questions (a string of zero or more ? marks)
                        octave_check
                        optional_notemode_duration
                        optional_rest
                    | DRUM_PITCH optional_notemode_duration
                    | RESTNAME optional_notemode_duration
                    | lyric_element optional_notemode_duration
    Nc                ó^   •— |€g }t          ¦   «                              ¦   «          || _        d S r"   r  r  s     €r   r    zLySimpleElement.__init__ž  r  r   c                óJ   — d                      d„ | j        D ¦   «         ¦  «        S )Nrd   c                ó,   — g | ]}t          |¦  «        ‘ŒS r   r  r  s     r   rÛ  z0LySimpleElement.stringOutput.<locals>.<listcomp>¥  s   € Ð3Ð3Ð3 1�˜A™œÐ3Ð3Ð3r   r   r   s    r   r_   zLySimpleElement.stringOutput¤  s%   € Ø�wŠwÐ3Ð3¨¬
Ð3Ñ3Ô3Ñ4Ô4Ð4r   r"   r¨   r˜   s   @r   r‰  r‰  �  sV   ø€ € € € € ðð ðð ð ð ð ð ð5ð 5ð 5ð 5ð 5ð 5ð 5r   r‰  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyLyricElementzÉ
    Object represents a single Lyric in lilypond.

    >>> lle = lily.lilyObjects.LyLyricElement('hel_')
    >>> lle
    <music21.lily.lilyObjects.LyLyricElement hel_>
    >>> print(lle)
    hel_
    Nc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚlyMarkupOrString)r   r�  r’   s     €r   r    zLyLyricElement.__init__µ  s'   ø€ Ý‰Œ×ÒÑÔÐØ 0ˆÔÐÐr   c                ó0   — t          | j        ¦  «        dz   S r{  )rW   r�  r   s    r   r_   zLyLyricElement.stringOutput¹  s   € Ý�4Ô(Ñ)Ô)¨CÑ/Ð/r   r"   r¨   r˜   s   @r   rŽ  rŽ  ª  sV   ø€ € € € € ðð ð1ð 1ð 1ð 1ð 1ð 1ð0ð 0ð 0ð 0ð 0ð 0ð 0r   rŽ  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyTempoRangez2
    defines either a single tempo or a range
    Nc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ÚlowestOrOnlyTempoÚhighestTempoOrNone)r   r•  r–  r’   s      €r   r    zLyTempoRange.__init__Â  s/   ø€ Ý‰Œ×ÒÑÔÐØ!2ˆÔØ"4ˆÔÐÐr   c                óœ   — | j         €t          | j        ¦  «        dz   S t          | j        ¦  «        dz   t          | j         ¦  «        z   dz   S )Nr?   r6  )r–  rW   r•  r   s    r   r_   zLyTempoRange.stringOutputÇ  sM   € ØÔ"Ð*Ý�tÔ-Ñ.Ô.°Ñ4Ð4å�tÔ-Ñ.Ô.°Ñ4µs¸4Ô;RÑ7SÔ7SÑSÐVYÑYÐYr   rû   r¨   r˜   s   @r   r“  r“  ½  s]   ø€ € € € € ðð ð5ð 5ð 5ð 5ð 5ð 5ð
Zð Zð Zð Zð Zð Zð Zr   r“  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyNumberExpressionzO
    any list of numbers or LyNumberTerms separated by '+' or '-' objects.
    Nc                ó^   •— |€g }t          ¦   «                              ¦   «          || _        d S r"   ©r�   r    ÚnumberAndSepList©r   rœ  r’   s     €r   r    zLyNumberExpression.__init__Ó  ó3   ø€ ØÐ#Ø!ÐÝ‰Œ×ÒÑÔÐØ 0ˆÔÐÐr   c                óT   — d                      d„ | j        D ¦   «         ¦  «        }|dz   S )Nr?   c                ó,   — g | ]}t          |¦  «        ‘ŒS r   r  ©rÙ  r¹  s     r   rÛ  z3LyNumberExpression.stringOutput.<locals>.<listcomp>Ú  ó   € Ð<Ð<Ð< •c˜!‘f”fÐ<Ð<Ð<r   ©rq   rœ  r  s     r   r_   zLyNumberExpression.stringOutputÙ  ó.   € Ø�HŠHÐ<Ð< dÔ&;Ð<Ñ<Ô<Ñ=Ô=ˆØ�3‰wˆr   r"   r¨   r˜   s   @r   r™  r™  Î  óV   ø€ € € € € ðð ð1ð 1ð 1ð 1ð 1ð 1ðð ð ð ð ð ð r   r™  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLyNumberTermz>
    any list of numbers separated by '*' or '/' strings.
    Nc                ó^   •— |€g }t          ¦   «                              ¦   «          || _        d S r"   r›  r�  s     €r   r    zLyNumberTerm.__init__ã  rž  r   c                óT   — d                      d„ | j        D ¦   «         ¦  «        }|dz   S )Nr?   c                ó,   — g | ]}t          |¦  «        ‘ŒS r   r  r¡  s     r   rÛ  z-LyNumberTerm.stringOutput.<locals>.<listcomp>ê  r¢  r   r£  r  s     r   r_   zLyNumberTerm.stringOutputé  r¤  r   r"   r¨   r˜   s   @r   r§  r§  Þ  r¥  r   r§  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyLyricMarkupNc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    r   r   )r   r   r   r’   s      €r   r    zLyLyricMarkup.__init__ï  s,   ø€ Ý‰Œ×ÒÑÔÐØ'>ˆÔ$Ø"ˆŒˆˆr   c                ó–   — | j         €t          | j        ¦  «        dz   S t          | j        ¦  «        dz   t          | j         ¦  «        z   S r{  )r   rW   r   r   s    r   r_   zLyLyricMarkup.stringOutputô  sE   € ØŒ>Ð!Ý�tÔ3Ñ4Ô4°sÑ:Ð:å�tÔ3Ñ4Ô4°sÑ:½SÀÄÑ=PÔ=PÑPÐPr   rû   r¿   r˜   s   @r   r¬  r¬  î  sS   ø€ € € € € ð#ð #ð #ð #ð #ð #ð
Qð Qð Qð Qð Qð Qð Qr   r¬  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyFullMarkupListNc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    r   )r   r   r’   s     €r   r    zLyFullMarkupList.__init__ü  ó'   ø€ Ý‰Œ×ÒÑÔÐØ&<ˆÔ#Ð#Ð#r   c                ó’   — t          | j        t          ¦  «        r
| j        dz   S | j        dz   | j                             ¦   «         z   S )Nr?   zmarkuplines )r#   r   rW   r   r_   r   s    r   r_   zLyFullMarkupList.stringOutput   sI   € Ý�dÔ1µ3Ñ7Ô7ð 	`ØÔ.°Ñ4Ð4ð ”> NÑ2°TÔ5P×5]Ò5]Ñ5_Ô5_Ñ_Ð_r   r"   r¿   r˜   s   @r   r°  r°  û  sS   ø€ € € € € ð=ð =ð =ð =ð =ð =ð`ð `ð `ð `ð `ð `ð `r   r°  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyFullMarkupNc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    r   )r   r   r’   s     €r   r    zLyFullMarkup.__init__	  s'   ø€ Ý‰Œ×ÒÑÔÐØ%:ˆÔ"Ð"Ð"r   c                ó’   — t          | j        t          ¦  «        r
| j        dz   S | j        dz   | j                             ¦   «         z   S )Nr?   zmarkup )r#   r   rW   r   r_   r   s    r   r_   zLyFullMarkup.stringOutput  sG   € Ý�dÔ0µ#Ñ6Ô6ð 	ZØÔ-°Ñ3Ð3à”> IÑ-°Ô0J×0WÒ0WÑ0YÔ0YÑYÐYr   r"   r¿   r˜   s   @r   rµ  rµ    sS   ø€ € € € € ð;ð ;ð ;ð ;ð ;ð ;ðZð Zð Zð Zð Zð Zð Zr   rµ  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyMarkupTopNc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    r3  r4  )r   r3  r4  r’   s      €r   r    zLyMarkupTop.__init__  r^  r   c                óz   — | j         €t          | j        ¦  «        S d                     | j        | j         g¦  «        S r{  )r4  rW   r3  rq   r   s    r   r_   zLyMarkupTop.stringOutput  s5   € ØŒ>Ð!Ý�t”~Ñ&Ô&Ð&à—8’8˜Tœ^¨T¬^Ð<Ñ=Ô=Ð=r   rû   r¿   r˜   s   @r   r¹  r¹    sL   ø€ € € € € ð#ð #ð #ð #ð #ð #ð
>ð >ð >ð >ð >ð >ð >r   r¹  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyMarkupListNc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚmarkupIdentifierOrList)r   r¿  r’   s     €r   r    zLyMarkupList.__init__"  r²  r   c                ó*   — t          | j        ¦  «        S r"   )rW   r¿  r   s    r   r_   zLyMarkupList.stringOutput&  s   € Ý�4Ô.Ñ/Ô/Ð/r   r"   r¿   r˜   s   @r   r½  r½  !  sL   ø€ € € € € ð=ð =ð =ð =ð =ð =ð0ð 0ð 0ð 0ð 0ð 0ð 0r   r½  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyMarkupComposedListNc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ÚmarkupHeadListÚmarkupBracedList)r   rÄ  rÅ  r’   s      €r   r    zLyMarkupComposedList.__init__+  s/   ø€ Ý‰Œ×ÒÑÔÐØ,ˆÔØ 0ˆÔÐÐr   c                óD   — d                      | j        | j        g¦  «        S r{  )rq   rÄ  rÅ  r   s    r   r_   z!LyMarkupComposedList.stringOutput0  s   € Ø�xŠx˜Ô,¨dÔ.CÐDÑEÔEÐEr   rû   r¿   r˜   s   @r   rÂ  rÂ  *  sS   ø€ € € € € ð1ð 1ð 1ð 1ð 1ð 1ð
Fð Fð Fð Fð Fð Fð Fr   rÂ  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyMarkupBracedListNc                óV   •— t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚlistBody)r   rÊ  r’   s     €r   r    zLyMarkupBracedList.__init__5  rî   r   c                ó<   — d                      d| j        dg¦  «        S )Nr?   ra  r  )rq   rÊ  r   s    r   r_   zLyMarkupBracedList.stringOutput9  s   € Ø�xŠx˜˜dœm¨SÐ1Ñ2Ô2Ð2r   r"   r¿   r˜   s   @r   rÈ  rÈ  4  sL   ø€ € € € € ð!ð !ð !ð !ð !ð !ð3ð 3ð 3ð 3ð 3ð 3ð 3r   rÈ  c                  ó*   ‡ — e Zd Zdˆ fd„	Zˆ fd„Zˆ xZS )ÚLyMarkupBracedListBodyNc                ó^   •— |€g }t          ¦   «                              ¦   «          || _        d S r"   )r�   r    ÚmarkupOrMarkupList)r   rÏ  r’   s     €r   r    zLyMarkupBracedListBody.__init__>  s3   ø€ ØÐ%Ø!#Ðå‰Œ×ÒÑÔÐØ"4ˆÔÐÐr   c                óŠ   •— t          ¦   «                              ¦   «          d}| j        D ]}|t          |¦  «        dz   z  }Œ|S )Nrd   r?   )r�   r    rÏ  rW   )r   rj   r|  r’   s      €r   r_   z#LyMarkupBracedListBody.stringOutputE  sK   ø€ Ý‰Œ×ÒÑÔÐØˆØÔ(ð 	ð 	ˆAØ•�Q‘”˜#‘ÑˆAˆAØˆr   r"   r¿   r˜   s   @r   rÍ  rÍ  =  sV   ø€ € € € € ð5ð 5ð 5ð 5ð 5ð 5ðð ð ð ð ð ð ð ð r   rÍ  c                  ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLySimpleMarkupz¸
    simpleType can be 'string' (or markup identifier or lyric markup identifier, etc.) or
    'score-body' or 'markup-function'

    takes 1 required arg, 2nd for markup_function
    rØ   Nc                ór   •— t          ¦   «                              ¦   «          || _        || _        || _        d S r"   )r�   r    Ú
simpleTyper3  r4  )r   rÔ  r3  r4  r’   s       €r   r    zLySimpleMarkup.__init__[  s2   ø€ Ý‰Œ×ÒÑÔÐØ$ˆŒØ"ˆŒØ"ˆŒˆˆr   c                óÊ   — | j         dk    r
| j        dz   S | j         dk    r| j        dz   | j        z   dz   S | j         dk    r"| j        dz   t          | j        ¦  «        z   dz   S d S )NrØ   r?   z
score-bodyzscore { ro   zmarkup-function)rÔ  r3  r   rW   r4  r   s    r   r_   zLySimpleMarkup.stringOutputa  sy   € ØŒ?˜hÒ&Ð&Ø”> CÑ'Ð'ØŒ_ Ò,Ð,Ø”> JÑ.°´Ñ?À%ÑGÐGØŒ_Ð 1Ò1Ð1Ø”> CÑ'­#¨d¬nÑ*=Ô*=Ñ=ÀÑCÐCð 2Ð1r   )rØ   NNr¨   r˜   s   @r   rÒ  rÒ  S  s]   ø€ € € € € ðð ð#ð #ð #ð #ð #ð #ðDð Dð Dð Dð Dð Dð Dr   rÒ  c                  ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLyMarkupNc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r"   )r�   r    ÚsimpleMarkupÚoptionalMarkupHeadList)r   rÙ  rÚ  r’   s      €r   r    zLyMarkup.__init__k  s/   ø€ Ý‰Œ×ÒÑÔÐØ(ˆÔØ&<ˆÔ#Ð#Ð#r   c                óX   — | j         �| j         dz   }nd}|t          | j        ¦  «        z   S )Nr?   rd   )rÚ  rW   rÙ  r  s     r   r_   zLyMarkup.stringOutputp  s5   € ØÔ&Ð2ØÔ+¨cÑ1ˆAˆAàˆAØ•3�tÔ(Ñ)Ô)Ñ)Ð)r   rû   r¿   r˜   s   @r   r×  r×  j  sL   ø€ € € € € ð=ð =ð =ð =ð =ð =ð
*ð *ð *ð *ð *ð *ð *r   r×  c                  ó   — e Zd Zd„ ZdS )ÚTestc                óÜ  — t          dd¦  «        }t          dd¦  «        }t          |¦  «        }t          ||g¬¦  «        }t	          |¦  «        }t          |¬¦  «        }t          |¬¦  «        }t          |g¦  «        }t          |¦  «        }	t          |	¬¦  «        }
t          |
g¦  «        }|                     ¦   «         }|                      |                     ¦   «         d	¦  «         g }|                     ¦   «         D ]!}|                     |j        j        ¦  «         Œ"|                      |g d
¢¦  «         |                     t          ¦  «        }|                      ||
¦  «         dS )z,
        make a dotted-half note c.
        rj   z''Ú2r7   )r  )rk  )rA  )r�  z{ c'' 2.  
    })r‰  rù  ri  r?  r;  rQ  r~  r‹   N)rZ  rp  rw  r‰  rù  ri  r?  r;  rQ  r~  r‹   r_   ÚassertEqualr{   r6   r3   r’   r	   r=   ÚassertIs)r   ÚlyPitchr4  ÚmultipliedDurationÚsimpleElementrk  rA  Ú
musicInnerrF  r‰  r    ÚlilypondTopÚlilypondOutputr4   rk   ÚancestorCompositeMusics                   r   ÚtestOneNoteTheHardWayzTest.testOneNoteTheHardWay©  sz  € õ
 ˜#˜tÑ$Ô$ˆå'¨¨QÑ/Ô/ˆÝ1°-Ñ@Ô@Ðå'¨wÐ8JÐ.KÐLÑLÔLˆå! -Ñ0Ô0ˆ
Ý#¨zÐ:Ñ:Ô:ˆÝ¨Ð5Ñ5Ô5ˆ
Ý  Ñ-Ô-ˆ	Ý+¨IÑ6Ô6ˆÝ)¸?ÐKÑKÔKˆÝ# ^Ð$4Ñ5Ô5ˆØ$×1Ò1Ñ3Ô3ˆà×Ò˜×-Ò-Ñ/Ô/Ð1DÑEÔEÐEàˆ	Ø×%Ò%Ñ'Ô'ð 	3ð 	3ˆAØ×Ò˜Qœ[Ô1Ñ2Ô2Ð2Ð2à×Ò˜ð %6ð %6ð %6ñ 	7ô 	7ð 	7ð ")×!;Ò!;Õ<LÑ!MÔ!MÐØ�ŠÐ,¨nÑ=Ô=Ð=Ð=Ð=r   N)r	   r
   r   ré  r   r   r   rÝ  rÝ  §  s#   € € € € € ð>ð >ð >ð >ð >r   rÝ  Ú__main__)dr}   Ú
__future__r   ÚtypingÚtÚunittestÚmusic21r   r   r   ÚMusic21Exceptionr   ÚProtoM21Objectr   r‚   r‹   rš   rª   r±   r»   rÁ   rÇ   rÒ   rÝ   râ   rë   rò   rý   r  r  r  r  r  r  r"  r*  r1  r;  r?  rD  rJ  rQ  r[  re  ri  rq  rx  r~  r†  rŒ  r�  r”  r¯  r½  rÁ  rÈ  rÍ  rÓ  rÝ  ré  rî  ró  rù  r  r  r  r"  r1  r9  r@  rF  rP  rT  rZ  r`  rg  rl  rp  rw  r~  r„  r‰  rŽ  r“  r™  r§  r¬  r°  rµ  r¹  r½  rÂ  rÈ  rÍ  rÒ  r×  ÚTestCaserÝ  r	   ÚmainTestr   r   r   ú<module>rô     sË  ððð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð ð	ð 	ð 	ð 	ð 	˜<Ô8ñ 	ô 	ð 	ðh2ð h2ð h2ð h2ð h2ˆwÔ%ñ h2ô h2ð h2ðVð ð ð ð ˆXñ ô ð ð$Hð Hð Hð Hð H�Hñ Hô Hð Hð4'+ð '+ð '+ð '+ð '+˜8ñ '+ô '+ð '+ðTVð Vð Vð Vð V�xñ Vô Vð Vð"ð ð ð ð �Hñ ô ð ð2Kð Kð Kð Kð K˜8ñ Kô Kð Kðð ð ð ð �Xñ ô ð ð +Gð +Gð +Gð +Gð +G�8ñ +Gô +Gð +Gð\//ð //ð //ð //ð //�xñ //ô //ð //ðdXð Xð Xð Xð X˜Hñ Xô Xð Xð3ð 3ð 3ð 3ð 3˜8ñ 3ô 3ð 3ðlPð Pð Pð Pð P�(ñ Pô Pð Pð)Lð )Lð )Lð )Lð )L�ñ )Lô )Lð )LðX2ð 2ð 2ð 2ð 2�hñ 2ô 2ð 2ð&(Lð (Lð (Lð (Lð (L�Xñ (Lô (Lð (LðVMð Mð Mð Mð M�8ñ Mô Mð Mð,(&ð (&ð (&ð (&ð (&�(ñ (&ô (&ð (&ðV
1ð 
1ð 
1ð 
1ð 
1�8ñ 
1ô 
1ð 
1ðGð Gð Gð Gð Gˆxñ Gô Gð Gð7ð 7ð 7ð 7ð 7�(ñ 7ô 7ð 7ð-ð -ð -ð -ð -�hñ -ô -ð -ð.(cð (cð (cð (cð (c�hñ (cô (cð (cðV.-ð .-ð .-ð .-ð .-�8ñ .-ô .-ð .-ðbHð Hð Hð Hð H�(ñ Hô Hð Hð^ð ^ð ^ð ^ð ^ˆhñ ^ô ^ð ^ð 
Vð 
Vð 
Vð 
Vð 
V˜ñ 
Vô 
Vð 
VðDð Dð Dð Dð D�hñ Dô Dð Dð*Tð Tð Tð Tð T˜ñ Tô Tð Tð>Qð Qð Qð Qð Q�8ñ Qô Qð Qð6`ð `ð `ð `ð `˜(ñ `ô `ð `ð2+ð +ð +ð +ð +�Hñ +ô +ð +ð$ð ð ð ð ˜Hñ ô ð ð,ð ð ð ð �xñ ô ð ð(Rð Rð Rð Rð R�xñ Rô Rð RðBNð Nð Nð Nð N˜ñ Nô Nð Nð(/%ð /%ð /%ð /%ð /%�xñ /%ô /%ð /%ðd(ð (ð (ð (ð (�8ñ (ô (ð (ð ZRð ZRð ZRð ZRð ZR˜Xñ ZRô ZRð ZRðz4ð 4ð 4ð 4ð 4˜ñ 4ô 4ð 4ðD
Jð 
Jð 
Jð 
Jð 
J�hñ 
Jô 
Jð 
Jðð ð ð ð �(ñ ô ð ð.ð ð ð ð ˜ñ ô ð ð Sð Sð Sð Sð S�hñ Sô Sð Sð Kð Kð Kð Kð K�Xñ Kô Kð Kð$/Vð /Vð /Vð /Vð /V˜(ñ /Vô /Vð /Vðd
6ð 
6ð 
6ð 
6ð 
6�hñ 
6ô 
6ð 
6ð
Vð 
Vð 
Vð 
Vð 
V�8ñ 
Vô 
Vð 
Vð 3ð 3ð 3ð 3ð 3˜ñ 3ô 3ð 3ð 7ð 7ð 7ð 7ð 7�8ñ 7ô 7ð 7ðtð ð ð ð ˜ñ ô ð ð$(ð (ð (ð (ð (�(ñ (ô (ð (ð6ð 6ð 6ð 6ð 6˜ñ 6ô 6ð 6ðT%ð %ð %ð %ð %�xñ %ô %ð %ð4%ð %ð %ð %ð %�Xñ %ô %ð %ð,Dð Dð Dð Dð D�8ñ Dô Dð Dðð ð ð ð �(ñ ô ð ð%ð %ð %ð %ð %˜8ñ %ô %ð %ð%ð %ð %ð %ð %˜8ñ %ô %ð %ð$ð $ð $ð $ð $�Hñ $ô $ð $ð ;ð ;ð ;ð ;ð ;ˆhñ ;ô ;ð ;ð"
%ð 
%ð 
%ð 
%ð 
%�8ñ 
%ô 
%ð 
%ð%ð %ð %ð %ð %˜8ñ %ô %ð %ð %ð %ð %ð %ð %�(ñ %ô %ð %ð&7ð 7ð 7ð 7ð 7�hñ 7ô 7ð 7ð,ð ð ð ð ˜8ñ ô ð ð4
ð 
ð 
ð 
ð 
�Hñ 
ô 
ð 
ð	,ð 	,ð 	,ð 	,ð 	,�Xñ 	,ô 	,ð 	,ð5ð 5ð 5ð 5ð 5�hñ 5ô 5ð 5ð60ð 0ð 0ð 0ð 0�Xñ 0ô 0ð 0ð&Zð Zð Zð Zð Z�8ñ Zô Zð Zð"ð ð ð ð ˜ñ ô ð ð ð ð ð ð �8ñ ô ð ð 
Qð 
Qð 
Qð 
Qð 
Q�Hñ 
Qô 
Qð 
Qð
`ð 
`ð 
`ð 
`ð 
`�xñ 
`ô 
`ð 
`ð	Zð 	Zð 	Zð 	Zð 	Z�8ñ 	Zô 	Zð 	Zð
>ð 
>ð 
>ð 
>ð 
>�(ñ 
>ô 
>ð 
>ð0ð 0ð 0ð 0ð 0�8ñ 0ô 0ð 0ðFð Fð Fð Fð F˜8ñ Fô Fð Fð3ð 3ð 3ð 3ð 3˜ñ 3ô 3ð 3ðð ð ð ð ˜Xñ ô ð ð,Dð Dð Dð Dð D�Xñ Dô Dð Dð.*ð *ð *ð *ð *ˆxñ *ô *ð *ðz!>ð !>ð !>ð !>ð !>ˆ8Ôñ !>ô !>ð !>ðH ˆzÒÐØ€N€N€NØ€GÔ�TÑÔÐÐÐð Ðr   