§
    ƒØjÙ¯  ã                  óþ  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl m!Z! d dl m"Z" d dl#m$Z$m%Z%m&Z&m'Z' d dl(m)Z) d#d„Z* G d„ dej+        ¦  «        Z, G d „ d!ej+        ¦  «        Z-e.d"k    rd dlZ ej/        e,¦  «         dS dS )$é    )ÚannotationsN)ÚElementTreeÚ
fromstring)Úarticulations)Úchord)Úcommon)Ú	converter)Úcorpus)Údefaults)Úduration)Údynamics)Úexpressions)Úharmony)Ú
instrument)Úlayout)Úmeter)Únote)Úrepeat)Úspanner)Ústream)Ústyle)Útempo)Úhelpers)ÚtestPrimitive)ÚGeneralObjectExporterÚScoreExporterÚMusicXMLWarningÚMusicXMLExportException)ÚMeasureParserÚtxtÚstrc                ó.   — t          j        dd| ¦  «        S )zc
    Collapse all whitespace (say, in some XML) to a single space,
    for ease of comparison.
    z\s+ú )ÚreÚsub)r    s    ú“/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/music21/musicxml/test_m21ToXml.pyÚstripInnerSpacesr'   )   s   € õ
 Œ6�&˜#˜sÑ#Ô#Ð#ó    c                  óô   — e Zd Zd„ Zd)d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d „ Z!d!„ Z"d"„ Z#d#„ Z$d$„ Z%d%„ Z&d&„ Z'd'„ Z(d(S )*ÚTestc                óv   — t          ¦   «         }|                     |¦  «        }|                     d¦  «        }|S )Núutf-8)r   ÚparseÚdecode)ÚselfÚobjÚgexÚbytesOutÚbytesOutUnicodes        r&   ÚgetXmlzTest.getXml3   s3   € Ý#Ñ%Ô%ˆØ—9’9˜S‘>”>ˆØ"Ÿ/š/¨'Ñ2Ô2ˆØÐr(   Tc                óÌ   — |r#t          ¦   «         }|                     |¦  «        }t          |¦  «        }||_        |                     ¦   «         }t          j        |¦  «         |S )z8
        Return a <score-partwise> ElementTree.
        )r   ÚfromGeneralObjectr   ÚmakeNotationr-   r   Úindent)r/   r0   r7   r1   ÚSXÚmxScores         r&   ÚgetETz
Test.getET9   s`   € ð ð 	-Ý'Ñ)Ô)ˆCØ×'Ò'¨Ñ,Ô,ˆCå˜3ÑÔˆØ&ˆŒØ—(’(‘*”*ˆÝŒ�wÑÔÐØˆr(   c                óÄ  — t          j        ¦   «         }t          j        ¦   «         }d|_        |                     t          j        d¬¦  «        ¦  «         |                     |¦  «         d}|dz  }|                      t          ¦  «        5 }| 	                    ¦   «          d d d ¦  «         n# 1 swxY w Y   |  
                    t          |j        ¦  «        |¦  «         d S )NzOffstage Trumpetg      `?©ÚquarterLengthz)In part (Offstage Trumpet), measure (1): z9Cannot convert "2048th" duration to MusicXML (too short).)r   ÚScoreÚPartÚpartNameÚinsertr   ÚNoteÚassertRaisesr   ÚwriteÚassertEqualr!   Ú	exception)r/   ÚsÚpÚmsgÚerrors        r&   ÚtestExceptionMessagezTest.testExceptionMessageG   s÷   € ÝŒL‰NŒNˆÝŒK‰MŒMˆØ'ˆŒ
Ø	�Š•”¨(Ð4Ñ4Ô4Ñ5Ô5Ð5Ø	�Š�‰Œˆà9ˆØÐJÑJˆØ×ÒÕ6Ñ7Ô7ð 	¸5Ø�GŠG‰IŒIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à×Ò�˜Uœ_Ñ-Ô-¨sÑ3Ô3Ð3Ð3Ð3s   ÂB-Â-B1Â4B1c                ól  — t          j        d¦  «        }t          |                     ¦   «         j        ¦  «        }|d         }|d         }t          j        ||g¦  «        }|                     d|¦  «         |d         }|d         }|d         }t          j        |||g¦  «        }	|                     d|	¦  «         |d         }
|d	         }t          j        |
|g¦  «        }|                     d|¦  «         |                      |  	                    |¦  «         
                    d
¦  «        d¦  «         d S )Nz*tinynotation: 4/4 c4 d e f g a b c' b a g2r   é   ç        é   é   é   é   éÿÿÿÿz<slur )r	   r-   ÚlistÚrecurseÚnotesr   ÚSlurrB   rF   r4   Úcount)r/   rI   Ú	listNotesÚcÚdÚsl1ÚfÚgÚaÚsl2Úc2Úg2Úsl3s                r&   ÚtestSpannersWritezTest.testSpannersWriteT   s  € ÝŒOÐHÑIÔIˆÝ˜Ÿš™œÔ*Ñ+Ô+ˆ	Ø�aŒLˆØ�aŒLˆÝŒl˜A˜q˜6Ñ"Ô"ˆØ	�Š��cÑÔÐà�aŒLˆØ�aŒLˆØ�aŒLˆÝŒl˜A˜q !˜9Ñ%Ô%ˆØ	�Š��cÑÔÐà�qŒ\ˆØ�rŒ]ˆÝŒl˜B ˜8Ñ$Ô$ˆØ	�Š��cÑÔÐØ×Ò˜Ÿš Q™œ×-Ò-¨hÑ7Ô7¸Ñ;Ô;Ð;Ð;Ð;r(   c                ó*  — t          j        ¦   «         }t          j        ¦   «         }|                     d|¦  «         t          j        ¦   «         }|                     d|¦  «         t          j        ¦   «         }|                     d|¦  «         t          j        dd¬¦  «        }t          j	        ¦   «         }t          j	        ¦   «         }|                     d|¦  «         |                     d|¦  «         |                     d|¦  «         t          j        ||¦  «        }t          j        ||¦  «        }	|                     ||	f¦  «         |                      |¦  «        }
|                      t!          d¦  «        t!          |
¦  «        ¦  «         d S )Nr   ÚCrQ   r=   é   as  <measure implicit="no" number="0">
                       <attributes>
                           <divisions>10080</divisions>
                       </attributes>
                       <note>
                           <pitch>
                               <step>C</step>
                               <octave>4</octave>
                           </pitch>
                           <duration>40320</duration>
                           <type>whole</type>
                       </note>
                       <backup>
                           <duration>40320</duration>
                       </backup>
                       <direction placement="below">
                           <direction-type>
                               <wedge number="1" spread="0" type="crescendo" />
                           </direction-type>
                       </direction>
                       <forward>
                           <duration>20160</duration>
                       </forward>
                       <direction placement="below">
                           <direction-type>
                               <wedge number="2" spread="15" type="diminuendo" />
                           </direction-type>
                       </direction>
                       <direction placement="below">
                           <direction-type>
                               <wedge number="1" spread="15" type="stop" />
                           </direction-type>
                       </direction>
                       <forward>
                           <duration>20160</duration>
                       </forward>
                       <direction placement="below">
                           <direction-type>
                               <wedge number="2" spread="0" type="stop" />
                           </direction-type>
                       </direction>
                   </measure>)r   r?   r@   rB   ÚMeasureÚVoicer   rC   r   ÚSpannerAnchorr   Ú	CrescendoÚ
DiminuendoÚappendr4   ÚassertInr'   )r/   ÚscoreÚpartÚmeasureÚvoiceÚnÚsa1Úsa2ÚcrescÚdimÚxmlOuts              r&   ÚtestSpannerAnchorszTest.testSpannerAnchorsh   sd  € Ý”‘”ˆÝŒ{‰}Œ}ˆØ�Š�Q˜ÑÔÐÝ”.Ñ"Ô"ˆØ�Š�A�wÑÔÐÝ”‘”ˆØ�Š�q˜%Ñ Ô Ð åŒI�c¨Ð+Ñ+Ô+ˆÝÔ#Ñ%Ô%ˆÝÔ#Ñ%Ô%ˆØ�Š�Q˜ÑÔÐØ�Š�Q˜ÑÔÐØ�Š�Q˜ÑÔÐÝÔ" 1 cÑ*Ô*ˆÝÔ! # sÑ+Ô+ˆØ�Š�e˜S�\Ñ"Ô"Ð"à—’˜UÑ#Ô#ˆà�ŠÝð)!ñ*"ô *"õV ˜VÑ$Ô$ñY-	
ô -	
ð -	
ð -	
ð -	
r(   c                ó–  — t          j        ¦   «         dz  dz  }t          j        |dz  ¦  «        }|                      t          |j        ¦  «        d¦  «         |                      |j        d         t          j	        ¦  «         |                      t          |j
        d         j        ¦  «        d¦  «         |                      t          |j
        d         j        ¦  «        d¦  «         |                      |j
        d         j        d         t          j        ¦  «         |                     d¬¦  «         |                      t          |j
        d         j        ¦  «        d¦  «         |                      |¦  «        }|                     d¦  «        d         }|                      t#          d	¦  «        t#          |¦  «        ¦  «         d
S )zõ
        Test that spanners are gathered on the PartStaffs that need them.

        Multi-staff instruments are separated on import into distinct PartStaff
        objects, where usually all the spanners will remain on the first object.
        ÚmusicxmlÚlilypondTestSuitez43e-Multistaff-ClefDynamics.xmlrN   r   T©ÚinPlacez
</backup>
a   <direction placement="below">
                        <direction-type>
                            <wedge number="1" spread="0" type="crescendo" />
                        </direction-type>
                        <staff>2</staff>
                    </direction>N)r   ÚgetSourceFilePathr	   r-   rF   ÚlenÚspannersÚassertIsInstancer   Ú
