§
    ƒØjO\  ã                  óÞ   — d Z ddlmZ ddlZddlmZ ddlmZ  ej        d¦  «        Zd„ Z	dd„Z
d	„ Zdd
„Zdd„Z G d„ dej        ¦  «        ZegZedk    rddlZ ej        e¦  «         dS dS )ab  
**N.B. in Dec. 2014 MuseData access was removed from music21 because the rights conflicted with
access computationally from music21.  This module is retained for anyone who has such access,
however it is completely untested now and errors cannot and will not be fixed.**

Functions for translating music21 objects and
:class:`~music21.musedata.base.MuseDataHandler` instances. Mostly,
these functions are for advanced, low level usage. For basic importing of MuseData
files from a file or URL to a :class:`~music21.stream.Stream`, use the music21
converter module's :func:`~music21.converter.parse` function.
é    )ÚannotationsN)Úclef)Úenvironmentzmusedata.translatec                ó  — ddl m} |                     ¦   «         }| D ]f}d}|dk    rd}nC|dk    rd}n:|dk    rd	}n1|d
k    rd}d}n&|dv rd}d}nt                               d|g¦  «         ŒP|                     ||¦  «         Œg|S )aZ  
    Given a musedata beam symbol, converter to a music21 Beams object representation.

    >>> from music21.musedata import translate
    >>> translate._musedataBeamToBeams('[[')
    <music21.beam.Beams <music21.beam.Beam 1/start>/<music21.beam.Beam 2/start>>
    >>> translate._musedataBeamToBeams('===')
    <music21.beam.Beams <music21.beam.Beam 1/continue>/<music21.beam.Beam
            2/continue>/<music21.beam.Beam 3/continue>>

    >>> translate._musedataBeamToBeams(r']/')  # must escape backslash
    <music21.beam.Beams <music21.beam.Beam 1/stop>/<music21.beam.Beam 2/partial/right>>

    r   )ÚbeamNú[Ústartú]Ústopú=Úcontinueú/ÚpartialÚright)ú\z\\Úleftzcannot interpret beams char:)Úmusic21r   ÚBeamsÚenvironLocalÚ
printDebugÚappend)Ú
beamSymbolr   ÚbeamsObjÚcharÚ	directionÚbeamTypes         ú�/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/music21/musedata/translate.pyÚ_musedataBeamToBeamsr   !   sÐ   € ð ÐÐÐÐÐà�zŠz‰|Œ|€Hð ð -ð -ˆØˆ	Ø�3Š;ˆ;ØˆHˆHØ�SŠ[ˆ[ØˆHˆHØ�SŠ[ˆ[Ø!ˆHˆHØ�SŠ[ˆ[Ø ˆHØˆIˆIØ�]Ð"Ð"Ø ˆHØˆIˆIå×#Ò#Ð%CÀTÐ$JÑKÔKÐKØð 	�Š˜ )Ñ,Ô,Ð,Ð,à€Oó    c                óv  — ddl m} ddl m} ddl m} t	          | ¦  «        dk    r4|                     ¦   «         }| d                              ¦   «         |_        n|                     d„ | D ¦   «         ¦  «        }| d          	                    ¦   «         |_
        | d                              ¦   «         }|�|D ]}|                     |¦  «         Œ| d                              ¦   «         }|�t          |¦  «        |_        | d                              ¦   «         D ]}	|j                             |	¦  «         Œ| d                              ¦   «         D ]}
|j                             |
¦  «         Œg }| d                              ¦   «         D ]}|                     |¦  «         Œ| d                              ¦   «         rL|                     d¦  «        |_        |�/|j        �(|j        j        d	v r|                     d
¦  «        |_        n1|�/|j        �(|j        j        d	v r|                     d¦  «        |_        ||fS )a  
    Given a list of MuseDataRecord objects, return a configured
    :class:`~music21.note.Note` or :class:`~music21.chord.Chord`.

    Optionally pass a previous element, which may be music21 Note, Chord, or Rest;
    this is used to determine tie status
    r   ©Únote)Úchord)Útieé   c                ó6   — g | ]}|                      ¦   «         ‘ŒS © )ÚgetPitchObject)Ú.0Úrs     r   ú