StaffGroupÚpartsr   rl   r7   r4   Úsplitro   r'   )r/   ÚxmlDirrH   ry   ÚxmlAfterFirstBackups        r&   ÚtestSpannersWritePartStaffsz Test.testSpannersWritePartStaffs­   s�  € õ Ô)Ñ+Ô+¨jÑ8Ð;NÑNˆÝŒO˜FÐ%FÑFÑGÔGˆð 	×Ò�˜QœZ™œ¨!Ñ,Ô,Ð,Ø×Ò˜aœj¨œm­VÔ->Ñ?Ô?Ð?ð 	×Ò�˜QœW QœZÔ0Ñ1Ô1°1Ñ5Ô5Ð5Ø×Ò�˜QœW QœZÔ0Ñ1Ô1°1Ñ5Ô5Ð5Ø×Ò˜aœg aœjÔ1°!Ô4µhÔ6HÑIÔIÐIð 	
�Š˜tˆÑ$Ô$Ð$Ø×Ò�˜QœW QœZÔ0Ñ1Ô1°1Ñ5Ô5Ð5ð —’˜Q‘”ˆØ$Ÿlšl¨=Ñ9Ô9¸!Ô<Ðà�ŠÝð$ñ%ô %õ Ð0Ñ1Ô1ñ		
ô 		
ð 		
ð 		
ð 		
r(   c                óÈ  — t          j        ¦   «         }t          j        |g¦  «        }t          j        |g¦  «        }|                      |¦  «        }|                      d|¦  «         t          j        ¦   «         }t          j        |g¦  «        }|                     d|¦  «         |                      |¦  «        }|                      d|¦  «         |                      d|¦  «         d|_	        |                      |¦  «        }|                      d|¦  «         |                      d|¦  «         d|_	        |                      |¦  «        }|                      d|¦  «         d S )	Nz<voice>1</voice>r   z<voice>2</voice>éê   z<voice>234</voice>z<voice>235</voice>Úhelloz<voice>hello</voice>)
r   rC   r   rj   ri   r4   ÚassertNotInrB   ro   Úid)r/   rt   Úv1Úmry   Ún2Úv2s          r&   ÚtestLowVoiceNumberszTest.testLowVoiceNumbersÓ   s,  € ÝŒI‰KŒKˆÝŒ\˜1˜#ÑÔˆÝŒN˜B˜4Ñ Ô ˆà—’˜Q‘”ˆØ×ÒÐ+¨VÑ4Ô4Ð4ÝŒY‰[Œ[ˆÝŒ\˜2˜$ÑÔˆØ	�Š��B‰ŒˆØ—’˜Q‘”ˆØ�ŠÐ(¨&Ñ1Ô1Ð1Ø�ŠÐ(¨&Ñ1Ô1Ð1ØˆŒØ—’˜Q‘”ˆØ�ŠÐ*¨FÑ3Ô3Ð3Ø�ŠÐ*¨FÑ3Ô3Ð3ØˆŒØ—’˜Q‘”ˆØ�ŠÐ,¨fÑ5Ô5Ð5Ð5Ð5r(   c                óä  — t          j        ¦   «         }t          j        |g¦  «        }t          j        |g¦  «        }t          j        ¦   «         }t          j        |g¦  «        }t          j        |g¦  «        }t          j        ||g¦  «        }t          j        ¦   «         }t          j        |g¦  «        }	t          j        |	g¦  «        }
t          j        ¦   «         }t          j        |g¦  «        }t          j        |g¦  «        }t          j        |
|g¦  «        }t          j        ¦   «         }t          j        |g¦  «        }t          j        |g¦  «        }t          j        ¦   «         }t          j        |g¦  «        }t          j        |g¦  «        }t          j        ||g¦  «        }t          j        |||g¦  «        }t          j        |||g¦  «        }| 	                    d|¦  «         |  
                    |d¬¦  «        }|                     d¦  «        }|D ]L}|                     d¦  «        }|                     d¦  «        }|                      |j        |j        ¦  «         ŒMd S )Nr   F©r7   zpart/measure/noters   Ústaff)r   rC   r   rj   ri   Ú	PartStaffr?   r   r„   rB   r;   ÚfindallÚfindrF   Útext)r/   Ún1_1Úv1_1Úm1_1Ún1_2Úv1_2Úm1_2Úps1Ún2_1Úv2_1Úm2_1Ún2_2Úv2_2Úm2_2Úps2Ún3_1Úv3_1Úm3_1Ún3_2Úv3_2Úm3_2Úps3rH   Ú
staffGroupÚtreeÚmxNotesÚmxNoters   r–   s                                r&   Ú(testVoiceNumberOffsetsThreeStaffsInGroupz-Test.testVoiceNumberOffsetsThreeStaffsInGroupè   s
  € ÝŒy‰{Œ{ˆÝŒ|˜T˜FÑ#Ô#ˆÝŒ~˜t˜fÑ%Ô%ˆÝŒy‰{Œ{ˆÝŒ|˜T˜FÑ#Ô#ˆÝŒ~˜t˜fÑ%Ô%ˆÝÔ  d˜|Ñ,Ô,ˆåŒy‰{Œ{ˆÝŒ|˜T˜FÑ#Ô#ˆÝŒ~˜t˜fÑ%Ô%ˆÝŒy‰{Œ{ˆÝŒ|˜T˜FÑ#Ô#ˆÝŒ~˜t˜fÑ%Ô%ˆÝÔ  d˜|Ñ,Ô,ˆåŒy‰{Œ{ˆÝŒ|˜T˜FÑ#Ô#ˆÝŒ~˜t˜fÑ%Ô%ˆÝŒy‰{Œ{ˆÝŒ|˜T˜FÑ#Ô#ˆÝŒ~˜t˜fÑ%Ô%ˆÝÔ  d˜|Ñ,Ô,ˆåŒL˜#˜s C˜Ñ)Ô)ˆÝÔ&¨¨S°# Ñ7Ô7ˆ
Ø	�Š��JÑÔÐà�zŠz˜!¨%ˆzÑ0Ô0ˆà—,’,Ð2Ñ3Ô3ˆØð 	5ð 	5ˆFØ—K’K Ñ(Ô(ˆEØ—K’K Ñ(Ô(ˆEà×Ò˜UœZ¨¬Ñ4Ô4Ð4Ð4ð		5ð 	5r(   c                ó  — t          j        ¦   «         dz  dz  }|dz  }t          j        |¦  «        }|t          j                                      ¦   «         }|                      |¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |  	                    |¦  «        }| 
                    d¦  «        }|d         }|                      |                     d	¦  «        d
¦  «         |                      t          |¦  «        d¦  «         |                      |d         j        d¦  «         |                      |d         j        d¦  «         |d         }	|                      t          |	¦  «        d¦  «         d„ |	D ¦   «         }
|                      |
g d¢¦  «         |                      |	                     d¦  «        j        d¦  «         |                      |	 
                    d¦  «        d         j        d¦  «         |                      |	 
                    d¦  «        d         j        d¦  «         |                      |	 
                    d¦  «        d         j        d¦  «         |                      |	 
                    d¦  «        d         j        d¦  «         |d         }|                      t          |¦  «        d¦  «         d„ |D ¦   «         }
|                      |
g d¢¦  «         |                      |                     d¦  «        j        ¦  «         |                      | 
                    d¦  «        d         j        d¦  «         |                      | 
                    d¦  «        d         j        d¦  «         |                      | 
                    d¦  «        d         j        d¦  «         |                      | 
                    d¦  «        d         j        d¦  «         d S )Nr|   r}   z!61l-Lyrics-Elisions-Syllables.xmlz<lyric name="1" number="1">z<syllabic>begin</syllabic>z<text>a</text>zpart/measure/note/lyricr   ÚnumberÚ1rh   ÚsyllabicrN   rš   rR   c                ó   — g | ]	}|j         ‘Œ
S © ©Útag©Ú.0Úchilds     r&   ú
<listcomp>z,Test.testCompositeLyrics.<locals>.<listcomp>#  ó   € Ð+Ð+Ð+˜e�”	Ð+Ð+Ð+r(   )r¸   rš   Úelisionr¸   rš   rÂ   r#   ÚmiddleÚbr[   c                ó   — g | ]	}|j         ‘Œ
S rº   r»   r½   s     r&   rÀ   z,Test.testCompositeLyrics.<locals>.<listcomp>-  rÁ   r(   r\   ÚendÚe)r   r€   r	   r-   r   ÚNotRestÚfirstr4   ro   r;   r˜   rF   Úgetr�   r¼   r™   rš   ÚassertIsNone)r/   r‡   ÚfprH   Ún1ry   r±   ÚmxLyricsÚly0Úly1ÚtagsÚly2s               r&   ÚtestCompositeLyricszTest.testCompositeLyrics  s„  € ÝÔ)Ñ+Ô+¨jÑ8Ð;NÑNˆØÐ9Ñ9ˆÝŒO˜BÑÔˆØ�tŒ|Œ_×"Ò"Ñ$Ô$ˆØ—’˜R‘”ˆØ�ŠÐ3°VÑ<Ô<Ð<Ø�ŠÐ2°FÑ;Ô;Ð;Ø�ŠÐ&¨Ñ/Ô/Ð/à�zŠz˜!‰}Œ}ˆØ—<’<Ð 9Ñ:Ô:ˆØ�qŒkˆØ×Ò˜Ÿš Ñ*Ô*¨CÑ0Ô0Ð0Ø×Ò�˜S™œ 1Ñ%Ô%Ð%Ø×Ò˜˜Qœœ ZÑ0Ô0Ð0Ø×Ò˜˜Qœœ VÑ,Ô,Ð,ð �qŒkˆØ×Ò�˜S™œ 1Ñ%Ô%Ð%Ø+Ð+ sÐ+Ñ+Ô+ˆØ×Ò˜ÐRÐRÐRÑSÔSÐSØ×Ò˜Ÿš )Ñ,Ô,Ô1°3Ñ7Ô7Ð7Ø×Ò˜Ÿš ZÑ0Ô0°Ô3Ô8¸(ÑCÔCÐCØ×Ò˜Ÿš VÑ,Ô,¨QÔ/Ô4°cÑ:Ô:Ð:Ø×Ò˜Ÿš ZÑ0Ô0°Ô3Ô8¸(ÑCÔCÐCØ×Ò˜Ÿš VÑ,Ô,¨QÔ/Ô4°cÑ:Ô:Ð:à�qŒkˆØ×Ò�˜S™œ 1Ñ%Ô%Ð%Ø+Ð+ sÐ+Ñ+Ô+ˆØ×Ò˜ÐRÐRÐRÑSÔSÐSØ×Ò˜#Ÿ(š( 9Ñ-Ô-Ô2Ñ3Ô3Ð3Ø×Ò˜Ÿš ZÑ0Ô0°Ô3Ô8¸(ÑCÔCÐCØ×Ò˜Ÿš VÑ,Ô,¨QÔ/Ô4°cÑ:Ô:Ð:Ø×Ò˜Ÿš ZÑ0Ô0°Ô3Ô8¸%Ñ@Ô@Ð@Ø×Ò˜Ÿš VÑ,Ô,¨QÔ/Ô4°cÑ:Ô:Ð:Ð:Ð:r(   c                óŒ  — t          j        dddd¬¦  «        }|                      |¦  «        }|                     d¦  «        }|                      t          |¦  «        d¦  «         |d         }|                     d¦  «        }|                     d	¦  «        }|                      |j        d¦  «         |                      |                     d
¦  «        j        d¦  «         |                      |                     d¦  «        j        d¦  «         |                      |                     d¦  «        j        d¦  «         |                      |                     d¦  «        j        d¦  «         t          ¦   «         }| 	                    |¦  «        }|                      | 
                    d¬¦  «        | 
                    d¬¦  «        ¦  «         |                      |                     d¬¦  «        |                     d¬¦  «        ¦  «         |                      |                     ¦   «         |                     ¦   «         ¦  «         dS )zÙ
        This test checks for the issue in 1756 where a chord symbol imported
        with both inversion and bass would not have them both set.

        There were multiple bugs fixed, so important to check.
        ÚFzA-rN   Úminor)ÚrootÚbassÚ	inversionÚkindúpart/measure/harmonyr   r×   z	root-steprÚ   rÙ   r·   zbass/bass-stepÚAzbass/bass-alterz-1F)r™   N)r   ÚChordSymbolr;   r˜   rF   r�   r™   rš   r   ÚxmlToChordSymbolrØ   r×   rÙ   )	r/   ÚexplicitFm6ÚetÚ
harmonyElsÚ	harmonyElr×   ÚrootStepÚmpÚcss	            r&   Ú#testExportChordSymbolWithInversionsz(Test.testExportChordSymbolWithInversions5  sî  € õ Ô)¨s¸ÈÐQXÐYÑYÔYˆØ�ZŠZ˜Ñ$Ô$ˆØ—Z’ZÐ 6Ñ7Ô7ˆ
Ø×Ò�˜Z™œ¨!Ñ,Ô,Ð,Ø˜q”Mˆ	à�~Š~˜fÑ%Ô%ˆØ—9’9˜[Ñ)Ô)ˆØ×Ò˜œ¨Ñ,Ô,Ð,Ø×Ò˜Ÿš¨Ñ/Ô/Ô4°gÑ>Ô>Ð>Ø×Ò˜Ÿš¨Ñ4Ô4Ô9¸3Ñ?Ô?Ð?Ø×Ò˜ŸšÐ(8Ñ9Ô9Ô>ÀÑDÔDÐDØ×Ò˜ŸšÐ(9Ñ:Ô:Ô?ÀÑFÔFÐFõ ‰_Œ_ˆØ× Ò  Ñ+Ô+ˆØ×Ò˜×)Ò)¨uÐ)Ñ5Ô5°r·w²wÀE°wÑ7JÔ7JÑKÔKÐKØ×Ò˜×)Ò)¨uÐ)Ñ5Ô5°r·w²wÀE°wÑ7JÔ7JÑKÔKÐKØ×Ò˜×.Ò.Ñ0Ô0°"·,²,±.´.ÑAÔAÐAÐAÐAr(   c                ó®  — t          j        d¦  «        }d|_        |                      |¦  «        }|                     d¦  «        }|                      |                     d¦  «        d¦  «         t          j        d¦  «        }|                      |¦  «        }|                     d¦  «        }|                      |                     d¦  «        ¦  «         d S )Nrg   ÚbelowrÛ   Ú	placementÚG)r   rÝ   ré   r;   r™   rF   rÊ   rË   )r/   rå   rà   râ   Úcs2Úet2Ú
harmonyEl2s          r&   ÚtestExportChordSymbolPlacementz#Test.testExportChordSymbolPlacementQ  s³   € ÝÔ  Ñ%Ô%ˆØˆŒØ�ZŠZ˜‰^Œ^ˆØ—G’GÐ2Ñ3Ô3ˆ	Ø×Ò˜Ÿš {Ñ3Ô3°WÑ=Ô=Ð=åÔ! #Ñ&Ô&ˆØ�jŠj˜‰oŒoˆØ—X’XÐ4Ñ5Ô5ˆ
Ø×Ò˜*Ÿ.š.¨Ñ5Ô5Ñ6Ô6Ð6Ð6Ð6r(   c                óØ  — t          j        ¦   «         }t          j        ¦   «         }t          j        ¦   «         }|                     t          j        d¦  «        ¦  «         |                     t          j	        d¦  «        d¦  «         |                     |¦  «         t          j        ¦   «         }|                     t          j
        ¦   «         ¦  «         |                     t          j	        d¦  «        d¦  «         |                     t          j        d¦  «        ¦  «         |                     t          j	        d¦  «        d¦  «         |                     |¦  «         |                     |¦  «         |                      d|                      |¦  «                             d¦  «        ¦  «         |                      d|                      |¦  «                             d¦  «        ¦  «         |                      d|                      |¦  «                             d¦  «        ¦  «         t          j        ¦   «         }t          j        ¦   «         }t          j        ¦   «         }|                     t          j
        ¦   «         ¦  «         |                     t          j	        d¦  «        d¦  «         |                     t          j        d¦  «        ¦  «         |                     t          j	        d¦  «        d¦  «         |                     |¦  «         t          j        ¦   «         }|                     t          j
        d	¦  «        ¦  «         |                     t          j	        d¦  «        d¦  «         |                     t          j        d¦  «        ¦  «         |                     t          j	        d¦  «        d¦  «         |                     |¦  «         |                     |¦  «         |                      d|                      |¦  «                             d¦  «        ¦  «         |                      d|                      |¦  «                             d
¦  «        ¦  «         d S )Nrg   rQ   rh   rP   z<harmonyrN   z<kind text="N.C.">none</kind>z<root-step text="">zNo Chordz!<kind text="No Chord">none</kind>)r   r?   r@   ri   rn   r   rÝ   ÚrepeatAppendr   rC   ÚNoChordrF   r4   rY   )r/   rH   rI   r�   s       r&   ÚtestExportNCzTest.testExportNC]  s4  € ÝŒL‰NŒNˆÝŒK‰MŒMˆÝŒNÑÔˆØ	�Š•Ô$ SÑ)Ô)Ñ*Ô*Ð*Ø	�Š•t”y ‘~”~ qÑ)Ô)Ð)Ø	�Š�‰ŒˆÝŒNÑÔˆØ	�Š•”Ñ"Ô"Ñ#Ô#Ð#Ø	�Š•t”y ‘~”~ qÑ)Ô)Ð)Ø	�Š•Ô$ SÑ)Ô)Ñ*Ô*Ð*Ø	�Š•t”y ‘~”~ qÑ)Ô)Ð)Ø	�Š�‰ŒˆØ	�Š�‰Œˆà×Ò˜˜DŸKšK¨™NœN×0Ò0°Ñ<Ô<Ñ=Ô=Ð=Ø×Ò˜˜DŸKšK¨™NœN×0Ò0Ð1PÑQÔQÑRÔRÐRØ×Ò˜˜DŸKšK¨™NœN×0Ò0Ð1FÑGÔGÑHÔHÐHåŒL‰NŒNˆÝŒK‰MŒMˆÝŒNÑÔˆØ	�Š•”Ñ"Ô"Ñ#Ô#Ð#Ø	�Š•t”y ‘~”~ qÑ)Ô)Ð)Ø	�Š•Ô$ SÑ)Ô)Ñ*Ô*Ð*Ø	�Š•t”y ‘~”~ qÑ)Ô)Ð)Ø	�Š�‰ŒˆÝŒNÑÔˆØ	�Š•” Ñ,Ô,Ñ-Ô-Ð-Ø	�Š•t”y ‘~”~ qÑ)Ô)Ð)Ø	�Š•Ô$ SÑ)Ô)Ñ*Ô*Ð*Ø	�Š•t”y ‘~”~ qÑ)Ô)Ð)Ø	�Š�‰ŒˆØ	�Š�‰Œˆà×Ò˜˜DŸKšK¨™NœN×0Ò0Ð1PÑQÔQÑRÔRÐRØ×Ò˜˜DŸKšK¨™NœN×0Ò0Ð1TÑUÔUÑVÔVÐVÐVÐVr(   c                óü   — t          j        d¦  «        }t          j        |g¦  «        }t	          |¦  «        }|                     ¦   «          d„ |D ¦   «         }|                      ||j        d d…         ¦  «         d S )Nztinynotation: 4/4 c1 d1c                ó(   — g | ]}|j         d k    ¯|‘ŒS )r   )Úoffset)r¾   r�   s     r&   rÀ   z8Test.testSetPartsAndRefStreamMeasure.<locals>.<listcomp>ˆ  s   € Ð>Ð>Ð> a°´¸A²° °°°r(   rN   )r	   r-   r   r?   r   ÚsetPartsAndRefStreamÚassertSequenceEqualÚelements)r/   rI   ÚscÚsxÚmeasuresAtOffsetZeros        r&   ÚtestSetPartsAndRefStreamMeasurez$Test.testSetPartsAndRefStreamMeasureƒ  s}   € ÝŒOÐ5Ñ6Ô6ˆÝŒ\˜1˜#ÑÔˆÝ˜2ÑÔˆØ
×ÒÑ!Ô!Ð!Ø>Ð>¨1Ð>Ñ>Ô>ÐØ× Ò Ð!5°q´zÀ"À1À"´~ÑFÔFÐFÐFÐFr(   c                ó¤  — t          j        ¦   «         }|                     t          j        d¦  «        ¦  «         |                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         t          |¦  «        }|                      t          ¦  «        5 }t          |                     ¦   «                              d¦  «        ¦  «        }ddd¦  «         n# 1 swxY w Y   |                      t          |¦  «                             d¦  «        d         t!          |j        ¦  «        ¦  «         |                      dt!          |j        ¦  «        ¦  «         |                      t          |¦  «        t!          |j        ¦  «        ¦  «         |                      |                     d¦  «        g ¦  «         dS )zF
        Badly nested streams should warn but output no gaps.
        ú1/4r,   Nz 0xr   z/ is not well-formed; see isWellFormedNotation()ú
.//forward)r   r?   rn   r   ÚTimeSignaturer   rC   r   ÚassertWarnsr   Úet_fromstringr-   r.   ro   Úreprr†   r!   Úwarningr�   r÷   r˜   )r/   rH   r1   Úcmr±   s        r&   ÚtestFromScoreNoPartszTest.testFromScoreNoParts‹  s’  € õ ŒL‰NŒNˆØ	�Š•Ô$ UÑ+Ô+Ñ,Ô,Ð,Ø	�Š•”‘”ÑÔÐØ	�Š•”‘”ÑÔÐÝ# AÑ&Ô&ˆà×Ò�oÑ.Ô.ð 	>°"Ý  §¢¡¤×!3Ò!3°GÑ!<Ô!<Ñ=Ô=ˆDð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>à�Š•d˜1‘g”g—m’m EÑ*Ô*¨1Ô-­s°2´:©¬Ñ?Ô?Ð?Ø�ŠÐGÍÈRÌZÉÌÑYÔYÐYð 	×Ò�˜a™œ¥# b¤j¡/¤/Ñ2Ô2Ð2ð 	× Ò  §¢¨lÑ!;Ô!;¸RÑ@Ô@Ð@Ð@Ð@s   Â05C1Ã1C5Ã8C5c                ó  — t          j        ¦   «         }|                     t          j        ¦   «         ¦  «         t          |¦  «        }|                     ¦   «         }|                      |                     d¦  «        ¦  «         d S )Nú
.//measure)	r   r?   rn   r   rC   r   r-   ÚassertIsNotNoner™   )r/   rH   Ú
scExporterr±   s       r&   ÚtestFromScoreNoMeasureszTest.testFromScoreNoMeasures   si   € ÝŒL‰NŒNˆØ	�Š•”‘”ÑÔÐÝ" 1Ñ%Ô%ˆ
Ø×ÒÑ!Ô!ˆà×Ò˜TŸYšY |Ñ4Ô4Ñ5Ô5Ð5Ð5Ð5r(   c                óN  — t          j        t          j        ¦   «         t	          j        d¦  «        g¦  «        }t          j        |¦  «        }d|_        t          j        t          j        t          j        ¦   «         t	          j        ¦   «         g¦  «        ¦  «        }t          j	        ||g¦  «        }|  
                    |j        d¦  «         t          |¦  «        }t          |                     ¦   «                              d¦  «        ¦  «        }|  
                    t          |                     d¦  «        ¦  «        d¦  «         |  
                    |                     d¦  «        j        d¦  «         d|_        t          |¦  «        }t          |                     ¦   «                              d¦  «        ¦  «        }|  
                    t          |                     d¦  «        ¦  «        d¦  «         |  
                    |                     d¦  «        j        d¦  «         d	S )