<listcomp>z4_musedataRecordListToNoteOrChord.<locals>.<listcomp>`   s$   € Ð@Ð@Ð@°1˜A×,Ò,Ñ.Ô.Ð@Ð@Ð@r   Nr	   )r	   r   r   r   )r   r"   r#   r$   ÚlenÚNoter(   ÚpitchÚChordÚgetQuarterLengthÚquarterLengthÚ	getLyricsÚaddLyricÚgetBeamsr   ÚbeamsÚgetArticulationObjectsÚarticulationsr   ÚgetExpressionObjectsÚexpressionsÚgetDynamicObjectsÚisTiedÚTieÚtype)ÚrecordsÚpreviousElementr"   r#   r$   ÚpostÚ	lyricListÚlyricÚ
beamsCharsÚaÚeÚdynamicObjsÚds                r   Ú _musedataRecordListToNoteOrChordrH   M   sh  € ð ÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐå
ˆ7�|„|�qÒÐØ�yŠy‰{Œ{ˆà˜Q”Z×.Ò.Ñ0Ô0ˆŒ
ˆ
ð �{Š{Ð@Ð@¸Ð@Ñ@Ô@ÑAÔAˆð ! œ×4Ò4Ñ6Ô6€DÔð ˜”
×$Ò$Ñ&Ô&€IØÐàð 	!ð 	!ˆEØ�MŠM˜%Ñ Ô Ð Ð ð ˜”×$Ò$Ñ&Ô&€JØÐÝ)¨*Ñ5Ô5ˆŒ
ð
 �QŒZ×.Ò.Ñ0Ô0ð %ð %ˆØÔ×!Ò! !Ñ$Ô$Ð$Ð$Ø�QŒZ×,Ò,Ñ.Ô.ð #ð #ˆØÔ×Ò Ñ"Ô"Ð"Ð"à€KØ�QŒZ×)Ò)Ñ+Ô+ð ð ˆØ×Ò˜1ÑÔÐÐð ˆq„z×ÒÑÔð 
+Ø—7’7˜7Ñ#Ô#ˆŒØÐ&¨?Ô+>Ð+Jð Ô"Ô'Ð+@Ð@Ð@ØŸ7š7 :Ñ.Ô.�”øàÐ&¨?Ô+>Ð+JØÔ"Ô'Ð+@Ð@Ð@ØŸ7š7 6™?œ?�”Ø�ÐÐr   c                ó>  — t          ||¦  «        \  }}| rD|                     |¦  «         |D ]+}|                     |                     |¦  «        |¦  «         Œ,nC|                     |¦  «         |D ]+}|                     |                     |¦  «        |¦  «         Œ,|S ©N)rH   Ú
coreAppendÚ
coreInsertÚgetOffsetBySite)Ú	hasVoicesÚpendingRecordsÚeLastÚmÚvActiverE   rF   rG   s           r   Ú_processPendingrS   �   s¶   € Ý5°nÀeÑLÔL�N€A€{àð 2Ø×Ò˜1ÑÔÐØð 	>ð 	>ˆAØ×Ò˜q×0Ò0°Ñ9Ô9¸1Ñ=Ô=Ð=Ð=ð	>ð 	
�Š�Q‰ŒˆØð 	2ð 	2ˆAØ�LŠL˜×*Ò*¨1Ñ-Ô-¨qÑ1Ô1Ð1Ð1Ø€Hr   c           	     ón
  — ddl m} ddl m} ddl m} |€|                     ¦   «         }n|}|                     ¦   «         }|                      ¦   «         |_        |j        |_        |  	                    ¦   «         }d}d}	t          |¦  «        D �]©\  }
}|                     ¦   «         sŒ|                     ¦   «         rd}|                     ¦   «         }nd}d}|
t          |¦  «        dz
  k    r||
d	z            }nd}|                     ¦   «         }|�-|                     ¦   «         s|                     ¦   «         |_        |dk    rã|j                             ¦   «         }|�|j                             ¦   «         |_        |j                             ¦   «         |_        |j                             ¦   «         |_        |j                             ¦   «         }|�S|                     |¦  «        }|                     ¦   «         r*|                     ¦   «         }|                     d|¦  «         |                     ¦   «         }g }|D �]K}|                     ¦   «         rA|rtA          |||	||¦  «        }	g }|                     d|¦  «         |                     ¦   «         }| !                    ¦   «         rt|rtA          |||	||¦  «        }	g }| "                    ¦   «         }| #                    ¦   «         |_$        |r| %                    |¦  «         n| %                    |¦  «         |}	Œà| &                    ¦   «         r| '                    |¦  «         �Œ| (                    ¦   «         r,|rtA          |||	||¦  «        }	g }| '                    |¦  «         �ŒM|rtA          |||	||¦  «        }	|�,|r*| )                    ¦   «          | *                    d|¦  «         | )                    ¦   «          |dk    r3|j        �,| +                    ¦   «         d
k     r| ,                    ¦   «          | %                    |¦  «         |d	z  }�Œ«| )                    ¦   «          |  -                    ¦   «         }|�B| .                    ¦   «          /                    |g d¢d¬¦  «         | 0                    d¬¦  «         | j1        d	k    rqt)          j2        |d¬¦  «        | 3                    |j4        ¦  «         5                    ¦   «         _        | 6                    d¬¦  «         | 0                    d¬¦  «         |                     d|¦  «         |S )zG
    Translate a musedata part to a :class:`~music21.stream.Part`.
    r   ©Ústreamr!   )ÚtempoNTFé   r%   g      ð?)r-   r/   ÚKeySignature)ÚclassFilterListÚinPlace)r[   )Úrecurse)7r   rV   r"   rW   ÚScoreÚPartÚgetPartNameÚidÚpartNameÚgetMeasuresÚ	enumerateÚhasNotesrN   ÚVoicer,   ÚgetMeasureObjectÚgetBarObjectÚrightBarlineÚparentÚgetClefObjectr   ÚgetTimeSignatureObjectÚtimeSignatureÚgetKeySignatureÚkeySignatureÚgetDirectiveÚ	TempoTextÚisCommonTempoTextÚgetMetronomeMarkÚinsertÚ
getRecordsÚisBackrS   ÚisRestÚRestr0   r1   rK   ÚisChordr   ÚisNoteÚcoreElementsChangedrL   ÚbarDurationProportionÚpadAsAnacrusisÚgetTranspositionIntervalObjectÚflattenÚ	transposeÚmakeAccidentalsÚstageÚbestClefÚgetElementsByClassÚMeasureÚfirstÚ	makeBeams)ÚmuseDataPartÚinputM21rV   r"   rW   ÚsÚpÚmdmObjsÚbarCountrP   ÚmIndexÚmdmrN   rR   ÚmdmNextrQ   ÚcÚ	directiveÚttÚmmÚmdrObjsrO   Úmdrr*   Ú	tIntervals                            r   ÚmusedataPartToStreamPartr—   ›   s]  € ð ÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐàÐØ�LŠL‰NŒNˆˆàˆà�Š‰Œ€AØ×#Ò#Ñ%Ô%€A„DØ”€A„Jð ×&Ò&Ñ(Ô(€Gð €Hð €EÝ  Ñ)Ô)ð sñ s‰ˆ�à�|Š|‰~Œ~ð 	Øà�=Š=‰?Œ?ð 	ØˆIØ—l’l‘n”nˆGˆGàˆIØˆGð •S˜‘\”\ AÑ%Ò%Ð%Ø˜f q™jÔ)ˆGˆGàˆGà× Ò Ñ"Ô"ˆð Ð w×'7Ò'7Ñ'9Ô'9Ðð %×1Ò1Ñ3Ô3ˆAŒNà�qŠ=ˆ=à”
×(Ò(Ñ*Ô*ˆAØˆ}Øœ×1Ò1Ñ3Ô3�”Ø!œj×?Ò?ÑAÔAˆAŒOØ œZ×7Ò7Ñ9Ô9ˆAŒNàœ
×/Ò/Ñ1Ô1ˆIØÐ$Ø—_’_ YÑ/Ô/�à×'Ò'Ñ)Ô)ð $Ø×,Ò,Ñ.Ô.�BØ—H’H˜Q ‘O”O�Oð —.’.Ñ"Ô"ˆð ˆð ð -	+ñ -	+ˆCð �zŠz‰|Œ|ð 
)ð "ð (Ý+¨I°~ÀuÈaÐQXÑYÔY�EØ%'�Nð —’˜˜GÑ$Ô$Ð$Ø Ÿ,š,™.œ.�à�zŠz‰|Œ|ð +ð "ð (Ý+¨I°~ÀuÈaÐQXÑYÔY�EØ%'�Nà—I’I‘K”K�Ø"%×"6Ò"6Ñ"8Ô"8�”Øð $Ø×&Ò& qÑ)Ô)Ð)Ð)à—L’L ‘O”O�OØ�Øð —’‘”ð +à×%Ò% cÑ*Ô*Ð*Ñ*à—’‘”ð 	+ð "ð (å+¨I°~ÀuÈaÐQXÑYÔY�EØ%'�Nà×%Ò% cÑ*Ô*Ð*ùð ð 	RÝ# I¨~¸uÀaÈÑQÔQˆEð Ð 7ÐØ×'Ò'Ñ)Ô)Ð)Ø�LŠL˜˜GÑ$Ô$Ð$à	×ÒÑÔÐà�qŠ=ˆ=˜Qœ_Ð8à×&Ò&Ñ(Ô(¨3Ò.Ð.Ø× Ò Ñ"Ô"Ð"ð 	
�Š�Q‰ŒˆØ�A‰ˆ‰à×ÒÑÔÐà×;Ò;Ñ=Ô=€IàÐØ	�	Š	‰Œ×Ò˜iØ.OÐ.OÐ.OØ&*ð 	ñ 	,ô 	,ð 	,ð 	
×Ò $ÐÑ'Ô'Ð'àÔ˜QÒÐå<@¼MÈ!ÐUYÐ<ZÑ<ZÔ<Zˆ×Ò˜Vœ^Ñ,Ô,×2Ò2Ñ4Ô4Ô9Ø	�Š˜DˆÑ!Ô!Ð!à	×Ò $ÐÑ'Ô'Ð'ð ‡H‚HˆQ��N„N€NØ€Hr   c                óî  — ddl m} ddl m} |€|                     ¦   «         }n|}|                      ¦   «         }|                     ¦   «         }|                     d|¦  «         |d                              ¦   «         |_        |d          	                    ¦   «         |_
        |d                              ¦   «         |_        |d                              ¦   «         |_        |D ]}t          ||¦  «         Œ|S )a¶  
    Given an museDataWork object, build into a multi-part
    :class:`~music21.stream.Score` with metadata.

    This assumes that this MuseDataHandler defines a single work
    (with 1 or fewer reference numbers).

    if the optional parameter inputM21 is given a music21 Stream subclass,
    it will use that object
    as the outermost object.  However, inner parts will always be
    made :class:`~music21.stream.Part` objects.
    r   rU   )Úmetadata)r   rV   r™   r]   ÚgetPartsÚMetadatars   ÚgetWorkTitleÚtitleÚgetMovementNumberÚmovementNumberÚgetMovementTitleÚmovementNameÚgetWorkNumberÚnumberr—   )ÚmuseDataWorkrˆ   rV   r™   r‰   ÚmdpObjsÚmdÚmdParts           r   ÚmuseDataWorkToStreamScorer¨   A  sý   € ð ÐÐÐÐÐØ Ð Ð Ð Ð Ð àÐØ�LŠL‰NŒNˆˆàˆð ×#Ò#Ñ%Ô%€Gà	×	Ò	Ñ	Ô	€BØ‡H‚HˆQ��O„O€Oà�qŒz×&Ò&Ñ(Ô(€B„HØ œ
×4Ò4Ñ6Ô6€BÔØ˜a”j×1Ò1Ñ3Ô3€B„Oð
 ˜”
×(Ò(Ñ*Ô*€B„Iàð ,ð ,ˆÝ  ¨Ñ+Ô+Ð+Ð+Ø€Hr   c                  ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestc                óô  — ddl m} ddl m} |                     ¦   «         dz  dz  dz  dz  }|                     ¦   «         }|                     |¦  «         t          |¦  «        }|                      t          |j	        ¦  «        d¦  «         |                      |j	        d         j
        d	¦  «         |                      t          |j	        d                              ¦   «         j        ¦  «        d
¦  «         d S )Nr   )Úmusedata©Úcommonr¬   ÚtestPrimitiveÚtest01z01.mdr%   zClarinet in Aé6   )r   r¬   r®   ÚgetSourceFilePathÚMuseDataWorkÚaddFiler¨   ÚassertEqualr,   Úpartsr`   r\   ÚnotesAndRests)Úselfr¬   r®   Úfp1Úmdwr‰   s         r   Ú	testBasiczTest.testBasicm  s   € Ø$Ð$Ð$Ð$Ð$Ð$Ø"Ð"Ð"Ð"Ð"Ð"à×'Ò'Ñ)Ô)Ø'ñ(Ø*9ñ:Ø<DñEØGNñOˆà×#Ò#Ñ%Ô%ˆØ�Š�CÑÔÐå% cÑ*Ô*ˆð 	×Ò�˜QœW™œ qÑ)Ô)Ð)à×Ò˜œ œœ¨Ñ8Ô8Ð8à×Ò�˜QœW QœZ×/Ò/Ñ1Ô1Ô?Ñ@Ô@À"ÑEÔEÐEÐEÐEr   c                ó2  — t          d¦  «        }|                      t          |¦  «        d¦  «         t          d¦  «        }|                      t          |¦  «        d¦  «         t          d¦  «        }|                      t          |¦  «        d¦  «         d S )Nr   z3<music21.beam.Beams <music21.beam.Beam 1/continue>>z]\zR<music21.beam.Beams <music21.beam.Beam 1/stop>/<music21.beam.Beam 2/partial/left>>z]/zS<music21.beam.Beams <music21.beam.Beam 1/stop>/<music21.beam.Beam 2/partial/right>>)r   rµ   Ústr)r¸   r@   s     r   ÚtestGetBeamszTest.testGetBeams£  s­   € å# CÑ(Ô(ˆØ×Ò�˜T™œØNñ	Pô 	Pð 	Põ $ EÑ*Ô*ˆØ×ÒÝ�‰IŒIØ`ñ	bô 	bð 	bõ $ DÑ)Ô)ˆØ×ÒÝ�‰IŒIØañ	cô 	cð 	cð 	cð 	cr   c                ó   — dS )zh
        testing a piece with 1 flat to make sure that sharps appear but normal B-flats do not.
        Nr'   )r¸   s    r   ÚtestAccidentalszTest.testAccidentalsÜ  s	   € ð 	ˆr   c                óD  — ddl m} ddl m} |                     ¦   «         dz  dz  dz  }|                     |¦  «        }|j        d                              dd¦  «        }|                      t          |d          	                    ¦   «         j
        ¦  «        d	¦  «         |                      t          |d          	                    ¦   «         j
        ¦  «        d¦  «         |                      t          |d	          	                    ¦   «         j
        ¦  «        d¦  «         |                      t          |d
          	                    ¦   «         j
        ¦  «        d¦  «         |                      t          |d          	                    ¦   «         j
        ¦  «        d¦  «         d S )Nr   )Ú	converterr­   r¬   r¯   r°   r%   é   rX   é   é   é   )r   rÂ   r®   r²   Úparser¶   Úmeasuresrµ   r,   r\   r·   )r¸   rÂ   r®   ÚfpDirr‰   rÈ   s         r   ÚtestBackBasiczTest.testBackBasic÷  so  € Ø%Ð%Ð%Ð%Ð%Ð%Ø"Ð"Ð"Ð"Ð"Ð"Ø×(Ò(Ñ*Ô*¨ZÑ7¸/ÑIÈHÑTˆØ�OŠO˜EÑ"Ô"ˆð ”7˜1”:×&Ò& q¨!Ñ,Ô,ˆØ×Ò�˜X aœ[×0Ò0Ñ2Ô2Ô@ÑAÔAÀ1ÑEÔEÐEØ×Ò�˜X aœ[×0Ò0Ñ2Ô2Ô@ÑAÔAÀ1ÑEÔEÐEØ×Ò�˜X aœ[×0Ò0Ñ2Ô2Ô@ÑAÔAÀ1ÑEÔEÐEØ×Ò�˜X aœ[×0Ò0Ñ2Ô2Ô@ÑAÔAÀ1ÑEÔEÐEØ×Ò�˜X aœ[×0Ò0Ñ2Ô2Ô@ÑAÔAÀ1ÑEÔEÐEÐEÐEr   N)Ú__name__Ú
__module__Ú__qualname__r»   r¾   rÀ   rÊ   r'   r   r   rª   rª   k  s]   € € € € € ðFð Fð Fðlcð cð cðrð ð ð6Fð Fð Fð Fð Fr   rª   Ú__main__rJ   )Ú__doc__Ú
__future__r   Úunittestr   r   r   ÚEnvironmentr   r   rH   rS   r—   r¨   ÚTestCaserª   Ú
_DOC_ORDERrË   ÚmainTestr'   r   r   ú<module>rÖ      sB  ðð
ð 
ð #Ð "Ð "Ð "Ð "Ð "à €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à&ˆ{Ô&Ð';Ñ<Ô<€ð)ð )ð )ðX=ð =ð =ð =ð@ð ð ðcð cð cð cðL&ð &ð &ð &ðTXFð XFð XFð XFð XFˆ8Ôñ XFô XFð XFðd (Ð(€
àˆzÒÐà€N€N€NØ€GÔ�TÑÔÐÐÐð Ðr   