z@
        A score with mixed sounding and written parts.
        rg   TÚunknownr,   z.//transposerN   z.//stepÚDN)r   ri   r   ÚClarinetr   rC   r@   ÚatSoundingPitchÚBassoonr?   rF   r   r  r-   r.   r�   r˜   r™   rš   )r/   r�   Úp1Úp2rH   r1   r×   s          r&   ÚtestFromSoundingPitchzTest.testFromSoundingPitch¨  s£  € õ ŒN�JÔ/Ñ1Ô1µ4´9¸S±>´>ÐBÑCÔCˆÝŒ[˜‰^Œ^ˆØ!ˆÔÝŒ[�œ­Ô);Ñ)=Ô)=½t¼y¹{¼{Ð(KÑLÔLÑMÔMˆÝŒL˜"˜b˜Ñ"Ô"ˆØ×Ò˜Ô*¨IÑ6Ô6Ð6Ý# AÑ&Ô&ˆÝ˜SŸYšY™[œ[×/Ò/°Ñ8Ô8Ñ9Ô9ˆØ×Ò�˜TŸ\š\¨.Ñ9Ô9Ñ:Ô:¸AÑ>Ô>Ð>Ø×Ò˜Ÿš 9Ñ-Ô-Ô2°CÑ8Ô8Ð8à ˆÔÝ# AÑ&Ô&ˆÝ˜SŸYšY™[œ[×/Ò/°Ñ8Ô8Ñ9Ô9ˆØ×Ò�˜TŸ\š\¨.Ñ9Ô9Ñ:Ô:¸AÑ>Ô>Ð>Ø×Ò˜Ÿš 9Ñ-Ô-Ô2°CÑ8Ô8Ð8Ð8Ð8r(   c           
     óà  — t          j        t          j        t          j        ¦   «         t          j        d¬¦  «        g¦  «        t          j        t          j        ¦   «         t          j        d¬¦  «        g¦  «        t          j        t          j        ¦   «         t          j        d¬¦  «        g¦  «        g¦  «        }t          j        t          j        t          j        ¦   «         t          j        d¬¦  «        g¦  «        t          j        t          j        ¦   «         t          j        d¬¦  «        g¦  «        t          j        t          j        ¦   «         t          j        d¬¦  «        g¦  «        g¦  «        }t          j        ||g¦  «        }t          |¦  «        }| 
                    ¦   «         }|                      t          |                     d¦  «        ¦  «        d¦  «         |                      t          |                     d¦  «        ¦  «        d¦  «         |                      |                     d¦  «                             d¦  «        |                     d¦  «                             d¦  «        ¦  «         |                      |                     d¦  «                             d¦  «        |                     d¦  «        d                              d¦  «        ¦  «         d	S )
a‚  
        This is a score for two woodwind players both doubling on
        flute and oboe. They both switch to flute and then back to oboe.
        There are six m21 instruments to represent this, but the
        <score-instrument> tags need just four, since no
        musicXML <part> needs two oboes in it, etc., unless
        there is a patch change/MIDI instrument change.
        Úwhole©Útypeú.//score-instrumentrQ   ú.//measure/note/instrumentrS   rŽ   rT   N)r   r@   ri   r   ÚOboer   rC   ÚFluter?   r   r-   rF   r�   r˜   r™   rÊ   ÚassertNotEqual)r/   r  r  rH   ÚscExr±   s         r&   ÚtestMultipleInstrumentszTest.testMultipleInstruments½  s`  € õ Œ[ÝŒN�JœOÑ-Ô-­t¬y¸gÐ/FÑ/FÔ/FÐGÑHÔHÝŒN�JÔ,Ñ.Ô.µ´	¸wÐ0GÑ0GÔ0GÐHÑIÔIÝŒN�JœOÑ-Ô-­t¬y¸gÐ/FÑ/FÔ/FÐGÑHÔHð
ñ ô ˆõ
 Œ[ÝŒN�JœOÑ-Ô-­t¬y¸gÐ/FÑ/FÔ/FÐGÑHÔHÝŒN�JÔ,Ñ.Ô.µ´	¸wÐ0GÑ0GÔ0GÐHÑIÔIÝŒN�JœOÑ-Ô-­t¬y¸gÐ/FÑ/FÔ/FÐGÑHÔHð
ñ ô ˆõ
 ŒL˜"˜b˜Ñ"Ô"ˆÝ˜QÑÔˆØ�zŠz‰|Œ|ˆØ×Ò�˜TŸ\š\Ð*?Ñ@Ô@ÑAÔAÀ1ÑEÔEÐEØ×Ò�˜TŸ\š\Ð*FÑGÔGÑHÔHÈ!ÑLÔLÐLØ×Ò˜ŸšÐ#8Ñ9Ô9×=Ò=¸dÑCÔCØŸšÐ#?Ñ@Ô@×DÒDÀTÑJÔJñ	Lô 	Lð 	Là×Ò˜DŸIšIÐ&;Ñ<Ô<×@Ò@ÀÑFÔFØ ŸLšLÐ)EÑFÔFÀrÔJ×NÒNÈtÑTÔTñ	Vô 	Vð 	Vð 	Vð 	Vr(   c           
     ó0  — t          j        t          j        t          j        ¦   «         t          j        d¬¦  «        g¦  «        t          j        t          j        ¦   «         t          j        d¬¦  «        g¦  «        t          j        t          j        ¦   «         t          j        d¬¦  «        g¦  «        g¦  «        }t          j        t          j        t          j	        ¦   «         t          j        d¬¦  «        g¦  «        t          j        t          j        d¬¦  «        g¦  «        t          j        t          j        d¬¦  «        g¦  «        g¦  «        }t          j        ||g¦  «        }t          j        |||g¦  «        }t          |¦  «        }|                     ¦   «         }|                      d„ |                     d¦  «        D ¦   «         h d£¦  «         |                      t#          |                     d¦  «        ¦  «        d¦  «         d S )Nr  r  c                ó   — h | ]	}|j         ’Œ
S rº   ©rš   )r¾   Úels     r&   ú	<setcomp>z4Test.testMultipleInstrumentsPiano.<locals>.<setcomp>ì  s   € ÐBÐBÐB˜ˆRŒWÐBÐBÐBr(   z.//instrument-name>   úElectric OrganúElectric PianoÚPianorj   r  rS   )r   r—   ri   r   ÚElectricPianor   rC   ÚElectricOrganr'  ÚVocalistr   r„   r?   r   r-   rF   r˜   r�   )r/   r¡   r¨   ÚsgrH   r  r±   s          r&   ÚtestMultipleInstrumentsPianoz!Test.testMultipleInstrumentsPianoÚ  sÃ  € ÝÔÝŒN�JÔ4Ñ6Ô6½¼	ÀwÐ8OÑ8OÔ8OÐPÑQÔQÝŒN�JÔ4Ñ6Ô6½¼	ÀwÐ8OÑ8OÔ8OÐPÑQÔQÝŒN�JÔ,Ñ.Ô.µ´	¸wÐ0GÑ0GÔ0GÐHÑIÔIð 
ñ ô ˆõ
 ÔÝŒN�JÔ/Ñ1Ô1µ4´9À'Ð3JÑ3JÔ3JÐKÑLÔLÝŒN�DœI¨7Ð3Ñ3Ô3Ð4Ñ5Ô5ÝŒN�DœI¨7Ð3Ñ3Ô3Ð4Ñ5Ô5ð 
ñ ô ˆõ
 Ô  S˜zÑ*Ô*ˆÝŒL˜#˜s B˜Ñ(Ô(ˆÝ˜QÑÔˆØ�zŠz‰|Œ|ˆà×ÒàBÐB˜tŸ|š|Ð,@ÑAÔAÐBÑBÔBØBÐBÐBñ	
ô 	
ð 	
ð
 	×Ò�˜TŸ\š\Ð*FÑGÔGÑHÔHÈ!ÑLÔLÐLÐLÐLr(   c                óª  — t          j        dd¬¦  «        }|                     t          j        d¬¦  «        ¦  «         t          j        |¦  «        }t          |¦  «        }|                     ¦   «         }|                     d¦  «        D ]G}|  	                    d|j
        v ¦  «         |                      |                     d¦  «        d¦  «         ŒHdS )	zo Check that id of measure are exported
            as attributes of the <measure> eelement in MusicXML
        ÚtestrN   )rŽ   r¶   r  r  r  rŽ   N)r   ri   rn   r   rC   r?   r   r-   r˜   Ú
assertTrueÚattribrF   rÊ   )r/   rr   rH   r  r±   Úmeasure_xmls         r&   ÚtestExportIdOfMeasurezTest.testExportIdOfMeasureñ  sÄ   € õ ”. F°1Ð5Ñ5Ô5ˆØ�Š•t”y gÐ.Ñ.Ô.Ñ/Ô/Ð/ÝŒL˜Ñ!Ô!ˆÝ˜QÑÔˆØ�zŠz‰|Œ|ˆàŸ<š<¨Ñ5Ô5ð 	<ð 	<ˆKØ�OŠO˜D KÔ$6Ð6Ñ7Ô7Ð7Ø×Ò˜[Ÿ_š_¨TÑ2Ô2°FÑ;Ô;Ð;Ð;ð	<ð 	<r(   c                ó  — t          j        ¦   «         }d|_        t          j        d¦  «        }|                     d¦  «                             |¦  «         t          j        |¦  «        }t          |¦  «        }|                     ¦   «         }| 
                    d¦  «        d         }| 
                    d¦  «        d         }|                      |                     d¦  «        |                     d¦  «        ¦  «         d S )Né*   ztinyNotation: c1rN   r  r   z.//midi-instrumentrŽ   )r   Ú
InstrumentÚmidiProgramr	   r-   rr   rB   r   r?   r   r˜   rF   rÊ   )r/   ÚirH   rù   r
  r±   ÚmxScoreInstrumentÚmxMidiInstruments           r&   ÚtestMidiInstrumentNoNamezTest.testMidiInstrumentNoNameÿ  sÚ   € ÝÔ!Ñ#Ô#ˆØˆŒÝŒOÐ.Ñ/Ô/ˆØ	�	Š	�!‰Œ×Ò˜AÑÔÐÝŒ\˜!‰_Œ_ˆÝ" 2Ñ&Ô&ˆ
à×ÒÑ!Ô!ˆØ ŸLšLÐ)>Ñ?Ô?ÀÔBÐØŸ<š<Ð(<Ñ=Ô=¸aÔ@ÐØ×ÒÐ*×.Ò.¨tÑ4Ô4Ð6F×6JÒ6JÈ4Ñ6PÔ6PÑQÔQÐQÐQÐQr(   c                óÚ   — t          j        t          j        ¦  «        }|                      |¦  «        }|                     d¦  «        }|                      d„ |D ¦   «         g d¢¦  «         d S )Nz.//ornaments/accidental-markc                ó   — g | ]	}|j         ‘Œ
S rº   r"  )r¾   ÚaccMarks     r&   rÀ   z0Test.testOrnamentAccidentals.<locals>.<listcomp>  s   € Ð9Ð9Ð9˜gˆWŒ\Ð9Ð9Ð9r(   )ÚnaturalÚsharpzthree-quarters-flat)r	   r-   r   Únotations32ar;   r˜   rF   )r/   rH   ÚxÚaccidentalMarkss       r&   ÚtestOrnamentAccidentalszTest.testOrnamentAccidentals  sq   € ÝŒO�MÔ6Ñ7Ô7ˆØ�JŠJ�q‰MŒMˆØŸ)š)Ð$BÑCÔCˆØ×ÒØ9Ð9¨Ð9Ñ9Ô9Ø7Ð7Ð7ñ	
ô 	
ð 	
ð 	
ð 	
r(   c                óà  — t          j        t          j        ¦  «        }|                      |¦  «        }|                     d¦  «        }|                      d„ |D ¦   «         g d¢¦  «         |                     ¦   «         }|                     d¬¦  «         |                      |¦  «        }|                     d¦  «        }|                      d„ |D ¦   «         g d¢¦  «         d|j	        d          
                    t          j        ¦  «                             ¦   «         _        |                      |¦  «        }|                     d¦  «        }|                      d„ |D ¦   «         g d	¢¦  «         d S )
Nú	.//endingc                ó8   — g | ]}|                      d ¦  «        ‘ŒS ©r¶   ©rÊ   ©r¾   rÇ   s     r&   rÀ   z3Test.testMultiDigitEndingsWrite.<locals>.<listcomp>  ó"   € Ð;Ð;Ð;¨a˜!Ÿ%š% ™/œ/Ð;Ð;Ð;r(   )ú1,2rK  Ú3rL  Tr~   c                ó8   — g | ]}|                      d ¦  «        ‘ŒS rG  rH  rI  s     r&   rÀ   z3Test.testMultiDigitEndingsWrite.<locals>.<listcomp>%  rJ  r(   r   c                ó8   — g | ]}|                      d ¦  «        ‘ŒS rG  rH  rI  s     r&   rÀ   z3Test.testMultiDigitEndingsWrite.<locals>.<listcomp>+  rJ  r(   )Ú rO  rL  rL  )r	   r-   r   ÚmultiDigitEndingr;   r˜   rF   Útemplater7   r…   ÚgetElementsByClassr   ÚRepeatBracketrÉ   r¶   )r/   rH   rA  ÚendingsrQ  s        r&   ÚtestMultiDigitEndingsWritezTest.testMultiDigitEndingsWrite  sW  € õ ŒO�MÔ:Ñ;Ô;ˆØ�JŠJ�q‰MŒMˆØ—)’)˜KÑ(Ô(ˆØ×ÒÐ;Ð;°7Ð;Ñ;Ô;Ð=UÐ=UÐ=UÑVÔVÐVð —:’:‘<”<ˆØ×Ò dÐÑ+Ô+Ð+Ø�JŠJ�xÑ Ô ˆØ—)’)˜KÑ(Ô(ˆØ×ÒÐ;Ð;°7Ð;Ñ;Ô;Ð=UÐ=UÐ=UÑVÔVÐVð OPˆŒ�Œ
×%Ò%¥gÔ&;Ñ<Ô<×BÒBÑDÔDÔKØ�JŠJ�q‰MŒMˆØ—)’)˜KÑ(Ô(ˆØ×ÒÐ;Ð;°7Ð;Ñ;Ô;Ð=OÐ=OÐ=OÑPÔPÐPÐPÐPr(   c           	     óî  — t          j        t          j        ¦  «        }|                      |¦  «        }|                     d¦  «        }|                      d„ |D ¦   «         g d¢¦  «         d d gdd gd d gd dgdd gd d gd dgd d gdœ}|                     d¦  «        }|                      t          |¦  «        d¦  «         |D �]³}|                     d	¦  «        }|  	                    |¬
¦  «        5  t          ||         d         d u¦  «        }t          ||         d         d u¦  «        }	d}
d}|                     d¦  «        }t          |¦  «        D ]Ü\  }}|                     d¦  «        dk    rSd}
d }|                     d¦  «        }|�|                     d¦  «        }|                      |||         d         ¦  «         Œq|                     d¦  «        dk    rRd}d }|                     d¦  «        }|�|                     d¦  «        }|                      |||         d         ¦  «         ŒÝ|r|                      |
¦  «         |	r|                      |¦  «         d d d ¦  «         n# 1 swxY w Y   �Œµd S )NrE  c                ó8   — g | ]}|                      d ¦  «        ‘ŒS rG  rH  rI  s     r&   rÀ   z5Test.testMultiMeasureEndingsWrite.<locals>.<listcomp>B  rJ  r(   )r·   r·   Ú2rX  ÚstartÚstop)r·   rX  rL  Ú4Ú5Ú6Ú7Ú8r  é   r¶   )ÚmeasureNumberr   rN   Fz
.//barlineÚlocationÚleftTÚendingr  Úright)r	   r-   r   ÚmultiMeasureEndingr;   r˜   rF   r�   rÊ   ÚsubTestÚboolÚ	enumerater™   r/  )r/   rH   rA  rT  ÚexpectedEndingsÚmeasuresrr   Ú
measNumberÚexpectLeftBarlineÚexpectRightBarlineÚgotLeftBarlineÚgotRightBarlineÚbarlinesr7  ÚbarlineÚleftEndingTypeÚ
leftEndingÚrightEndingTypeÚrightEndings                      r&   ÚtestMultiMeasureEndingsWritez!Test.testMultiMeasureEndingsWrite-  sê  € õ$ ŒO�MÔ<Ñ=Ô=ˆØ�JŠJ�q‰MŒMˆØ—)’)˜KÑ(Ô(ˆØ×ÒÐ;Ð;°7Ð;Ñ;Ô;Ð=QÐ=QÐ=QÑRÔRÐRð ˜�Ø˜4�Ø˜�Ø˜�Ø˜4�Ø˜�Ø˜�Ø˜�ð

ð 

ˆð —9’9˜\Ñ*Ô*ˆØ×Ò�˜X™œ¨Ñ*Ô*Ð*Øð 	5ñ 	5ˆGØ Ÿš XÑ.Ô.ˆJØ—’¨J�Ñ7Ô7ð 5ð 5Ý$(¨¸Ô)DÀQÔ)GÈtÐ)SÑ$TÔ$TÐ!Ý%)¨/¸*Ô*EÀaÔ*HÐPTÐ*TÑ%UÔ%UÐ"à!&�Ø"'�Ø"Ÿ?š?¨<Ñ8Ô8�Ý"+¨HÑ"5Ô"5ð Zð Z‘J�A�wØ—{’{ :Ñ.Ô.°&Ò8Ð8Ø)-˜Ø)-˜Ø%,§\¢\°(Ñ%;Ô%;˜
Ø%Ð1Ø-7¯^ª^¸FÑ-CÔ-C˜NØ×(Ò(¨¸ÈÔ9TÐUVÔ9WÑXÔXÐXÐXØ Ÿš ZÑ0Ô0°GÒ;Ð;Ø*.˜Ø*.˜Ø&-§l¢l°8Ñ&<Ô&<˜Ø&Ð2Ø.9¯oªo¸fÑ.EÔ.E˜OØ×(Ò(¨¸/È*Ô:UÐVWÔ:XÑYÔYÐYøà$ð 4Ø—O’O NÑ3Ô3Ð3Ø%ð 5Ø—O’O OÑ4Ô4Ð4ð55ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ùð	5ð 	5s   Ã.E.I(É(I,	É/I,	c                ó<  — t          j        d¦  «        }t          j        ¦   «         }d|_        t          j        ¦   «         }t          j        d¬¦  «        }d|_        | 	                    d¦  «         
                    |||g¦  «         |                      |¦  «        }|                     d¦  «        D ]*}|                      |                     d¦  «        ¦  «         Œ+|                     d	¦  «        }|                      |                     d
¦  «        d¦  «         dS )zL
        Transfer element offset after calling getTextExpression().
        ztinynotation: 4/4 c1FÚLangsamr"  ÚaboverN   z.//directionrõ   zpart/measure/directionré   N)r	   r-   r   ÚCodaÚ	useSymbolÚFiner   ÚMetronomeMarkré   rr   Ú
storeAtEndr;   r˜   rË   r™   rF   rÊ   )r/   rH   r[   r^   Úmmr±   Ú	directionÚmxDirections           r&   ÚtestTextExpressionOffsetzTest.testTextExpressionOffseto  sø   € õ
 ŒOÐ2Ñ3Ô3ˆÝŒK‰MŒMˆØˆŒÝŒK‰MŒMˆÝÔ  iÐ0Ñ0Ô0ˆØˆŒØ	�	Š	�!‰Œ×Ò  A r 
Ñ+Ô+Ð+à�zŠz˜!‰}Œ}ˆØŸš nÑ5Ô5ð 	8ð 	8ˆIØ×Ò˜iŸnšn¨XÑ6Ô6Ñ7Ô7Ð7Ð7ð —i’iÐ 8Ñ9Ô9ˆØ×Ò˜Ÿš¨Ñ5Ô5°wÑ?Ô?Ð?Ð?Ð?r(   c                ó  — t          j        d¦  «        }|t          j                                      ¦   «         }d|_        |                      |j        d¦  «         |                      |¦  «        }|                      t          | 
                    d¦  «        ¦  «        d¦  «         |                     d¦  «        }|                      |                     d¦  «        d¦  «         |                      |                     d¦  «        ¦  «         d S )	Nztinynotation: 9/8 r1g      @Úautoú.//restrN   rr   Úyesz.//note/type)r	   r-   r   ÚRestrÉ   r>   rF   ÚfullMeasurer;   r�   r˜   r™   rÊ   rË   )r/   rH   Úrr±   Úrests        r&   ÚtestFullMeasureRestzTest.testFullMeasureRest„  sÜ   € ÝŒOÐ2Ñ3Ô3ˆØ�dŒiŒL×ÒÑ Ô ˆØˆŒØ×Ò˜œ¨Ñ/Ô/Ð/Ø�zŠz˜!‰}Œ}ˆð 	×Ò�˜TŸ\š\¨)Ñ4Ô4Ñ5Ô5°qÑ9Ô9Ð9Ø�yŠy˜Ñ#Ô#ˆØ×Ò˜Ÿš )Ñ,Ô,¨eÑ4Ô4Ð4Ø×Ò˜$Ÿ)š) NÑ3Ô3Ñ4Ô4Ð4Ð4Ð4r(   c                ó<  — t          j        ¦   «         }t          j        ¦   «         }|j                             |¦  «         t          j        ¦   «         }|j                             |¦  «         |                      |j        d¦  «         t          |¦  «        }t          | 
                    ¦   «                              d¦  «        ¦  «        }|                      |                     d¦  «        ¦  «         |                      |                     d¦  «        ¦  «         d S )Nr   r,   z	.//stringz.//other-technical)r   rC   r   ÚStringIndicationrn   ÚHammerOnrF   r¶   r   r  r-   r.   rË   r™   )r/   rt   r`   Úhr1   r±   s         r&   ÚtestArticulationSpecialCasesz!Test.testArticulationSpecialCases‘  sè   € ÝŒI‰KŒKˆÝÔ*Ñ,Ô,ˆØ	Œ×Ò˜qÑ!Ô!Ð!ÝÔ"Ñ$Ô$ˆð 	
Œ×Ò˜qÑ!Ô!Ð!ð 	×Ò˜œ 1Ñ%Ô%Ð%å# AÑ&Ô&ˆÝ˜SŸYšY™[œ[×/Ò/°Ñ8Ô8Ñ9Ô9ˆØ×Ò˜$Ÿ)š) KÑ0Ô0Ñ1Ô1Ð1Ø×Ò˜$Ÿ)š)Ð$8Ñ9Ô9Ñ:Ô:Ð:Ð:Ð:r(   c                óú  — t          j        t          j        d¦  «        g¦  «        }d|t           j                                      ¦   «         _        d|t           j                                      ¦   «         _        t          ¦   «          	                    |¦  «        }|  
                    |¦  «        }|                      t          |                     d¦  «        ¦  «        d¦  «         d|t           j                                      ¦   «         _        t          ¦   «          	                    |¦  «        }|  
                    |¦  «        }|                      t          |                     d¦  «        ¦  «        d¦  «         d S )NztinyNotation: 4/4 c4ç       @g      ð?r†  r   rN   )r   r?   r	   r-   ri   rÉ   ÚpaddingLeftÚpaddingRightr   r6   r;   rF   r�   r˜   )r/   rH   r±   s      r&   ÚtestMeasurePaddingzTest.testMeasurePadding¥  s  € ÝŒL�)œ/Ð*@ÑAÔAÐBÑCÔCˆØ03ˆ�&Œ.Ô×ÒÑ!Ô!Ô-Ø14ˆ�&Œ.Ô×ÒÑ!Ô!Ô.å!Ñ#Ô#×5Ò5°aÑ8Ô8ˆØ�zŠz˜!‰}Œ}ˆØ×Ò�˜TŸ\š\¨)Ñ4Ô4Ñ5Ô5°qÑ9Ô9Ð9Ø03ˆ�&Œ.Ô×ÒÑ!Ô!Ô-å!Ñ#Ô#×5Ò5°aÑ8Ô8ˆØ�zŠz˜!‰}Œ}ˆØ×Ò�˜TŸ\š\¨)Ñ4Ô4Ñ5Ô5°qÑ9Ô9Ð9Ð9Ð9r(   c                ó�  — t          j        d¦  «        j        d         }t          j        d¦  «        |                     d¦  «        _        |                     ¦   «                              t          j        ¦  «         	                    ¦   «         }| 
                    dt          j        d¦  «        ¦  «         |                     d¬¦  «         |                     ¦   «         }|                      |¦  «        }|                      |                     d	¦  «        ¦  «         |                      |                     d
¦  «        ¦  «         dS )af  
        Instrument tags were causing forward motion in some cases.
        From Chapter 14, Key Signatures

        This is a transposed score.  Instruments were being extended in duration
        in the toSoundingPitch and not having their durations restored afterwards
        leading to Instrument objects being split if the duration was complex
        zbach/bwv57.8z#Altoz6/8é   r   z2/4Tr~   z.//noterÿ   N)r
   r-   r…   r   r   rr   ÚtimeSignatureÚflattenÚgetElementsNotOfClassr   rB   ÚmakeMeasuresr7   r;   r/  r˜   ÚassertFalse)r/   ÚaltoÚnewAltoÚnewAltoFixedr±   s        r&   Ú#test_instrumentDoesNotCreateForwardz(Test.test_instrumentDoesNotCreateForward³  sþ   € õ Œ|˜NÑ+Ô+Ô1°'Ô:ˆÝ(-Ô(;¸EÑ(BÔ(Bˆ�Š�Q‰ŒÔ%Ø—,’,‘.”.×6Ò6µuÔ7JÑKÔK×RÒRÑTÔTˆØ�Š�q�%Ô-¨eÑ4Ô4Ñ5Ô5Ð5Ø×Ò TÐÑ*Ô*Ð*Ø×+Ò+Ñ-Ô-ˆØ�zŠz˜,Ñ'Ô'ˆØ�Š˜Ÿš YÑ/Ô/Ñ0Ô0Ð0Ø×Ò˜Ÿš lÑ3Ô3Ñ4Ô4Ð4Ð4Ð4r(   c                óÚ  — t          j        ¦   «         }|                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         t          j        ¦   «         }t          j        ¦   «         }t          j        ¦   «         }| 	                    d|¦  «         | 	                    d|¦  «         | 
                    ||¦  «         |                     |¦  «         t          j        ¦   «         }|                     |¦  «         t          j        ¦   «         }|                     |¦  «         |                      |¦  «        }d}d}	|                     ¦   «         D ]7}
|
j        dk    r*|
}|                     ¦   «         D ]}
|
j        dk    r|
}	 nŒ nŒ8|                      |¦  «         |                      |	¦  «         t#          |	j        ¦  «        }d}|                     d¦  «        D ]Ž}
|
                     d¦  «        }|�ut#          |j        ¦  «        }t+          j        t/          j        ||¦  «        ¦  «        }|
j        d	k    rt+          j        ||z
  ¦  «        }Œwt+          j        ||z   ¦  «        }Œ�|                      |d
¦  «         dS )zö
        Write to MusicXML from a Measure containing SpannerAnchors was not positioning
        the current time offset correctly before starting the next written measure.
        Now the next measure is positioned at the correct offset.
        g      à?g      ø?Nrr   Ú	divisionsrO   Ú*r   Úbackupg      @)r   ri   rn   r   rC   r   rl   r   rk   rB   ÚaddSpannedElementsr@   r?   r;   Úiterr¼   r	  Úintrš   r˜   r™   r   ÚopFracÚ	fractionsÚFractionrF   )r/   Úm1rw   ÚstartAnchorÚ	endAnchorrI   rH   r±   ÚmeasElÚdivisionsElr#  ÚdivisionsIntÚcurrOffsetQLÚdurÚdurIntÚdurQLs                   r&   Ú5test_writeFromSpannerAnchorsGetsMeasureEndOffsetRightz:Test.test_writeFromSpannerAnchorsGetsMeasureEndOffsetRightÆ  s‘  € õ Œ^ÑÔˆØ
�	Š	•$”)‘+”+ÑÔÐØ
�	Š	•$”)‘+”+ÑÔÐØ
�	Š	•$”)‘+”+ÑÔÐØ
�	Š	•$”)‘+”+ÑÔÐÝÔ"Ñ$Ô$ˆÝÔ+Ñ-Ô-ˆÝÔ)Ñ+Ô+ˆ	Ø
�	Š	�#�{Ñ#Ô#Ð#Ø
�	Š	�#�yÑ!Ô!Ð!Ø× Ò  ¨iÑ8Ô8Ð8Ø
�	Š	�%ÑÔÐÝŒK‰MŒMˆØ	�Š�‰ŒˆÝŒL‰NŒNˆØ	�Š�‰Œˆà�zŠz˜!‰}Œ}ˆð ˆØˆØ—)’)‘+”+ð 	ð 	ˆBØŒv˜Ò"Ð"Ø�Ø Ÿ+š+™-œ-ð ð �BØ”v Ò,Ð,Ø&(˜Ø˜ð -ð �ð #ð 	×Ò˜VÑ$Ô$Ð$Ø×Ò˜[Ñ)Ô)Ð)å˜;Ô+Ñ,Ô,ˆØˆØ—.’. Ñ%Ô%ð 	Gð 	GˆBØ—'’'˜*Ñ%Ô%ˆCØˆÝ˜SœX™œ�Ýœ¥iÔ&8¸ÀÑ&NÔ&NÑOÔO�Ø”6˜XÒ%Ð%Ý#)¤=°ÀÑ1EÑ#FÔ#F�L�Lå#)¤=°ÀÑ1EÑ#FÔ#F�LøØ×Ò˜ sÑ+Ô+Ð+Ð+Ð+r(   c                ó€  — t          j        ¦   «         }|                     t          j        d¦  «        ¦  «         |                     t          j        ¦   «         ¦  «         |                     dt          j	        dd¦  «        ¦  «         t          j
        |g¦  «        }t          j        |g¦  «        }|                      |d¬¦  «        }|                      |                     d¦  «        ¦  «         |                      t!          |                     d¦  «        d	         j        ¦  «        t$          j        ¦  «         d
S )zš
        A metronome mark at an offset exceeding the bar duration was causing
        <forward> tags, i.e. hidden rests. Prefer <offset> instead.
        rþ   rh   Úslowé(   Fr•   rÿ   z.//direction/offsetr   N)r   ri   rn   r   r   r   rˆ  rB   r   r~  r@   r?   r;   r�  r˜   rF   r¨  rš   r   ÚdivisionsPerQuarter)r/   r�   rI   rH   r±   s        r&   Ú-testOutOfBoundsExpressionDoesNotCreateForwardz2Test.testOutOfBoundsExpressionDoesNotCreateForwardü  s  € õ
 ŒNÑÔˆØ	�Š•Ô$ UÑ+Ô+Ñ,Ô,Ð,Ø	�Š•”‘”ÑÔÐØ	�Š�•EÔ'¨°Ñ3Ô3Ñ4Ô4Ð4ÝŒK˜˜ÑÔˆÝŒL˜!˜ÑÔˆà�zŠz˜!¨%ˆzÑ0Ô0ˆØ×Ò˜Ÿš lÑ3Ô3Ñ4Ô4Ð4Ø×ÒÝ�—’Ð2Ñ3Ô3°AÔ6Ô;Ñ<Ô<ÝÔ(ñ	*ô 	*ð 	*ð 	*ð 	*r(   c           
     ó"  — ddddœdddœdddœdddœdddœd	dddœf}t          j        t          j        ¦  «        }|                      |¦  «        }|                     d
¦  «        }t          |                     d¦  «        ¦  «        D ]u\  }}|                      |¬¦  «        5  ||         D ]8}|  	                    | 
                    |d¦  «        ||         |         ¦  «         Œ9	 d d d ¦  «         n# 1 swxY w Y   Œvt          |¦  «        }ddddœdddœdddœdddœdddœdddœd	dddœf}	t          j        t          j        ¦  «        }|                      |¦  «        }|                     d
¦  «        }t          |                     d¦  «        ¦  «        D ]x\  }}|                      ||z   ¬¦  «        5  |	|         D ]8}|  	                    | 
                    |d¦  «        |	|         |         ¦  «         Œ9	 d d d ¦  «         n# 1 swxY w Y   Œyd S )NrY  r‡  r·   )r  Úliner¶   Úchange)r  r½  ÚdiscontinueÚresumerZ  rq   z.//pedal)Úpedal_indexrO  )r  Úsignr¶   )r	   r-   r   Ú
pedalLinesr;   r™   ri  r˜   rg  rF   rÊ   r�   ÚpedalSymLines)
r/   ÚexpectedResults1rH   rA  ÚmxPartr7  ÚmxPedalÚkÚstartIdxÚexpectedResults2s
             r&   Ú
testPedalszTest.testPedals  sq  € ð  ØØðð ð !Øðð ð
 &Øðð ð
 !Øðð ð
 !Øðð ð
 ØØðð ð-
Ðõ8 ŒO�MÔ4Ñ5Ô5ˆØ�JŠJ�q‰MŒMˆØ—’˜‘”ˆÝ# F§N¢N°:Ñ$>Ô$>Ñ?Ô?ð 	Qð 	Q‰JˆAˆwØ—’¨!�Ñ,Ô,ð Qð QØ)¨!Ô,ð Qð Q�AØ×$Ò$ W§[¢[°°BÑ%7Ô%7Ð9IÈ!Ô9LÈQÔ9OÑPÔPÐPÐPðQðQð Qð Qñ Qô Qð Qð Qð Qð Qð Qð Qøøøð Qð Qð Qð Qøõ Ð'Ñ(Ô(ˆð  ØØðð ð !Øðð ð
 !Øðð ð
 &Øðð ð
 !Øðð ð
 !Øðð ð
 ØØðð ð5
ÐõB ŒO�MÔ7Ñ8Ô8ˆØ�JŠJ�q‰MŒMˆØ—’˜‘”ˆÝ# F§N¢N°:Ñ$>Ô$>Ñ?Ô?ð 	Qð 	Q‰JˆAˆwØ—’¨(°Q©,�Ñ7Ô7ð Qð QØ)¨!Ô,ð Qð Q�AØ×$Ò$ W§[¢[°°BÑ%7Ô%7Ð9IÈ!Ô9LÈQÔ9OÑPÔPÐPÐPðQðQð Qð Qñ Qô Qð Qð Qð Qð Qð Qð Qøøøð Qð Qð Qð Qøð	Qð 	Qs&   Â"AC1Ã1C5	Ã8C5	Æ4AHÈH	È
H	c                óÒ  — d}t          j        t          j        ¦  «        }|                      |¦  «        }|                     d¦  «        }|                     d¦  «        }t          |                     d¦  «        ¦  «        D �]ã\  }}|                      |¬¦  «        5  d }d }	|                     d¦  «        }
|
�*|
                     d¦  «        }|
                     d¦  «        }	||          	                    d¦  «        rm|  
                    |¦  «         |                     d	¦  «        }d
D ]3}||                              |¦  «        r|                      ||¦  «         Œ4	 d d d ¦  «         Œê||          	                    d¦  «        r�|  
                    |	¦  «         |	                     d¦  «        }||         dk    r#|                      |¦  «         	 d d d ¦  «         �Œ^dD ]3}||                              |¦  «        r|                      ||¦  «         Œ4	 d d d ¦  «         �Œ¢|                      |	¦  «         |                      |¦  «         d d d ¦  «         n# 1 swxY w Y   �Œåd S )N)Ú
arpeggiaterÍ  rÍ  úarpeggiate uprÎ  rÎ  rÍ  rÍ  rÍ  úarpeggiate downrÏ  rÏ  rÍ  rÍ  rÍ  znon-arpeggiate bottomrO  znon-arpeggiate toprÍ  rÍ  rÍ  rq   rr   r   ©Ú
note_indexÚ	notationsúnon-arpeggiaterÍ  r  )ÚtopÚbottomr�  )ÚupÚdown)r	   r-   r   Úarpeggio32dr;   r™   ri  r˜   rg  Ú
startswithr	  rÊ   ÚendswithrF   rË   )r/   ÚexpectedResultsrH   rA  rÆ  Ú	mxMeasurer7  r³   ÚnonArpÚarprÒ  Ú
nonArpTypeÚwhichEndÚarpDirectionr�  s                  r&   ÚtestArpeggioszTest.testArpeggios^  sú  € ð
ˆõ. ŒO�MÔ5Ñ6Ô6ˆØ�JŠJ�q‰MŒMˆà—’˜‘”ˆØ—K’K 	Ñ*Ô*ˆ	Ý" 9×#4Ò#4°VÑ#<Ô#<Ñ=Ô=ð 	*ñ 	*‰IˆAˆvØ—’¨�Ñ+Ô+ð *ð *Ø�Ø�Ø"ŸKšK¨Ñ4Ô4�	ØÐ(Ø&Ÿ^š^Ð,<Ñ=Ô=�FØ#Ÿ.š.¨Ñ6Ô6�CØ" 1Ô%×0Ò0Ð1AÑBÔBð Ø×(Ò(¨Ñ0Ô0Ð0Ø!'§¢¨FÑ!3Ô!3�JØ$5ð Cð C˜Ø*¨1Ô-×6Ò6°xÑ@Ô@ð CØ ×,Ò,¨Z¸ÑBÔBÐBøØð*ð *ð *ñ *ô *ð *ð *ð # 1Ô%×0Ò0°Ñ>Ô>ð 	Ø×(Ò(¨Ñ-Ô-Ð-Ø#&§7¢7¨;Ñ#7Ô#7�LØ& qÔ)¨\Ò9Ð9Ø×)Ò)¨,Ñ7Ô7Ð7Ø ð'*ð *ð *ñ *ô *ð *ñ *ð( &4ð Fð F˜	Ø*¨1Ô-×6Ò6°yÑAÔAð FØ ×,Ò,¨\¸9ÑEÔEÐEøØð/*ð *ð *ñ *ô *ð *ñ *ð0 ×!Ò! #Ñ&Ô&Ð&Ø×!Ò! &Ñ)Ô)Ð)ð3*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ùð	*ð 	*s&   ÂCIÅ,A'IÇ 7IÈ$*IÉI	É!I	c                ó6  — d}t          j        t          j        ¦  «        }|                      |¦  «        }|                     d¦  «        }|                     d¦  «        }t          |                     d¦  «        ¦  «        D ]–\  }}|                      |¬¦  «        5  d }d }	|                     d¦  «        }
|
�|
                     d¦  «        }|�| 	                    d¦  «        }	|  
                    |	||         ¦  «         d d d ¦  «         n# 1 swxY w Y   Œ—d S )	N)NNNr·   r·   r·   NNNr·   r·   r·   rq   rr   r   rÐ  rÒ  rÍ  r¶   )r	   r-   r   ÚmultiStaffArpeggiosr;   r™   ri  r˜   rg  rÊ   rF   )r/   ÚexpectedNumberrH   rA  rÆ  rÜ  rÑ  r³   rÞ  ÚarpNumrÒ  s              r&   ÚtestArpeggioMarkSpannerszTest.testArpeggioMarkSpanners—  sb  € ð
ˆõ( ŒO�MÔ=Ñ>Ô>ˆØ�JŠJ�q‰MŒMˆØ—’˜‘”ˆØ—K’K 	Ñ*Ô*ˆ	Ý"+¨I×,=Ò,=¸fÑ,EÔ,EÑ"FÔ"Fð 		Eð 		EÑˆJ˜Ø—’¨�Ñ4Ô4ð Eð EØ�Ø�Ø"ŸKšK¨Ñ4Ô4�	ØÐ(Ø#Ÿ.š.¨Ñ6Ô6�CØ�?Ø ŸWšW XÑ.Ô.�FØ× Ò  ¨¸
Ô)CÑDÔDÐDðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eøð		Eð 		Es   ÂA$DÄD	ÄD	c                óv  — t          j        g d¢¦  «        }t          j        d¦  «        }t	          j        ||gd¬¦  «        }t          j        ¦   «         }|                     |¦  «         t          j	        |g¦  «        }t          j        ¦   «         }|                     |¦  «         t          j	        |g¦  «        }t          j        ||g¦  «        }t          j        ||||g¦  «        }	|                      |	¦  «        }
|
                     d¦  «        }|                     d¦  «        }t          |                     d¦  «        ¦  «        D ]ì\  }}|                      |¬¦  «        5  d }d	}|                     d
¦  «        }|�T|                     d¦  «        }|dv r|�|                      d|›d�¦  «         |dv r|€|                      d|›d�¦  «         n|dv r|                      d|›d�¦  «         |�+|                     d¦  «        }|                      |d¦  «         d d d ¦  «         n# 1 swxY w Y   Œíd S )N)ÚC3ÚE3ÚG3ÚD4znon-arpeggio)ÚarpeggioTyperq   rr   r   rÐ  rT   rÒ  rÓ  )rN   rh   znote_index=z should not have non-arpeggiate)r   rP   z should have non-arpeggiatez should have notationsr¶   r·   )r   ÚChordr   rC   r   ÚArpeggioMarkSpannerr   ri   rn   r—   r   r„   r?   r;   r™   ri  r˜   rg  ÚfailrÊ   rF   )r/   Úc1r‘   Úamr¬  r  Úm2r  ÚslrH   rA  rÆ  rÜ  rÑ  r³   rÞ  ræ  rÒ  s                     r&   Ú%testArpeggioMarkSpannersNonArpeggiatez*Test.testArpeggioMarkSpannersNonArpeggiate»  sv  € ÝŒ[Ð+Ð+Ð+Ñ,Ô,ˆÝŒY�t‰_Œ_ˆÝÔ,¨b°"¨XÀNÐSÑSÔSˆÝŒ^ÑÔˆØ
�	Š	�"‰ŒˆÝÔ˜r˜dÑ#Ô#ˆåŒ^ÑÔˆØ
�	Š	�"‰ŒˆÝÔ˜r˜dÑ#Ô#ˆåÔ  B˜xÑ(Ô(ˆåŒL˜"˜b " bÐ)Ñ*Ô*ˆØ�JŠJ�q‰MŒMˆà—’˜‘”ˆØ—K’K 	Ñ*Ô*ˆ	Ý"+¨I×,=Ò,=¸fÑ,EÔ,EÑ"FÔ"Fð 	2ð 	2ÑˆJ˜Ø—’¨�Ñ4Ô4ð 2ð 2Ø�Ø�Ø"ŸKšK¨Ñ4Ô4�	ØÐ(Ø#Ÿ.š.Ð)9Ñ:Ô:�CØ! VÐ+Ð+°°ØŸ	š	Ð"Q ZÐ"QÐ"QÐ"QÑRÔRÐRØ! VÐ+Ð+°°ØŸ	š	Ð"M ZÐ"MÐ"MÐ"MÑNÔNÐNøØ 6Ð)Ð)Ø—I’IÐD ÐDÐDÐDÑEÔEÐEà�?Ø ŸWšW XÑ.Ô.�FØ×$Ò$ V¨SÑ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2øð	2ð 	2s   Å'B:H-È-H1	È4H1	c                ó  ‡ — ddˆ fd„}t          j        d¦  «        }t          j        d¦  «        }t          j        ¦   «         }|                     d|¦  «         |                     d|¦  «          ||d	d¬
¦  «         t          j        d¬¦  «        }|                     d|¦  «          ||dd¬
¦  «         |                     |¦  «         |                     |¦  «          ||d	d¬
¦  «         t          j        d¬¦  «        }|                     d|¦  «          ||dd	¬
¦  «         |                     |¦  «         |                     d|¦  «          ||dd¬
¦  «         d	|_	        d|_
        d|_         ||dd¬
¦  «         d S )NFr€  ústream.Measurec                ó²  •— t          j        | ¦  «        } t          j        | ¦  «         t	          j        | g¦  «        }t	          j        |g¦  «        }‰                     |d¬¦  «        }‰                     t          | 
                    d¦  «        ¦  «        |¦  «         ‰                     t          | 
                    d¦  «        ¦  «        |¦  «         d S )NFr•   rÿ   z	.//offset)ÚcopyÚdeepcopyr   ÚrealizeChordSymbolDurationsr   r@   r?   r;   ÚassertIsrh  r˜   )r€  Ú
forwardTagÚ	offsetTagrI   rH   r±   r/   s         €r&   ÚrealizeDurationsAndAssertTagszWTest.testExportChordSymbolsWithRealizedDurations.<locals>.realizeDurationsAndAssertTagsã  s°   ø€ Ý”˜rÑ"Ô"ˆBÝÔ/°Ñ3Ô3Ð3Ý”˜R˜DÑ!Ô!ˆAÝ”˜a˜SÑ!Ô!ˆAØ—:’:˜a¨e�:Ñ4Ô4ˆDØ�MŠM�$˜tŸ|š|¨LÑ9Ô9Ñ:Ô:¸JÑGÔGÐGØ�MŠM�$˜tŸ|š|¨KÑ8Ô8Ñ9Ô9¸9ÑEÔEÐEÐEÐEr(   ÚC7ÚF7r   rh   T)rý  rþ  Úhalfr  r  )FF)r€  r÷  )r   rÝ   r   ri   rB   r   rˆ  ÚremoverC   ÚwriteAsChordrõ   r>   )r/   rÿ  Úcs1rë   r�   Úr1rÍ   s   `      r&   Ú+testExportChordSymbolsWithRealizedDurationsz0Test.testExportChordSymbolsWithRealizedDurationsá  sÂ  ø€ ð	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fõ Ô! $Ñ'Ô'ˆÝÔ! $Ñ'Ô'ˆÝŒNÑÔˆØ	�Š��CÑÔÐØ	�Š��CÑÔÐØ%Ð% a°DÀEÐJÑJÔJÐJõ ŒY˜FÐ#Ñ#Ô#ˆØ	�Š��B‰ŒˆØ%Ð% a°EÀUÐKÑKÔKÐKð 	
�Š�‰ŒˆØ	�Š�‰ŒˆØ%Ð% a°DÀEÐJÑJÔJÐJõ ŒY˜GÐ$Ñ$Ô$ˆØ	�Š��B‰Œˆà%Ð% a°EÀTÐJÑJÔJÐJð 	
�Š�‰ŒˆØ	�Š��CÑÔÐØ%Ð% a°EÀUÐKÑKÔKÐKð  ˆÔØˆŒ	ØˆÔØ%Ð% a°EÀUÐKÑKÔKÐKÐKÐKr(   c                ó\  — t          j        ¦   «         }t          j        d¬¦  «        }t	          j        ddd¦  «        }|j                             |¦  «         d|j        _        t          j	        dd¦  «        |_
        |                     |d¦  «         |                     |dg¦  «         |                     |d	¦  «         |                     d
t          j        d¦  «        ¦  «         |                     dddd¬¦  «         |                      |t          j                                      ¦   «         j
        d¦  «         t)          ¦   «         }|                      |                     |¦  «        ¦  «        }|                      t1          |                     d¦  «        ¦  «        d¦  «         dS )zV
        Express hidden rests with inexpressible durations as <forward> tags.
        Úeighthr  r˜  rQ   Fé‰   ià  r“  rS   r   z4/4T)r   ÚfillGapsÚ	hideRestsÚtimeRangeFromBarDurationg{®Gázd?rÿ   rN   N)r   ri   r   rC   r   ÚTupletÚappendTupletÚlinkedrª  r«  r>   rð   ÚrepeatInsertrB   r   r   Ú	makeRestsÚ
assertLessrˆ  rÉ   r   r;   r6   rF   r�   r˜   )r/   r�   Ú	septupletÚ
tuplet_objr1   r±   s         r&   Ú3test_inexpressible_hidden_rests_become_forward_tagsz8Test.test_inexpressible_hidden_rests_become_forward_tags  sl  € õ ŒNÑÔˆõ ”I 8Ð,Ñ,Ô,ˆ	Ý”_ Q¨¨8Ñ4Ô4ˆ
ØÔ×'Ò'¨
Ñ3Ô3Ð3Ø$)ˆ	ÔÔ!Ý"+Ô"4°S¸#Ñ">Ô">ˆ	ÔØ	�Š�y !Ñ$Ô$Ð$à	�Š�y 3 %Ñ(Ô(Ð(Ø	�Š�y !Ñ$Ô$Ð$Ø	�Š�•EÔ'¨Ñ.Ô.Ñ/Ô/Ð/Ø	�Š˜D¨4¸4ÐZ^ˆÑ_Ô_Ð_Ø�Š˜�$œ)œ×*Ò*Ñ,Ô,Ô:¸FÑCÔCÐCÝ#Ñ%Ô%ˆØ�zŠz˜#×/Ò/°Ñ2Ô2Ñ3Ô3ˆð 	×Ò�˜TŸ\š\¨,Ñ7Ô7Ñ8Ô8¸!Ñ<Ô<Ð<Ð<Ð<r(   c                ó4  — ddl m}  |dd¦  «        }d|j        _         |dd¦  «        }d|j        _        t	          j        ¦   «         }|                     d|¦  «         |                     d|¦  «         |                      |j        ¦  «         t          ¦   «          
                    |¦  «                             d	¦  «        }|                      d
|¦  «         |                      d|¦  «         d|_        d|_        t          ¦   «          
                    |¦  «                             d	¦  «        }|                      d|¦  «         |                      d
|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         d|j        _        d|j        _        t          ¦   «          
                    |¦  «                             d	¦  «        }|                      d|¦  «         |                      d
|¦  «         d S )Nr   )ÚRomanNumeralÚIrg   r  ÚVrO   r“  r,   z	<forward>z<chordFz<numeralz<offsetz<rest)Úmusic21.romanr  r   r  r   ri   rB   r/  r  r   r-   r.   r�   ro   r>   )r/   r  Úrn1Úrn2r�   ry   s         r&   Útest_roman_musicxml_two_kindsz"Test.test_roman_musicxml_two_kinds*  sõ  € Ø.Ð.Ð.Ð.Ð.Ð.ð ˆl˜3 Ñ$Ô$ˆØ"ˆŒÔØˆl˜3 Ñ$Ô$ˆØ"ˆŒÔåŒNÑÔˆØ	�Š��cÑÔÐØ	�Š��cÑÔÐð 	�Š˜Ô(Ñ)Ô)Ð)Ý&Ñ(Ô(×.Ò.¨qÑ1Ô1×8Ò8¸ÑAÔAˆØ×Ò˜ fÑ-Ô-Ð-Ø�Š�h Ñ'Ô'Ð'à ˆÔØ ˆÔÝ&Ñ(Ô(×.Ò.¨qÑ1Ô1×8Ò8¸ÑAÔAˆØ�Š�j &Ñ)Ô)Ð)Ø�Š�k 6Ñ*Ô*Ð*Ø×Ò˜ 6Ñ*Ô*Ð*Ø×Ò˜ FÑ+Ô+Ð+Ø×Ò˜ &Ñ)Ô)Ð)à%(ˆŒÔ"Ø%(ˆŒÔ"Ý&Ñ(Ô(×.Ò.¨qÑ1Ô1×8Ò8¸ÑAÔAˆØ�Š�g˜vÑ&Ô&Ð&Ø×Ò˜ fÑ-Ô-Ð-Ð-Ð-r(   c                ót  — t          j        d¦  «        }|                     ¦   «         j                             ¦   «         }t          j        ¦   «         |j        _        d|j        j        _        t          ¦   «                              |¦  «         
                    d¦  «        }|                      d|¦  «         d S )NztinyNotation: 2/4 c2Úredr,   z<stem color="#FF0000">up</stem>)r	   r-   rV   rW   rÉ   r   ÚStyleÚ	stemStyleÚcolorr   r.   ro   )r/   Úone_note_tuneÚ	half_notery   s       r&   Ú!test_stem_style_without_directionz&Test.test_stem_style_without_directionL  s‘   € Ý!œÐ(>Ñ?Ô?ˆØ!×)Ò)Ñ+Ô+Ô1×7Ò7Ñ9Ô9ˆ	Ý$)¤K¡M¤Mˆ	ŒÔ!Ø*/ˆ	ŒÔ!Ô'Ý&Ñ(Ô(×.Ò.¨}Ñ=Ô=×DÒDÀWÑMÔMˆØ�ŠÐ7¸Ñ@Ô@Ð@Ð@Ð@r(   N)T))Ú__name__Ú
__module__Ú__qualname__r4   r;   rL   re   rz   r‰   r“   r´   rÓ   ræ   rî   rò   rü   r  r  r  r  r,  r2  r:  rC  rU  rw  rƒ  rŒ  r‘  r–  r¡  r¶  r»  rË  râ  rç  rõ  r  r  r  r&  rº   r(   r&   r*   r*   1   s’  € € € € € ðð ð ðð ð ð ð4ð 4ð 4ð<ð <ð <ð(B
ð B
ð B
ðJ$
ð $
ð $
ðL6ð 6ð 6ð*$5ð $5ð $5ðL%;ð %;ð %;ðNBð Bð Bð8
7ð 
7ð 
7ð$Wð $Wð $WðLGð Gð GðAð Að Að*6ð 6ð 6ð9ð 9ð 9ð*Vð Vð Vð:Mð Mð Mð.<ð <ð <ðRð Rð Rð
ð 
ð 
ðQð Qð Qð0@5ð @5ð @5ðD@ð @ð @ð*5ð 5ð 5ð;ð ;ð ;ð(:ð :ð :ð5ð 5ð 5ð&4,ð 4,ð 4,ðl*ð *ð *ð$NQð NQð NQð`7*ð 7*ð 7*ðr"Eð "Eð "EðH#2ð #2ð #2ðL-Lð -Lð -Lð^=ð =ð =ð4 .ð  .ð  .ðDAð Að Að Að Ar(   r*   c                  ó   — e Zd ZdZd„ ZdS )ÚTestExternalTc                óN  — t          j        d¦  «        }t          |¦  «        }|                     ¦   «         }t          j        |¦  «         t          j        ¦   «         }|                     |                     ¦   «         ¦  «         t          |¦  «        }|                     |dd¬¦  «         | 
                    ¦   «         }|                     ¦   «          |                     d¦  «        }|                     d¦  «        }| j        rt          |¦  «         t          j        |d¬¦  «        5 }|                     ¦   «         }	d d d ¦  «         n# 1 swxY w Y   t#          t%          j        |                     ¦   «         |	                     ¦   «         ¦  «        ¦  «        }
t+          |
¦  «        D ]_\  }}|                     d¦  «        s*|                     d¦  «        s|                     d	¦  «        rd
|v rŒI| j        rt          |¦  «         Œ`dd l}|                     |¦  «         d S )NÚcpebachr,   F)ÚencodingÚxml_declarationr|   )r.  ú-ú?ú+zid=r   )r
   r-   r   r   r8   ÚioÚBytesIOrE   Ú	xmlHeaderr   ÚgetvalueÚcloser.   ÚshowÚprintÚopenÚreadrU   ÚdifflibÚndiffÚ
splitlinesri  rÙ  Úosr  )r/   rÄ   r9   r:   Úsiorà   ÚvrÌ   r^   r’   Údifferr7  r½  r?  s                 r&   Ú
testSimplezTestExternal.testSimpleX  s  € õ ŒL˜Ñ#Ô#ˆõ ˜1ÑÔˆØ—(’(‘*”*ˆåŒ�wÑÔÐåŒj‰lŒlˆà�	Š	�"—,’,‘.”.Ñ!Ô!Ð!å˜Ñ!Ô!ˆØ
�Š�˜w¸ˆÑ>Ô>Ð>Ø�LŠL‰NŒNˆØ�	Š	‰Œˆà�HŠH�WÑÔˆð �WŠW�ZÑ Ô ˆØŒ9ð 	Ý�"‰IŒIˆIåŒW�R 'Ð*Ñ*Ô*ð 	¨aØ—’‘”ˆBð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	å•g”m A§L¢L¡N¤N°B·M²M±O´OÑDÔDÑEÔEˆÝ  Ñ(Ô(ð 	 ð 	 ‰GˆAˆtØ�Š˜sÑ#Ô#ð   t§¢°sÑ';Ô';ð  ¸t¿ºÈsÑ?SÔ?Sð  Ø˜D�=�=ØØ”9ð  Ý˜$‘K”K�Køð 	ˆ	ˆ	ˆ	Ø
�	Š	�"‰Œˆˆˆs   Ä+EÅEÅEN)r'  r(  r)  r8  rC  rº   r(   r&   r+  r+  U  s(   € € € € € Ø€Dð,ð ,ð ,ð ,ð ,r(   r+  Ú__main__)r    r!   )0Ú
__future__r   rù  r<  rª  r3  r$   ÚunittestÚxml.etree.ElementTreer   r   r  Úmusic21r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úmusic21.musicxmlr   r   Úmusic21.musicxml.m21ToXmlr   r   r   r   Úmusic21.musicxml.xmlToM21r   r'   ÚTestCaser*   r+  r'  ÚmainTestrº   r(   r&   ú<module>rN     sû  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø €€€ðð ð ð ð ð ð ð ð "Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à $Ð $Ð $Ð $Ð $Ð $Ø *Ð *Ð *Ð *Ð *Ð *ðð ð ð ð ð ð ð ð ð ð ð ð 4Ð 3Ð 3Ð 3Ð 3Ð 3ð$ð $ð $ð $ðaAð aAð aAð aAð aAˆ8Ôñ aAô aAð aAðH!/ð /ð /ð /ð /�8Ô$ñ /ô /ð /ðd ˆzÒÐØ€N€N€NØ€GÔ�TÑÔÐÐÐð Ðr(   