
    rh                      S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
  S SK	Jr  S SK	Jr  S SK	Jr  S SK	Jr  S S	K	Jr  S S
K	Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ r   S SKJ!r!  S SKJ"r"  S SKJ#r#  S SKJ$r$  S SKJ%r%  S S KJ&r&  S S!KJ'r'  S S"KJ(r(  S S#KJ)r)  S S$KJ*r*  S S%K+J,r,J-r-  S S&K.J/r/  S S'K0J1r2  \Rf                  " S(5      r4 " S) S*\Rj                  5      r6 " S+ S,\Rj                  5      r7\8S-:X  a  \Rr                  " \7S.5        gg)/    )annotationsN)GeneralNote)StreamException)Stream)Voice)Measure)Score)Part)Opus)bar)beam)chord)clef)common)	converter)corpus)defaults)duration)dynamics)environment)expressions)
instrument)interval)layout)key)metadata)meter)note)pitch)sites)spanner)tempo)texttie)variant)Music21Exception_SplitTuple)m21ToXml)	translatezstream.testsc                  Z    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)TestExternalC   Tc                   [        5       n[        R                  " S5      n[        5       n[        R                  " SS9nSUl        UR                  U/ SQ5        [        R                  " USS9nUR                  SU5        UR                  SU5        UR                  SU5        U R                  (       a  UR                  S	5        g g )
N3/4quartertype   r            TallowTreble8vbr   lily.png)r   r   TimeSignaturer   NoteoctaverepeatInsertr   bestClefinsertshow)selfatsbqbestCs         N/home/james-whalen/.local/lib/python3.13/site-packages/music21/stream/tests.pytestLilySimpleTestExternal.testLilySimpleF   s    H  'HII9%	q,'a5	E	B	A99FF:     c                   [        5       n[        R                  " S5      n[        5       n[        R                  " SS9n[
        R                  " 5       nSUl        [
        R                  " 5       nSU/Ul	        SU/Ul
        SUl        UR
                  R                  U5        [        S5       HS  nUR                  [        R                   " U5      5        ["        R$                  " US-
  5      UR&                  U   l        MU     SUR&                  S   R
                  R*                  S   l        S	UR&                  S
   R
                  R*                  S   l        SUR&                  S   l        [.        R0                  " USS9nUR3                  SU5        UR3                  SU5        UR3                  SU5        U R4                  (       a  UR5                  S5        g g )N3/8eighthr1   r3   r7   r6   startr   stopza real CTr8   r:   )r   r   r;   r   r<   r   Durationr2   TuplettupletActualtupletNormalr=   appendTupletrangeappendcopydeepcopyr   
Accidentalelements
accidentaltupletslyricr   r?   r@   rA   )	rB   rC   rD   rE   rF   dur1tup1irG   s	            rH   testLilySemiComplex TestExternal.testLilySemiComplexW   sf   H  'HII8$  "	 II	

%qAHHT]]1%&','7'7A'>AJJqM$  29

1&&q).28

2''*/(

1a5	E	B	A99FF: rK   c                   [         R                  " S5      n[         R                  " S5      n[        R                  " S5      n[	        5       nUR                  [        R                  " U5      5        UR                  [        R                  " U5      5        [	        5       nUR                  [        R                  " U5      5        UR                  [        R                  " U5      5        [        5       nUR                  U5        UR                  U5        UR                  U5        U R                  (       a  UR                  S5        gg)z7
Test the lilypond output of various score operations.
C4D42/4r:   N)r   r<   r   r;   r
   rX   rY   rZ   r	   r@   rA   )rB   cdrD   s1s2score1s          rH   testScoreLilyTestExternal.testScoreLilyw   s     IIdOIIdO  'V
		$--"#
		$--"#V
		$--"#
		$--"#bbb99KK
# rK   c                   [        5       n[        S5       HN  n[        5       nS H*  n[        R                  " U5      nUR                  U5        M,     UR                  U5        MP     U R                  (       a  UR                  5         gg)z8
A simple test of adding notes to measures in a stream.
   )rC   gc#a#N)r   rW   r   r   r<   rX   rA   )rB   ri   dummyrE   prC   s         rH   testMXOutputTestExternal.testMXOutput   sf     H1XE	A+IIaL , HHQK  99FFH rK   c           
     \   [         R                  " 5       nSUl        [        5       nUR	                  U[        [        SSS5      5      5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S	5      5        UR                  S
[        R                  " S5      5        U R                  (       a  UR                  5         gg)V
A test of the automatic partitioning of notes in a measure and the creation of ties.
r7   r   x   5/4
   rh   3/16   9/8(   10/4N)r   r<   quarterLengthr   r>   listrW   r@   r   r;   rA   )rB   nrC   s      rH   testMxMeasuresTestExternal.testMxMeasures   s    
 IIKH	q$uQQ/01 	
E''./	U((/0	E''/0	U((/0	U((0199FFH rK   c                   [        5       n[        5       n/ SQS-   H_  n[        R                  " U5      nSUl        UR	                  U5        [        R                  " U5      nSUl        UR	                  U5        Ma     [        5       nUR                  U5        UR                  U5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S5      5        UR                  S	[        R                  " S5      5        U R                  (       a  UR                  5         g
g
)zQ
Test the creation of multipart streams by simply having streams within streams.
c3a3g#4d2r}         ?g      ?r   r/   r7   r|      N	r   r   r<   r   rX   r@   r   r;   rA   )rB   rF   rxr   mss          rH   testMultipartStreams!TestExternal.testMultipartStreams   s     HH*R/A		!A"AOHHQK		!A#AOHHQK 0 H			E''./	E''./	E''./99FFH rK   c                   [         R                  " SS5      nSnSnUR                  S   R                  nX   nXRUS-    nUR                  S   R                  nX   nXUS-    n	UR                  S   R                  n
X   nXUS-    n[	        5       nUR                  U5        UR                  U	5        UR                  U5        U R                  (       a  UR                  5         gg)z[
This demonstrates obtaining slices from a stream and layering
them into individual parts.
zmozart/k155r6   r      r5   N)r   parsepartsidr   rX   rA   )rB   
k155_scorestart_measureend_measureviolin_i_idviolin_i_partviolin_i_part_sliceviolin_ii_idviolin_ii_partviolin_ii_part_sliceviola_part_id
viola_partviola_part_slicer   s                 rH   testMultipartMeasures"TestExternal.testMultipartMeasures   s    
 \\-3
 &&q),,"/++/J!''*--#1-K!OL"((+...
%K!ODH	$%	%&	!"99FFH rK   c                N   / SQS-  n[        5       nSnSn[        S5       H_  n[        5       nU H1  n[        R                  " U5      nSUl        UR                  U5        M3     XFl        UR                  U5        XC-  nMa     U R                  (       a  UR                  5         gg)a  
A test of creating a canon with shifted presentations of a source melody.
This also demonstrates
the addition of rests to parts that start late or end early.

The addition of rests happens with makeRests(), which is called in
musicxml generation of a Stream.
ri   g#d-f#efrq         ?r            ?N)	r   rW   r   r<   r   rX   offsetr@   rA   )	rB   rC   r   partOffsetShift
partOffsetjunkrv   	pitchNamer   s	            rH   
testCanonsTestExternal.testCanons   s     .1H
!HDA	IIi("%  "HHHQK)J  99FFH rK   c                   [        5       n/ SQS-   H0  n[        R                  " S5      nX#l        UR	                  U5        M2     [        5       nUR                  U5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S	5      5        U R                  (       a  UR                  5         g
g
)z\
This demonstrates a partial beam; a beam that is not connected between more than one note.
)      ?r   r   r   r   r      ri   r   r/   r7   r|   r   4/4Nr   )rB   rF   r   r   r   s        rH   testBeamsPartialTestExternal.testBeamsPartial   s     H9B>A		#AOHHQK ?
 H		E''./	E''./	E''./99FFH rK   c                   [        5       n[        5       n[        5       n/ SQS-   H  n[        R                  " U5      n[        R                  " S/5      Ul        UR                  U5        [        R                  " U5      nSUl        UR                  U5        [        R                  " U5      nSUl        UR                  U5        M     [        5       nUR                  U5        UR                  U5        UR                  U5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S	5      5        UR                  S
[        R                  " S5      5        U R                  [        UR                  5       R                  5      S5        U R                  (       a  UR                  5         gg)z7
A test of beams applied to different time signatures.
r   r   c#4d3r   r         ?r   r   r/   r7   r|   r   r   ih  N)r   r   r<   randomchoicer   rX   r@   r   r;   assertEquallenrecursenotesrA   )	rB   rF   r   rv   r   r   r   or   s	            rH   testBeamsStreamTestExternal.testBeamsStream  s;    HHH*R/A		!A$mmTF3AOHHQK		!A!AOHHQK		!A#AOHHQK 0 H				E''./	E''./	E''./QYY[../599FFH rK   c                   [        5       n[        R                  " S5      Ul        [        R
                  " 5       nSUl        UR                  US5        UR                  5       nU R                  (       a  UR                  5         g g )Nr   r   r   )
r   r   r;   timeSignaturer   r<   r   repeatAppend	makeBeamsrA   )rB   aMeasureaNotebMeasures       rH   testBeamsMeasureTestExternal.testBeamsMeasure1  sb    9!&!4!4U!;		"eR(%%'99MMO rK    N)__name__
__module____qualname____firstlineno__rA   rI   rc   rn   rw   r   r   r   r   r   r   r   __static_attributes__r   rK   rH   r,   r,   C   s@    D"@$(&288(@rK   r,   c                  P   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7S6 r8S7 r9S8 r:S9 r;S: r<S; r=S< r>S= r?S> r@S? rAS@ rBSA rCSB rDSC rESD rFSE rGSF rHSG rISH rJSI rKSJ rLSK rMSL rNSM rOSN rPSO rQSP rRSQ rSSR rTSS rUST rVSU rWSV rXSW rYSX rZSY r[SZ r\S[ r]S\ r^S] r_S^ r`S_ raS` rbSa rcSb rdSc reSd rfSe rgSf rhSg riSh rjSi rkSj rlSk rmSl rnSm roSn rpSo rqSp rrSq rsSr rtSs ruSt rvSu rwSv rxSw rySx rzSy r{Sz r|S{ r}S| r~S} rS~ rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\S 5       rS rS rS rS Gr S GrS GrGS  GrGS GrGS GrGS GrGS GrGSGrGg(  Testi=  c                t   [        5       n[        S5       H(  nUR                  S[        R                  " 5       5        M*     U R                  UR                  5        [        R                  " S5      US'   U R                  UR                  5        [        5       US'   U R                  UR                  5        g )Nr3   r   C#r6   r7   )
r   rW   r@   music21Music21Object
assertTrueisFlatr   r<   assertFalse)rB   rC   ru   s      rH   
testIsFlatTest.testIsFlat?  s|    H1XEHHQ--/0 !yy!!x!"rK   c                   [        5       n[        R                  " 5       S/nU R                  [        5       nUR                  U5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nhelloz'hello')	r   r   r   assertRaisesr   rX   assertInstr	exception)rB   rC   otherscontexts       rH   testAppendFailsTest.testAppendFailsI  s_    H'')73/7HHV 0iW%6%6!78 0/s   A77
Bc                   [        5       nUR                  [        R                  " S5      / SQ5        UR                  [        R                  " S5      / SQ5        U R	                  UR
                  5        UR                  5       nU R                  UR
                  5        SnU H!  nX4R                   SUR                   S3-  nM#     U R                  US5        g )	Nr   )               @      @zD-)      ?      @      @ z: z; z60.0: C#; 1.0: D-; 2.0: C#; 3.0: D-; 4.0: C#; 5.0: D-; )r   r>   r   r<   r   isSortedsortedr   r   namer   )rB   r   yrr   	myElements        rH   testSortTest.testSortQ  s    H	tyy8	tyy8$HHJ

#I$$%R	'7r::A TUrK   c                   [        5       nSUl        [        5       nSUl        [        5       nSUl        [        R                  " SSS9n[        R                  " SSS9n[        R                  " S	SS9n[        R                  " S
SS9nSUl        SUl        SUl        SUl        UR                  U5        UR                  U5        UR                  U5        UR                  U5        SUl        UR                  U5        UR                  U5        UR                  5       nSUl        U R                  [        U5      S5        US   UL d   eg )Nrk   p1p2Chalfr1   Dr0   EFn1n2n3n4      4@zflat s1rq   r5   )r	   r   r
   r   r<   rX   r   r@   flattenr   r   )	rB   rk   r  r  r
  r  r  r  sf1s	            rH   testFlatSimpleTest.testFlatSimple]  s	   WVVYYs(YYs+YYs+YYs(
		"
		"
		"
		"	
		"
		"jjl 	S1%1v||rK   c                   [        5       nUR                  S[        R                  " 5       5        U R	                  US   R
                  U5        [        5       n[        S5       HS  n[        R                  " U5      nUS-  Ul	        UR                  U5        U R	                  UR                  US-  5        MU     U R	                  UR                  S5        U R	                  US   R                  U5      S5        U R	                  US   R                  U5      S5        U R	                  US   S   R                  US   5      S5        U R	                  [        UR                  5      S5        UR                  5       ng )Nr7   r   r6   r}   r5         $@r   )r   r@   r   r<   r   
activeSiterW   rY   rZ   r   getOffsetBySiter   r    r  )rB   	srcStream	midStreamr   srcNews        rH   testActiveSiteCopiedStreams Test.testActiveSiteCopiedStreams  s;   H	DIIK(100)<H	qA]]9-F FFMV$V]]AF3  	))1- 	155i@!D155i@$G 	1a881FL 	Y__-q1 rK   c                >   [        5       n[        5       n[        R                  " 5       nUR                  SU5        UR                  SU5        U R	                  UR                  5       S   U5        U R                  UR                  5       S   R                  S5        g )Nr}      r         6@)r   r   r<   r@   assertIsr  r   r   )rB   st1st2r
  s       rH   testSimpleRecurseTest.testSimpleRecurse  sq    hhYY[

2r

2sckkmA&+q)00$7rK   c                    U R                  [        5         [        R                  " 5       n[	        US/5        S S S 5        g ! , (       d  f       g = fNr   )r   r   r   r<   r   )rB   r
  s     rH   testStreamExceptionsOnAssert!Test.testStreamExceptionsOnAssert  s2    /BB7O 0//s   #A
Ac                   [        5       n[        S5       HO  n[        R                  " S5      n[        R
                  " S5      Ul        US-  Ul        UR                  U5        MQ     U R                  [        U5      S5        U R                  [        UR                  5       5      S5        U R                  UR                  5       S   R                  S5        [        5       n[        S5       H4  n[        R                  " U5      nUS-  Ul        UR                  U5        M6     U R                  [        U5      S5        U R                  [        UR                  5       5      S5        UR                  5       nU R                  US	   R                  U5      S
5        [        5       n[        S	5       H4  n[        R                  " U5      nUS-  Ul        UR                  U5        M6     U R                  [        U5      S	5        U R                  [        UR                  5       5      S5        UR                  5        V	s/ s H  oR                  PM     n
n	[        [        S5      5      nU[        S5       Vs/ s H  o"S-   PM	     sn-  nU[        S5       Vs/ s H  o"S-   PM	     sn-  nU[        S5       Vs/ s H  o"S-   PM	     sn-  nU[        S5       Vs/ s H  o"S-   PM	     sn-  nU[        S5       Vs/ s H  o"S-   PM	     sn-  nU R                  U
S [        U5       U5        g s  sn	f s  snf s  snf s  snf s  snf s  snf )Nr   G#r0   r5   r   rq   r}               &@d      r   r   n   )r   rW   r   r<   r   rR   r   r@   r   r   r   r  rY   rZ   r  r   )rB   r  r   r   r  r  mfs	farStreammidNewrC   offsetsoffsetsMatchs               rH   testStreamRecursionTest.testStreamRecursion  s   H	qA		$A!**95AJ1uAHQ	  	Y+Y..0115**,Q/66< H	qA]]9-FFFMV$ 
 	Y+Y..0126!Q//4d;H	qA]]9-FGFMV$ 
 	Y+Y..0137 &/%6%6%89%888%89 E!H~q2AR22q2AR22q2AR22%(3(QS(33%(3(QS(33!3#l"34lC : 32233s$   L1;L6L;=M M?M
c                   [        5       n[        S5       H  n[        5       n[        S5       Hz  n[        5       n[        S5       HI  n[        R                  " S5      n[        R
                  " S5      Ul        UR                  US-  U5        MK     UR                  US-  U5        M|     UR                  US-  U5        M     UR                  5       nU V	s/ s H  oR                  PM     n
n	U
S S nU R                  U/ SQ5        g s  sn	f )	Nrq   r)  r0   r6   r3      r   )r   r6   rq   r3   r   r+  	   r}      r  r8        r<  r      r=        r?  )
r   rW   r   r<   r   rR   r@   r  r   r   )rB   r1  r   r  r   
nearStreamzr   fs_fsrC   r3  offsetsBriefs               rH   testStreamSortRecursionTest.testStreamSortRecursion  s    H	qAI1X#X
qA		$A!)!2!29!=AJ%%a!eQ/ "   Q
3  QVY/  !!#%*+U88U+s|K	L ,s   D
c                P   [        5       nS H\  u  p#[        R                  " S5      n[        R                  " 5       Ul        X4R                  l        X$l        UR                  U5        M^     UR                  5       nU R                  USS/S/S//5        UR                  U5      ng )N))r   r  )r7   r6   )r:  r7   r)  r5   r6   r   )r   r   r<   r   rR   r   r   r@   _findLayeringr   _consolidateLayering)rB   rC   r   durr   
overlapMapru   s          rH   testOverlapsATest.testOverlapsA  s    H5KF		$A!**,AJ'*JJ$HHHQK 6 __&
q!fqcA3%78&&z2rK   c                *   [        5       n[        S5       HO  n[        R                  " S5      n[        R
                  " S5      Ul        US-  Ul        UR                  U5        MQ     UR                  5       nU R                  [        U5      S5        g )Nrq   r)  r0   r5   r   )r   rW   r   r<   r   rR   r   r@   getOverlapsr   r   )rB   rC   r   r   rj   s        rH   testOverlapsBTest.testOverlapsB  sm    HqA		$A!**95AJ1uAHHHQK	 
 MMOQ#rK   c                   [        5       n[        R                  " SS9nUR                  U/ SQ5        U R	                  UR
                  S5        U R	                  UR                  S5        U R	                  UR                  R                  S5        [        R                  " S5      nU R	                  UR                  S5        X1l        U R	                  UR                  R                  S5        U R	                  UR                  S5        g )	Nr0   r1   r4   r7   rq   r   r  r   )
r   r   r<   r>   r   highestOffsethighestTimer   r   rR   )rB   rC   rF   newDurations       rH   testStreamDurationTest.testStreamDuration5  s    HII9%	q,'!,*1137''/22C8 
1137*rK   c                   SSK Jn  [        5       n[        R                  " SS9nUR                  U5        U R                  UR                  R                  S5        [        R                  " 5       nU4UR                  l
        U R                  UR                  R                  U" SS5      5        U R                  UR                  R                  U" SS5      5        XD4UR                  l
        U R                  UR                  R                  U" SS5      5        UR                  5         U R                  UR                  R                  U" SS5      5        g )	Nr   Fractionr   r   r6   r7   rq   r9  )	fractionsrY  r   r   r<   rX   r   r   r   rS   r^   coreElementsChanged)rB   rY  r   r   tups        rH   testStreamDurationRecalculated#Test.testStreamDurationRecalculatedD  s    &HIIC(	1137oo!V

118Aq>B118Aq>B "Z

118Aq>B	118Aq>BrK   c                   [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[        R                  " 5       Ul        [        R                  " 5       Ul        [        R                  " 5       Ul        SUR                  R
                  -  UR                  l        SUR                  R
                  -  UR                  l        SUR                  R
                  -  UR                  l        [        5       nUR                  U5        UR                  U5        UR                  U5        U R                  US   R                  SUR                  R
                  -  5        U R                  US   R                  SUR                  R
                  -  SUR                  R
                  -  -   5        g	)
zH
An approach to setting TimeSignature measures in offsets and durations
r/   r|   rh   r   r}   r3   r5   r6   N)
r   r;   r   rR   barDurationr   r   rX   r   r   )rB   rC   rE   ri   r   s        rH   testMeasureStreamTest.testMeasureStreamX  sH    &&&&&(
&&(
&&(
 $&(C(C#C

 #%(C(C#C

 #$q}}'B'B#B

 H			1rAMM,G,G'GI1Q]]-H-H(H*,q}}/J/J*J(L 	NrK   c                   [        5       n[        5       n/ SQS-   H_  n[        R                  " U5      nSUl        UR	                  U5        [        R                  " U5      nSUl        UR	                  U5        Ma     [        5       nUR                  U5        UR                  U5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S5      5        UR                  S	[        R                  " S5      5        U R                  [        UR                  5       R                  5      S
5        [        R                  " S5      n[        R                  " U5      nUS   SS n	US   SS n
US   SS n[        5       nXU4 H(  nU H  nUR                  UR                   U5        M!     M*     g)zo
Test the creation of streams with multiple parts. See versions
of this tests in TestExternal for more details
r   r}   r   r5   r   r/   r7   r|   r   P   corelli/opus3no1/1graver+  r3   r<  r   N)r   r   r<   r   rX   r@   r   r;   r   r   r   r   r   getWorkr   r   r   )rB   rF   r   r   r   r   r   thisWorkrC   rE   ri   rj   rl   stream_caser   s                  rH   testMultipartStreamTest.testMultipartStreamt  si   
 HH*R/A		!A"AOHHQK		!AAOHHQK 0 H			E''./	E''./	E''./QYY[../4>>";<OOH%aD2JaDBKaDBK X !9K 		!((A& ! %rK   c                   [         R                  " S5      nUS   nU R                  U[        5        U R	                  UR
                  U5        U R                  US   [        5        U R                  US   R
                  U5        [        5       n[        5       n/ SQS-   Ht  n[        R                  " U5      n[        R                  " S/5      Ul        UR                  U5        [        R                  " U5      nSUl        UR                  U5        Mv     [        5       nUR                  U5        UR                  U5        U R	                  UR
                  U5        U R	                  UR
                  U5        g)	aK  
Test activeSite relationships.

Note that here we see why sometimes qualified class names are needed.
This test passes fine with class names Part and Measure when run interactively,
creating a Test instance. When run from the command line
Part and Measure do not match, and instead music21.stream.Part has to be
employed instead.
rf  r   r<  r   r   r   r   N)r   r   assertIsInstancer
   r   r  r   r  r   r   r<   r   r   r   rX   r@   )	rB   rC   rE   rF   r   r   r   r   r   s	            rH   testActiveSitesTest.testActiveSites  s    LL23aDa&q) 	aeW-adooq) HH*R/A		!A$mmTF3AOHHQK		!A!AOHHQK 0 H		q)q)rK   c                L   [        5       n[        5       n[        R                  " S5      nSUl        UR	                  U5        UR	                  U5        U R                  UR                  U5      UR                  U5      5        U R                  UR                  U5      S5        g)z-
Test an object having multiple activeSites.
r)  r}   N)r   r   r<   r   r@   r   r  )rB   rC   rE   r   s       rH   testActiveSitesMultipleTest.testActiveSitesMultiple  s     HHIIdO		 	**1-q/@/@/CD**1-r2rK   c                r   [         R                  " [        R                  " S5      5      nUR                  S   nUR                  5       nUR                  [        R                  5       H  nUR                  Ul
        M     [        R                  " U5      nU R                  UR                  S5      S5        g )Nrf  r5   z	A A G F ET)r   r   r   rg  r   r  getElementsByClassr   r<   r   r_   r#   assembleLyricsr   
startswith)rB   rC   rE   ri   thisNotetextStrs         rH   testExtractedNoteAssignLyric!Test.testExtractedNoteAssignLyric  s    OOFNN+DEFGGAJIIK,,TYY7H%]]HN 8%%a(++K8	rK   c                    [         R                  " S5      nUR                  S   nUR                  5       nU R	                  UR
                  S5        U R	                  UR
                  S5        g)z-
Test getting an instrument from an mxl file
zcorelli/opus3no1/1grave.xmlr6   zViolone e OrganoN)r   r   r   getInstrumentr   partName)rB   rC   rE   instObjs       rH   testGetInstrumentFromMxlTest.testGetInstrumentFromMxl  sZ     LL67GGAJ //#))+=>%78rK   c                   [        5       n[        5       n/ SQS-   Ht  n[        R                  " U5      n[        R                  " S/5      Ul        UR                  U5        [        R                  " U5      nSUl        UR                  U5        Mv     [        5       nUR                  U5        UR                  U5        UR                  5       nU R                  UR                  [        R                  5        UR                  5       nU R                  UR                  [        R                  5        UR                  5       nU R                  UR                  [        R                  5        [        R                  " 5       nUR                  U5      R                  S5      n	UR                  U5      R                  S5      n	UR                  U5      R                  S5      n	g )Nr   r<  r   r   utf-8)r   r   r<   r   r   r   rX   r@   r|  r   r}  r   r)   GeneralObjectExporterr   decode)
rB   rF   r   r   r   r   r   r~  GEX	unused_mxs
             rH   testGetInstrumentManualTest.testGetInstrumentManual  s[   
 HH*R/A		!A$mmTF3AOHHQK		!A!AOHHQK 0 H		//#))8+<+<=//#))8+<+<=//#))8+<+<= ,,.IIaL''0	IIaL''0	 IIaL''0	rK   c           
        [         R                  " 5       nSUl        [        5       nUR	                  U[        [        SSS5      5      5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S	5      5        UR                  S
[        R                  " S5      5        [        R                  " 5       nUR                  U5      R                  S5      ng)rz   r7   r   r{   r|   r}   rh   r~   r   r   r   r   r  Nr   r<   r   r   r>   r   rW   r@   r   r;   r)   r  r   r  rB   r   rC   r  r  s        rH   testMeasureAndTieCreationTest.testMeasureAndTieCreation  s    
 IIKH	q$uQQ/01	E''./	U((/0	E''/0	U((/0	U((01,,.IIaL''0	rK   c                   [        5       n[        5       n/ SQS-   Ht  n[        R                  " U5      n[        R                  " S/5      Ul        UR                  U5        [        R                  " U5      nSUl        UR                  U5        Mv     [        5       nUR                  U5        UR                  U5        [        R                  " U5      n[        5       nU H`  n	[        R                  SU	[        U	R                  5      /5        [        R                  " U	5      n
UR                  U	R                  U
5        Mb     g)z
Test copying a stream
r   r   r   r   z copying and inserting an elementN)r   r   r<   r   r   r   rX   r@   rY   rZ   environLocal
printDebugr   r    r   )rB   rF   r   r   r   r   r   unused_wpostaElementbElements              rH   testStreamCopyTest.testStreamCopy*  s     HH*R/A		!A$mmTF3AOHHQK		!A!AOHHQK 0 H		 ==#xH##%G%-s8>>/B%D E}}X.HKK2	 rK   c                   [        5       n[        5       n/ SQS-   Ht  n[        R                  " U5      n[        R                  " S/5      Ul        UR                  U5        [        R                  " U5      nSUl        UR                  U5        Mv     [        5       nUR                  U5        UR                  U5        [        5       nUR                  [         5       H  nUR                  U5        M     [        R                  S[        U5      /5        Sn	U HM  nU	S:  a  [        R                  SU	/5          g[        R                  U/5        UR                  S	S
9n
A
U	S-  n	MO     g)zM
This test was designed to illustrate a past problem with stream
Iterations.
r   r3   r   r   zexpected lengthr   rq   zinfinite loopT)searchActiveSiter5   N)r   r   r<   r   r   r   rX   r@   rt  r  r  r   r|  )rB   rF   r   r   r   r   srcrC   objcounterr   s              rH   testIterationTest.testIterationK  s"   
 HH*Q.A		!A$mmTF3AOHHQK		!A!AOHHQK / h

1

1H))&1CHHSM 2 	!2CF ;<A!|'''(BC##QC(??D?9DqLG rK   c           
        [         R                  " 5       nSUl        [        5       nSUl        UR                  S[        R                  " S5      5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S	5      5        UR                  S
[        R                  " S5      5        U Vs/ s H  o3R                  PM     nnU R                  U/ SQ5        UR                  U[        [        SSS5      5      5        UR                  SS9nU R                  [        U5      S5        U R                  US   R                  S5        U R                  US   R                  S5        U R                  US   R                   U5        U Vs/ s H  o3R                  PM     nnU R                  U/ SQ5        g s  snf s  snf )Nr7   Fr   r|   r}   rh   r~   r   r   r   r   )r   r  r   r        D@r{   )sortByCreationTimer3   rq   )r   r<   r   r   autoSortr@   r   r;   r   r   r>   r   rW   getTimeSignaturesr   	numeratorr  )rB   r   rC   r   r3  rE   s         rH   testGetTimeSignaturesTest.testGetTimeSignaturesm  s   IIKH
	E''./	U((/0	E''/0	U((/0	U((01%&'Q88Q'">? 	
q$uQQ/0159Q#1+1,1!, &''Q88Q' 	">?% ( (s   0G8G=c                n   [        5       nUR                  S[        R                  " 5       5        U R	                  [        U5      S5        U R	                  [        US   R                  5      S5        U R	                  US   R                  U5      S5        U R	                  US   R                  S5        g)z2
Test basic Elements wrapping non music21 objects
2   r5   r   r6         I@N)	r   r@   r   r   r   r   r    r  r   )rB   rC   s     rH   testElementsTest.testElements  s     H	W**,-Q# 	QqTZZ!,
 	1--a0$71d+rK   c                \   [        5       n/ SQS-   H*  n[        R                  " U5      nUR                  U5        M,     [        R
                  " U5      nU R                  UR                  S5        UR                  5       nUS   R                  nU R                  UR                  S5        g )Nr   r3   r	  r   )	r   r   r<   rX   r   r?   r   signmakeMeasures)rB   r   r   r   clefObjmeasureStreams         rH   	testClefsTest.testClefs  s    H*Q.A		!AHHQK / --"s+("''s+rK   c           
        [        5       n[        R                  " S5      nSUl        [        R
                  " / SQ5      nSUl        UR                  SU5        UR                  SU5        UR                  5       nU R                  US   U5        U R                  US   U5        UR                  SS9nU R                  [        U5      S5        U R                  US   U5        [        R                  " 5       n[        5       nUR                  SUS	US
U/5        UR                  5       nU R                  US   5        UR                  SS9n	U R                  [        U	5      S5        [        5       n
U
R                  SUS	USU/5        U
R                  SS9nU R                  [        U5      S5        U
R                  SSS9nU R                  [        U5      S5        SUl        [        R                  " S5      n[        5       nUR                  SUS	USU/5        UR                  5       nU R                  [        U5      S5        UR                  SS9nU R                  [        U5      S5        U R                  US   U5        UR                  SSS9nU R                  [        U5      S5        U R                  US   5        [        R                  " S5      nSUl        SUl        [        5       nUR                  SUS	US
USU/5        UR                  5       nU R                  [        U5      S5        UR                  SS9nU R                  [        U5      S5        U R                  US   U5        [        R                  " S5      n[        5       nUR                  SUS	US
U/5        UR                  SS9nU R                  [        U5      S5        UR                  SSS9nU R                  [        U5      S5        UR                  SSS9nU R                  [        U5      S5        U R                  US   U5        U R                  US   U5        [        5       nUR                  [        R                  " 5       5        UR                  [         R"                  " S5      5        UR                  5       nU R%                  U/ 5        ['        5       nUR)                  [        R                  " 5       S5        UR+                  [        R                  " 5       / SQ5        UR-                  SS9  [/        [1        UR3                  5       R4                  5      5       H  u  nnUR7                  USS9  M     UR                  5       n U R                  U  V!s/ s H  n![9        U!5      PM     sn!/ SQ5        UR                  [:        R<                  " S 5      5        [?        U5      n"U"RA                  SS9  [1        U"[&           5       H  n#U#R-                  SS9  M     U"R                  5       n$/ S!Qn%U R                  U$ V!s/ s H  n![9        U!5      PM     sn!U%5        [B        RD                  " U"5      n&[G        U"U&/5      nUR                  5       n'U R                  U' V!s/ s H  n![9        U!5      PM     sn!U%S"/-   U%-   5        g s  sn!f s  sn!f s  sn!f )#Nr   r5   c4e4g4rq   r   T)
skipChordsr   r   r   	skipRestsr6   r  Fr7   )r  skipGapsr}   zB-)rN  )rN  r  A#r   )skipUnisonsr  )noNone)r  r  )r  skipOctavesBr4   inPlace)	<music21.note.Note C><music21.note.Note C#><music21.note.Note D><music21.note.Note E->None<music21.note.Note E><music21.note.Note F><music21.note.Note F#><music21.note.Note G>rh   )r  r  r  r  r  r  r  r  r  r  r  r  )$r   r   r<   r   r   Chordr@   findConsecutiveNotesr  r   r   RestassertIsNonerX   r   Clefr   KeyassertSequenceEqualr   r   r>   
makeVoices	enumerater   r   r   	transposereprr   r;   r
   r  rY   rZ   r	   )(rB   r   r
  r  l1l2r1rl   l3l4s3l5l6r  s4l7l8l9r  s5l10l11n5s6l12l13l14s7l15r   rb   elemconsecr   rv   mmconsec2	expected2r  consec3s(                                           rH   testFindConsecutiveNotesTest.testFindConsecutiveNotes  s   HYYt_[[+,	B	B##%beR beR ##t#4R!$beR YY[X
		3 	 $$&"Q% $$t$4R!$X
		3 	 $$u$5R!$$$td$CR!$YYt_X
		3 	 $$&R!$$$$6R!$beR $$$$GR!$"Q% YYt_X
		3 	 %%'S1%%%$%7S1%c!fb!YYt_X
		3 	 %%T%2S1%%%Tt%DS1%%%Tt%DS1%c!fb!c!fb!X
		$))+
		#''#,%%'  b) I	tyy{A&	tyy{L1	T" aiik&7&7!89GAtNN1dN+ : '')626a$q'62		
 	
$$U+,G	t$qz"BMM$M' #((*	 	737a$q'73Y? ]]11b'N((*737a$q'73Y&5II5UVS 3D 4 4s   [?[[c                   [         R                  " S5      n[         R                  " S5      n[         R                  " 5       n[         R                  " S5      n[        5       nUR	                  XX4/5        UR                  SS9nU R                  [        U5      S5        US   nU R                  UR                  S5        U R                  UR                  R                  U5        [        R                  " S	5      n[        R                  " S
5      n	[        X/5      n
U
R                  5       nU R                  [        U5      S5        UR                  5       nU R                  UR                  S5        U R                  UR                  UR                  S   5        U R                  UR                   U	R                  S   5        g )Nrf   D5B4Tr  r6   r   zMajor NinthC4 E4 G4zD4 F4 A4r5   zMajor Second)r   r<   r  r   rX   melodicIntervalsr   r   niceNamer  	noteStartr  r   r  firstr   noteEnd)rB   r  d5r  b4rk   intS1M9ch1ch2rl   intS2major_seconds                rH   testMelodicIntervalsTest.testMelodicIntervals2  sM   YYt_YYt_YY[YYt_X
		22"###d#3UQ'1Xm4bll--r2 kk*%kk*%SJ##%UQ'{{}..?l,,ciil;l**CIIaL9rK   c                    [         R                  " SSS9nUR                  5       nU R                  [	        U5      S5        g )Nztinynotation: 3/4 c4 d' r b b'FmakeNotationr6   )r   r   r  r   r   )rB   rk   r  s      rH   testMelodicIntervalsBTest.testMelodicIntervalsBM  s5    __=ER##%UQ'rK   c           
     j   [        5       n[        R                  " S5      nSUl        UR	                  U5        U R                  [        UR                  5      S5        UR                  5       nUR                  SS9  U R                  [        UR                  5       R                  5      S5        UR                  5       nU R                  [        UR                  5       R                  5      S5        U R                  UR                  5       R                  S   R                  S5        [        5       n[        R                  " S5      nS	Ul        UR	                  U5        UR                  5       nUR                  SS9  [        R                  " S
5      UR                  5       R                  S   l        UR                  5       nU R                  [        UR                  5       R                  5      S5        [        R                  " 5       nSUl        [        5       nUR                  U[!        [#        SSS5      5      5        U R                  [        U5      S5        UR%                  S[&        R(                  " S5      5        UR%                  S[&        R(                  " S5      5        UR%                  S[&        R(                  " S5      5        UR%                  S[&        R(                  " S5      5        UR%                  S[&        R(                  " S5      5        UR                  5       n	U	R                  SS9  U R                  [        U	R                  5       R                  5      S5        U	R                  5       n
U R                  [        U
R                  5       R                  5      S5        g )ND#2r   r5   Tr  r6   r   A4r  rO   r7   r{   r   r|   r}   rh   r~   r   r   r   A   )r   r   r<   r   rX   r   r   r   r  makeTiesr   	stripTiesr%   Tier  r>   r   rW   r@   r   r;   )rB   rk   r
  sUntiedrl   r  s2Untiedr   rC   rE   ri   s              rH   testStripTiesBuiltATest.testStripTiesBuiltAR  s   XYYu
		"RXX*__
D!RZZ\//0!4,,.W__.445q9*003AA1EXYYt_
		"__
D!$'GGG$4

1!<<>X--/556:IIKH	q$uQQ/01Q$	E''./	U((/0	E''/0	U((/0	U((01NN	

4
  	QYY[../4KKMQYY[../4rK   c                >   SSK Jn  [        R                  " UR                  5      nUR
                  S   nU R                  [        UR                  5       R                  5      S5        UR                  SS9  U R                  [        UR                  5       R                  5      S5        UR
                  S   nU R                  [        UR                  5       R                  5      S5        UR                  SS9nU R                  [        UR                  5       R                  5      S	5        U R                  [        UR                  5       R                  5      S5        UR
                  S
   nU R                  [        UR                  5       R                  5      S5        UR                  SS9  U R                  [        UR                  5       R                  5      S5        UR
                  S   nU R                  [        UR                  5       R                  5      S5        UR                  5       R                  5       nU R                  [        UR                  5       R                  5      S5        U R                  [        UR                  5      S5        g )Nr   testPrimitiver   Tr  r   r5   Fr3   r6   r7   r}   )music21.musicxmlr  r   r   multiMeasureTiesr   r   r   r   notesAndRestsr  r  )	rB   r  rC   r  r  
p2Strippedp3p4p4Notess	            rH   testStripTiesImportedATest.testStripTiesImportedA  s   2OOM::;WWQZRZZ\778"=
T"RZZ\778!<WWQZRZZ\778"=\\%\0
Z//1??@!DRZZ\778"=WWQZRZZ\778"=
T"RZZ\778!<WWQZRZZ\778"=,,.((*RZZ\778"=W223R8rK   c                   [        5       n[        5       nUR                  U5        [        R                  " SSS9n[
        R                  " S5      Ul        [        R                  " SSS9n[
        R                  " S5      Ul        [        R                  " SSS9n[
        R                  " S5      Ul        [        R                  " SSS9nUR                  X4XV/5        UR                  SS9  U R                  [        UR                  5       R                  5      S	5        UR                  S
S9nU R                  [        UR                  5       R                  5      S	5        g)zy
Testing that ties are stripped from containers that are not Measures.
https://github.com/cuthbertLab/music21/issues/266
rf   r   rZ  rO   continuerP   Tr  r6   FN)r   r   rX   r   r<   r%   r  r  r   r   r   r  )rB   r   vr   r  r  r  strippeds           rH   !testStripTiesNonMeasureContainers&Test.testStripTiesNonMeasureContainers  s    
 HG	IId#. YYt3/$YYt3/YYt3/	!!	D!QYY[667;;;u;-X--/==>BrK   c                   [        SS9n[        SS9n[        R                  " SS9n[        R                  " SS9nSUR                  l        SUR                  l        [        R                  " S	5      Ul        [        R                  " S
5      Ul        UR                  SU5        UR                  SU5        [        X/5      nUR                  5       nU[        R                     R                  5       nUR                  nU R                  UR                  5        U R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  R                  5        g)z9
After stripping ties, unlinked durations become linked.
r5   numberr6   wholer1   r0   F      ?rO   rP   r   complexg      @N)r   r   r<   r   linkedr   r%   r  r@   r
   r  r  r   r   r2   r   )	rB   m1m2r
  r  rv   
p_strippedr   rj   s	            rH   testStripTiesUnlinkedTest.testStripTiesUnlinked  s    AAYYG$YYI&"$(!!
		!R
		!R"N[[]
tyy!'')JJ!+$/++,rK   c                   [        5       n[        5       n[        5       n[        5       n[        R                  " SS9n[
        R                  " S5      Ul        [        R                  " SS9n[
        R                  " S5      Ul        [        R                  " SS9n[        R                  " SS9n[
        R                  " S5      Ul        [        R                  " SS9n	[
        R                  " S5      U	l        UR                  XV/5        UR                  XxU	/5        UR                  U5        UR                  SU5        UR                  U5        UR                  5       n
U R                  [        U
R                  5       R                  5      S5        U
R                  S   R                   S   R                  S   nU R                  UR"                  S5        U R%                  UR
                  5        U
R                  S   R                   S   R                  S   nU R                  UR"                  S5        U R%                  UR
                  5        g	)
z
Testing that ties are stripped from notes consecutive in a voice
but not consecutive in a flattened parent stream.
https://github.com/cuthbertLab/music21/issues/568
r6   rZ  rO   rP   r5   r   r7   rq   N)r	   r
   r   r   r<   r%   r  r  rX   r@   r  r   r   r  r  r   voicesr   r  )rB   r   rv   v1v2v1n1v1n2v2n1v2n2v2n3r&  
voice1Note
voice2Notes                rH   +testStripTiesConsecutiveInVoiceNotContainer0Test.testStripTiesConsecutiveInVoiceNotContainer  s    GFWWyyq)777#yyq)776?yyq)yyq)777#yyq)776?
		4,
		4t$%		B	;;=X--/==>B^^A&--a0>>qA
1115*..)^^A&--a0>>qA
1115*..)rK   c                   [        5       n[        R                  " SSS9n[        R                  " SSS9n[        R                  " SSS9n[        R                  " S5      Ul        [        R                  " SSS9n[        R                  " S5      Ul        [
        R                  " X$/5      n[
        R                  " X5/5      nUR                  Xg/5        UR                  5       nU R                  UR                  S   R                  5        g	)
zu
Testing ties NOT stripped where only some chord members are tied.
https://github.com/cuthbertLab/music21/issues/502
C5r   rZ  Bb4C3rO   rP   r   N)r   r   r<   r%   r  r   r  rX   r  assertIsNotNoner   )	rB   r   r
  r  r  r  c1c2r&  s	            rH   !testStripTiesChordMembersSomeTied&Test.testStripTiesChordMembersSomeTied  s    
 HYYt3/YYuC0YYt3/!YYt3/[[""[[""	";;=X^^A.223rK   c                X   [        5       n[        R                  " SS/5      nUR                  [        R
                  " S5      5        UR                  U5        UR                  SS9  UR                  5       nU R                  [        UR                  5       R                  5      S5        g)z9
Testing ties stripped where all chord members are tied.
rE  rC  z1/8Tr  r5   N)r   r   r  rX   r   r;   r	  r  r   r   r  r   )rB   r   ri   r&  s       rH    testStripTiesChordMembersAllTied%Test.testStripTiesChordMembersAllTied	  s|    
 HKKt%	$$U+,		t$;;=X--/556:rK   c                   [        5       n[        R                  " SS/5      nUR                  [        R
                  " S5      5        UR                  U5        UR                  SS9  UR                  5       R                  u  p4pVUR                  S[        R                  R                  X65      5        UR                  S[        R                  R                  X55      5        UR                  SS9nUR                  5       R                  S   nU R!                  [#        UR$                  S   5      S5        U R!                  [#        UR$                  S   5      S5        U R'                  UR$                  S   R)                  U5      5        U R'                  UR$                  S   R+                  U5      5        U R'                  UR$                  S   R)                  U5      5        U R'                  UR$                  S   R+                  U5      5        U R-                  UR$                  S   UR$                  S   5        U R'                  UR$                  S   R)                  U5      5        U R'                  UR$                  S   R+                  U5      5        U R'                  UR$                  S   R)                  U5      5        U R'                  UR$                  S   R+                  U5      5        g	)
zD
Testing elements in spanners replaced when stripTies removes them.
rE  rC  z1/16Tr  r   Fr5   N)r   r   r  rX   r   r;   r	  r  r   r@   r   r!   Slurr   	Crescendor  r   r   spannersr   isFirstisLastassertIsNot)	rB   r   ri   r
  	unused_n2r  r  r&  sn1s	            rH   #testStripTiesReplaceSpannedElements(Test.testStripTiesReplaceSpannedElements  s1   
 HKKt%	$$V,-		t$ !		 1 1r	GOO((01	G$$..r67;;u;- &&q)X..q12A6X..q12A6))!,44S9:))!,33C89))!,44S9:))!,33C89 	A(9(9!(<=

1--b12

1,,R01

1--b12

1,,R01rK   c                   [         R                  " S5      nUR                  SS9  U R                  UR                  R
                  S5        UR                  SS9  U R                  UR                  R
                  S5        UR                  SS9S   nUR                  SS9  U R                  U[        R                      Vs/ s H  n[        UR
                  5      PM     sn/ SQ5        g s  snf )NztinyNotation: c2~ c8 c8 c8 c8Tr  Fr   r   )z<music21.beam.Beams>0<music21.beam.Beams <music21.beam.Beam 1/start>>/<music21.beam.Beams <music21.beam.Beam 1/stop>>r[  r\  )r   r   r	  r   streamStatusbeamsr  splitAtDurationsr   r   r<   r  )rB   rv   els      rH   testStripTiesClearBeamingTest.testStripTiesClearBeaming5  s    OO;<	t$--t4	D!--u5t,Q/	D!1TYY<@<R$rxx.<@	
@s   C,c                   [        [        R                  " 5       /5      n[        [        R                  " S5      /5      n[        X/5      n[        U5      n[        R                  " S5      UR                  R                  5       l        UR                  SSS9n[        R                  " S5      UR                  R                  5       l        UR                  SSS9ng)zo
Ensure stripTies() gracefully handles "stop" or "continue" tie types
following rests as it flattens a stream.
z
C4 E-4 B-4rP   F)r  matchByPitchr$  N)r   r   r  r   r  r   r
   r%   r  r   r  r  )rB   r7  r8  r   rv   _s         rH   $testStripTiesStopTieChordFollowsRest)Test.testStripTiesStopTieChordFollowsRestF  s    
 DIIK=!EKK-./RHG"wwvKKEK:"wwz2KKEK:rK   c                   [         R                  " 5       n[        R                  " S5      n[        R
                  " S5      n[        5       nUR                  SU5        UR                  SU5        UR                  SU5        [        UR                  SSS95      n[        UR                  SSS95      nU R                  US5        U R                  US5        g)	z=
Testing multiple zero-length elements with mustBeginInSpan:
r   r6   r   T)mustBeginInSpanFr7   N)r   
TrebleClefr   r;   r   KeySignaturer   r@   r   getElementsByOffsetr   )rB   ri   rD   ksr   r  r  s          rH   !testGetElementsByOffsetZeroLength&Test.testGetElementsByOffsetZeroLengthT  s    
 OO  'a H	a	b	b&&sD&AB&&sE&BCQQrK   c                j   SSK Jn  [        R                  " UR                  5      nU R                  [        UR                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        UR                  SS	9nU R                  [        UR                  S   R                  5       R                  5      S
5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        UR                  SS	9  U R                  [        UR                  S   R                  5       R                  5      S
5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        [        R                  " S5      nU R                  [        UR                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        UR                  SS	9  U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        g)z'
Test stripTies using the Score method
r   r  rq   r   r5   r6   r7   Fr  r   r3   r}   Tbach/bwv66.6%   *   -   )   $   ,   N)r  r  r   r   r  r   r   r   r  r  r  r   )rB   r  r   sPosts       rH   testStripTiesScoreTest.testStripTiesScoree  s    	3 OOM::;QWWq)QWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"E E*U[[^335CCDaHU[[^335CCDaHU[[^335CCDaHU[[^335CCDbI 	QWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"E 	
D!QWWQZ//1??@!DQWWQZ//1??@!DQWWQZ//1??@!DQWWQZ//1??@"E LL(QWWq)QWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"E 	
D!QWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"ErK   c                   [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      nXX4XV/n[        5       nUR                  [        R
                  " S5      5        [        S5       H[  n	Xy   n
U	S-  (       d  [        R                  " S	5      nXl        [        U	S
-   S9nUR                  U
5        UR                  U5        M]     UR                  SS9n[        UR                  5       R                  [         R                  5      5      nU R                  [        U5      S5        U R                  US   R                   UR                   5        U R                  US   R"                  R$                  S5        U R                  US
   R                   UR                   5        U R                  US   R                   UR                   5        U R                  US   R                   UR                   5        U R                  US   R                   UR                   5        g)zU
Test whether strip ties merges some chords that are the same and
some that are not.
r  zC3 E3 G3z	C3 E-3 G3z	D4 F#4 A4zD4 F#41/4r   r6   rO   r5   r*  Trd  r3   r   r   r7   rq   N)r   r  r
   rX   r   r;   rW   r%   r  r   r  r   r  rt  r   r   pitchesr   r   )rB   ch0r  r  ch3ch4ch5chordsrv   rb   ri   tr   r  	chordsOuts                  rH   testStripTiesChordsTest.testStripTiesChords  s   
 kk*%kk*%kk*%kk+&kk+&kk(#Cc/F	$$U+,qA	Aq5GGG$q1u%AHHQKHHQK  [[d[+88EF	Y+1--s{{;1..<<cB1--s{{;1--s{{;1--s{{;1--s{{;rK   c                R   [         R                  " SS5      nU R                  [        UR	                  5       R                  5       R                  5      S5        UR	                  5       R                  S   R                  S5      S   nU R                  [        UR                  5      S5        U R                  UR                  S   R                  S5        U R                  UR                  S	   R                  S
5        U R                  UR                  S   R                  S5        g)zf
Make sure chords are matched even if some have 'natural' accidentals and some
have None accidentals.
zschoenberg/opus19r6   .   r   r   r   r7   r   r5         @r   N)
r   r   r   r   r  r  r   r   rt  r   )rB   schmeasures      rH   testStripTiesChordsAccidentals#Test.testStripTiesChordsAccidentals  s    
 ll.2S]]_446<<=rB--/''*==iHKW]]+Q/q)00#6q)00#6q)00#6rK   c                4   [         R                  " S5      n[        R                  " S5      Ul        [         R                  " S5      n[         R                  " S5      n[        R                  " S5      Ul        [         R                  " S5      n[         R                  " S5      n[        R                  " S5      Ul        [        R
                  " X#/5      n[        R
                  " XE/5      n[        5       nUR                  U5        UR                  U5        UR                  U5        UR                  SS9n	U R                  [        U	5      S5        UR                  S	S9n
U R                  [        U
5      S
5        [        R                  " S5      Ul        UR                  SS9nU R                  [        U5      S5        U R                  [        UR                  5      S5        UR                  S	S9nU R                  [        U5      S
5        [        R                  " S5      Ul        UR                  S	S9nU R                  [        U5      S5        U R                  [        UR                  5      S5        UR                  U[        R
                  " S5      5        [        R                  " S5      UR                  5       l        UR                  S	S9nU R                  [        UR                  5      S5        UR                  5       R                  SSS9  UR                  SS9nU R                  [        UR                  5      S5        US   R                  SSS9  UR                  SS9nU R                  [        UR                  5      S5        g)z
Make sure tie types of "stop" or "continue" are not taken at face value
for Chords if matchByPitch=False; they only represent that SOME
chord member has that tie type.
rf   rO   F4r$  rP   Tr}  r6   Fr7   z4(<music21.note.Note C>, <music21.chord.Chord C4 F4>)zC4 F4z(<music21.chord.Chord C4 F4>,)r   r  z;(<music21.chord.Chord F#4 B4>, <music21.chord.Chord C4 F4>)r5   r+  zX(<music21.chord.Chord F#4 B4>, <music21.chord.Chord G4 C5>, <music21.chord.Chord C4 F4>)N)r   r<   r%   r  r   r  r   rX   r  r   r   r   r\   replacer  r  )rB   n0r
  r  r  r  rG  rH  r   	stripped1	stripped2	stripped3	stripped4	stripped5	stripped6	stripped7	stripped8s                    rH   testStripTiesComplexTiesTest.testStripTiesComplexTies  s    YYt_!YYt_YYt_$YYt_YYt_[[""[[""H			KKTK2	 	Y+KKUK3	 	Y+$KKTK2	 	Y+	""#B	

 KKUK3	Y+KKUK3	Y+	""#B	
 	
		"ekk'*+(	KKUK3		""#,	
 	
	At,KKTK2		""#I	
 	
!q$'KKTK2		""#J	
rK   c                X   SSK Jn  [        R                  " S5      n[        R
                  " S5      Ul        [        R                  " S5      n[        R
                  " S5      Ul        UR                  5       nUR                  SSS9  [        5       nUR                  SU5        UR                  S	U5        UR                  S	U5        UR                  SS
9  UR                  SS9nU R                  [        U[        R                     5      S5        U R                  U[        R                     R                  5       R                  S5        U R                  [        XaR                     5      S5        U R                  XaR                     R                  5       R                  S5        g )Nr   )harmonyr  rO   rP   T)	allow_addr   r   r  r}  r5   r6   )r   r  r   r<   r%   r  ChordSymbolbassr   r@   r	  r  r   r   r  r   )rB   r  r  r
  cs0r   r&  s          rH   )testStripTiesIgnoresUnrealizedChordSymbol.Test.testStripTiesIgnoresUnrealizedChordSymbol+  s9   #YYs^!YYs^ !!#%H	b	c	b	t$;;D;1Xdii0115$)),224BBAFX&9&9:;Q?"5"56<<>LLaPrK   c                
   SSK Jn  U" 5       U" 5       U" 5       U" 5       4u  p#pEU" 5       U" 5       U" 5       U" 5       4u  pgpSUl        SUl        SUl        SUl        SUl        SUl        S	Ul        SU	l        S
U	l        SUR                  l        SUR                  l        SUR                  l        SUR                  l        SUR                  l        SUR                  l        SUR                  l        SU	R                  l        [        5       n
U
R                  X#XE/5        [        5       nUR                  XgX/5        U
R                  U5      nU R                  [        U5      S5        UR                  US   5      R                  5       nU R                  X5        U
R                  U5      nU R                  X5        UR                  U5      nU R                  [        U5      S5        U R                  US   U	5        g )Nr   )r<   r  r  r  r	  GAr  r3   r  r,  rN   r7   r5   )music21.noter<   stepr=   r   r2   r   rX   simultaneousAttacksr   r   rl  r  r  playingWhenAttackedallPlayingWhileSounding)rB   r<   n11n12n13n14n21n22n23n24stream1stream2attackedTogetherrw  r  r  s                   rH   testTwoStreamMethodsTest.testTwoStreamMethodsB  s   % $?3 $?3
"#$""$#$(#+,(#+,"66w?-.2../?/BCIIKh$%99#>)/")"A"A#"F45q9-a0#6rK   c                	   [         R                  " S5      nUR                  S   R                  SS5      nU R	                  [        UR                  [        5      5      S5        UR                  [        5      R                  5       nU R	                  [        UR                  5       R                  [        R                  5      5      S5        U R	                  [        UR                  5       R                  [        R                  5      5      S5        U R	                  [        UR                  5       R                  [        R                  5      5      S5        UR                  S   nUR                  [        5      S   nU R	                  [!        [#        UR$                  5      5      S5        U R	                  [        UR                  5       5      S5        UR'                  S5      nU R	                  [!        [#        UR$                  5      5      S5        U R	                  [        UR                  5       5      S5        UR                  [        5      S   nU R	                  [!        [#        UR$                  5      5      S5        U R	                  [        UR                  5       5      S5        [)        5       n[+        S5       HE  n[        5       n	[,        R.                  " 5       n
U	R1                  U
S5        UR3                  U	5        MG     UR                  S	S5      nU R	                  [        U5      S	5        [         R                  " S5      nUR                  S	S5      nU R	                  [        US   [        R                     5      S5        U R	                  [        US   [        R                     5      S5        U R	                  [        US	   [        R                     5      S5        U R	                  [        US   [        R                     5      S5        U R	                  [        US   [        R                     5      S5        U R	                  [        US   [        R                     5      S5        U R	                  [        US	   [        R                     5      S5        U R	                  [        US   [        R                     5      S5        g )
Nbach/bwv324.xmlr7   rq   r   r5   r   r3   z.[<music21.note.Note B>, <music21.note.Note D>]r6   )r   r   r   measuresr   r   rt  r   r  r  r   rk  r   r;   r   r  r   r   r   r  r   rW   r   r<   r   rX   )rB   rC   rE   unused_bMeasureFirstr  mExRawmExri   ru   r   r   rj   s               rH   testMeasureRangeTest.testMeasureRangep  s   LL*+GGAJ1%Q11':;Q?  !33G<BBDQYY[;;  !	# 	QYY[;;! "#$	& 	QYY[;;DIIFGK WWQZ&&w/2T&,,/02bcV^^-.2 jjmT#))_-/_`S[[]+Q/ &&w/2T&,,/02bcV^^-.2 H1XE	A		ANN1a HHQK	  JJq!Q# LL*+JJq!QqT$))_-q1QqT$))_-q1QqT$))_-q1QqT$))_-q1QqT#"2"234a8QqT#"2"234a8QqT#"2"234a8QqT#"2"234a8rK   c                   [         R                  " S5      nUR                  S   R                  5       nU R	                  [        [        UR                  5       5      5      / SQ5        [         R                  " S5      nUR                  5       nU R	                  [        [        UR                  5       5      5      / SQ5        UR                  5        H   u  p4U R	                  [        U5      S5        M"     [         R                  " S5      nUR                  S   R                  5       R                  [        R                  /5      nU R	                  [        [        UR                  5       5      5      / SQ5        U R	                  [        US   5      S5        U R	                  [        US   5      S5        UR                  S   R                  [        5      S	   nUR                  [        R                  /5      nU R	                  [        [        UR                  5       5      5      S/5        UR                  S   R                  [        5      S
   nUR                  [        R                  /5      nU R	                  [        [        UR                  5       5      5      S/5        UR                  5       R                  S/5      nU R	                  [        UR                  5       5      / SQ5        g )Nr  r   )	r   r          @      (@      0@r        8@      A@      C@rq   r   z'[<music21.stream.Measure 1 offset=0.0>]r   z'[<music21.stream.Measure 2 offset=4.0>]r5   r6   r  r<   )r   r   r   measureOffsetMapr   r   r   keysitemsr   r  r   r<   r   rt  r   )rB   rC   
mOffsetMap
unused_keyvaluer0  r1  s          rH   testMeasureOffsetMapTest.testMeasureOffsetMap  s9   LL*+WWQZ002
Z__%6 78L	N LL*+'')
Z__%6 78L	N ",!1!1!3JSZ+ "4
 LL*+ WWQZ'')::DII;G
Z__%6 78L	N 	Z_-/XYZ_-/XY WWQZ**73A6(($))5
 	Z__%6 783%@WWQZ**73A6(($))5
Z__%6 783%@YY[116(;

 12L	NrK   c                   [         R                  " S5      nUR                  S   nSnU R                  [	        UR                  5       R                  5      U5        / SQnUR                  5       nU R                  [        [        UR                  5       5      5      U5        UR                  5       R                  [        [        R                  /5      nU R                  [        [        UR                  5       5      5      U5        UR                  S   R                  5       nU R                  [	        UR                  5       R                  5      US-
  5        UR                  5       R                  S   R                  [        5      R                   nU R                  US5        UR                  5       R                  S   R                  [        5      R                   nU R                  US5        UR                  5       R                  S   R                  [        5      R                   nU R                  US	5        UR                  [        /5      nU R                  [        UR                  5       5      U5        g )
Nzbach/bwv4.8r5   4   )r   r   r         "@      *@r  r  r        <@      ?@      @@      B@r  g      F@r6   r7   r   r<  rq   )r   r   r   r   r   r  r  r  r   r   r  r   r   r<   r  getContextByClassr+  )rB   rC   altocountedAltoNotescorrectMeasureOffsetMapr  altoPostTiemNos           rH   testMeasureOffsetMapPostTie Test.testMeasureOffsetMapPostTie  s   LL' wwqzT\\^99:<LM#G $$&TYY[ 124KL ||~../CDTYY[ 124KL ggaj**,[002@@ACSVWCWX !!#11!4FFwOVVa !!#11!4FFwOVVa !!#11"5GGPWWa  ++WI6diik*,CDrK   c                   / SQS-  nSn[        5       nU H1  n[        R                  " U5      nSUl        UR	                  U5        M3     X#l        UR                  5         UR                  SSS9nUR                  SS/SS	9  U R                  UR                  S5        U R                  UR                  S
5        [        R                  " 5       nUR                  U5      R                  S5      n[        5       n	Sn
Sn[!        S5       H_  n[        5       nU H1  n[        R                  " U5      nSUl        UR	                  U5        M3     X#l        U	R#                  U5        X*-  nMa     UR                  U5      R                  S5      ng)@
Test output tests above just by calling the musicxml attribute
r   rq         @r   T)searchContextr  r   r-  )refStreamOrTimeRanger        Y@r  r   r6   N)r   r   r<   r   rX   r   transferOffsetToElementsr  	makeRestsr   lowestOffsetrS  r)   r  r   r  rW   r@   )rB   rC   r   rv   r   r   r   r  r  r   r   unused_xs               rH   "testMusicXMLGenerationViaPropertyA'Test.testMusicXMLGenerationViaPropertyA  sT    .1
HI		)$A!AOHHQK  	""$""$"O	!S4@+.,,.IIaL''0	 H
aHA	IIi("%  "HHHQK)J ! IIaL''0	rK   c           
        [         R                  " 5       nSUl        [        5       nUR	                  U[        [        SSS5      5      5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S	5      5        UR                  S
[        R                  " S5      5        [        R                  " 5       nUR                  U5      R                  S5      ng)r  r7   r   r{   r|   r}   rh   r~   r   r   r   r   r  Nr  r  s        rH   "testMusicXMLGenerationViaPropertyB'Test.testMusicXMLGenerationViaPropertyB.  s     IIKH	q$uQQ/01	E''./	U((/0	E''/0	U((/0	U((01,,.IIaL''0	rK   c                x   / SQS-  n[        5       nSnSnSn[        S5       H_  n[        5       nU H1  n[        R                  " U5      nSUl        UR                  U5        M3     XEl        UR                  U5        XC-  nMa     [        R                  " 5       n	U	R                  U5      R                  S5      n
g)	r  r   rq   r   r   Nr   r   r  )r   rW   r   r<   r   rX   r   r@   r)   r  r   r  )rB   rC   r   r   r   rv   unused_partr   r   r  r  s              rH   "testMusicXMLGenerationViaPropertyC'Test.testMusicXMLGenerationViaPropertyC@  s    
 .1H
 8KA	IIi("%  "HHHQK)J $ ,,.IIaL''0	rK   c                   [        5       n[        5       n[        R                  " 5       n[        R                  " 5       nSUl        UR                  U5        UR                  U5        UR                  SU5        UR                  [        R                  5      nU R                  U[        R                  5        [        5       nUR                  U5        UR                  [        R                  5      nU R                  U5        U R                  XaR                  5        U R                  X!R                  5        UR                  [        R                  5      nU R                  U[        R                  5        UR                  SS9nU R                  [!        U5      S5        U R                  [!        UR#                  5       R%                  [&        5      5      S5        UR)                  5       R%                  [&        5      R+                  5       nU R                  [!        U5      S5        U R                  UR+                  5       [        R                  5        U R                  [-        US   5      S5        U R                  US   [        R                  5        UR%                  [        R                  5      nU R                  [!        U5      S5        g	)
1
Testing getting clefs from higher-level streams
rQ   r   regularfinalBarliner6   r5   r7   !<music21.meter.TimeSignature 4/4>N)r   r   r<   r   AltoClefpriorityrX   r@   r  r  rm  r  r   r    r  r   r   lastrt  r   r   r  r   )	rB   rk   rl   r
  rG  r  r  	sMeasuresmadeMeasures	            rH   testContextNestedATest.testContextNestedAX  s    XXYY[]]_
		"
		"
		!R ##DII.dDMM2 X
		" ##DII.$ 	b((#b((# ##DII.dDMM2OOO;	Y+Y^^-@@IJAN'')<<WEKKM[)1-k//14==A[^,.QR 	k!ndii8 ++DII6TA&rK   c                <   [        5       nSUl        [        R                  " 5       nUR	                  U5        [        5       nSUl        UR	                  U5        [
        R                  " 5       nSUl        UR                  SU5        UR                  [
        R                  5      nU R                  U[
        R                  5        UR                  5       nSUl        UR                  [
        R                  5      nU R                  U[
        R                  5        g)r  innerStreamouterStreamrQ   r   
sInnerFlatN)r   r   r   r<   rX   r   r  r  r@   r  r  rm  r  )rB   sInnerr
  sOuterrG  r  r  s          rH   testContextNestedBTest.testContextNestedB  s     !	YY[b!	f]]_a ''		2dDMM2 ^^%
$
 ++DII6dDMM2rK   c                   SSK Jn  [        SS9n[        R                  " 5       nUR                  U5        [        SS9nUR                  U5        [        R                  " 5       nSUl        UR                  SU5        UR                  [        R                  5      nU R                  U[        R                  5        UR                  S[        R                  /5      nU R                  U[        R                  5        UR                  5       R                  S[        R                  /5      nU R                  U[        R                  5        U R                  UR!                  U5      S5        U R#                  [$        R&                  UR                   UR                  5       5        UR                  [        R                  UR(                  S9nU R                  U[        R                  5        U R                  UR                  [        R                  5        UR                  5       R                  [        R                  5      nU R                  U[        R                  5        g	)
r  r   )ElementSearchrk   )r   rl   rQ   r   )getElementMethodN)music21.common.enumsr
  r   r   r<   rX   r   r  r  r@   r  r  rm  getElementAtOrBeforer  r   elementOffsetr   r    SitesExceptionALL)rB   r
  rk   r
  rl   rG  r  s          rH   testContextNestedCTest.testContextNestedC  s    	7t_YY[
		"t_
		"]]_
		!R ##DII.dDMM2 &&q499+6dDMM2 zz|00TYYK@dDMM2 	))"-s3%..0@0@"**,O##DII@Q@Q#RdDMM2bggt}}5 zz|--dii8dDMM2rK   c                V   [         R                  " 5       n[         R                  " 5       n[        5       nSUl        [        5       nSUl        [	        5       nSUl        UR                  U5        UR                  U5        UR                  SU5        UR                  SU5        U R                  UR                  U5        [        R                  " 5       nSUl        UR                  SU5        U R                  UR                  U5        UR                  [        R                  5      nU R                  U[        R                  5        U R                  UR                  U5        UR                  [        R                  5      nU R                  U[        R                  5        [        R                  " 5       nSUl        UR                  SU5        UR!                  [        R                  5      nU R                  US   [        R                  5        UR                  [        R                  5      nU R                  U[        R                  5        UR#                  5       R!                  [        R                  5      nU R                  US   [        R                  5        [$        R&                  " UR#                  5       5      n	U	R!                  [        R                  5      nU R                  US   [        R                  5        UR#                  5       R                  [        R                  5      nU R                  U[        R                  5        UR#                  5       n
SU
l        [$        R&                  " U
5      nSUl        U R)                  UR                  [        R                  5      5        UR                  [        R                  5      nU R                  U[        R                  5        U
R                  [        R                  5      nU R                  U[        R                  U5        U R+                  XSR,                  R/                  5       5        UR1                  5       nU R                  US   R                  [        R                  5        UR1                  5       nU R                  US   R                  [        R                  5        [$        R&                  " U5      nUR!                  [2        5      S   R1                  5       nU R                  US   R                  [        R                  5        UR                  S[        R4                  " 5       5        UR!                  [        R                  5      nU R                  US   [        R4                  5        g	)
r  rk   rl   r  r   rQ   s1Flat
s1FlatCopyr5   N)r   r<   r
   r   r	   rX   r@   r  r  r   r  r  r  r  rm  	TenorClefrt  r  rY   rZ   rF  r   r    getr  r   BassClef)rB   r
  r  rk   rl   r  acr  tenorC
s2FlatCopyr  r  
s1Measures
s2Measuress3copys                  rH   testContextNestedDTest.testContextNestedD  s    YY[YY[VV	
		"
		"aabmmV,]]_a 	bmmV,##DII.dDMM2bmmV,##DII.dDMM2 !
		!V$$TYY/d1gt~~6 ##DII.dDMM2 zz|..tyy9d1gt~~6 ]]2::<0
,,TYY7d1gt~~6 zz|--dii8dDMM2 	]]6*
$
Z99$))DE++DII6dDMM2''		2dDMM48fhhlln-__&
 	jm00$--@
 __&
jm00$..A v& ..v6q9FFH
jm00$..A 			!T]]_%$$TYY/d1gt}}5rK   c                   / SQS-  nSnSn[        S5       GHG  n[        5       nU H1  n[        R                  " U5      nSUl        UR                  U5        M3     X5l        U R                  UR                  S5        UR                  5         U R                  UR                  U5        UR                  SS	9  UR                  [        R                  5      R                  5       nU R                  [        U5      S
5        U R                  UR                  R                  U5        U R                  US
   R                  UR                  R                  5        X2-  nGMJ     g )Nr   rq   r   r6   r   r   r   Tr  r5   )rW   r   r   r<   r   rX   r   r   r  r  r  rt  r  streamr   r   )	rB   rC   r   r   r  rv   r   r   subs	            rH   testMakeRestsATest.testMakeRestsA_  s   -1
 8KA	IIi("%  "HQ^^Q/&&(Q^^Z8KKK% &&tyy188:CSXq)S\\77D QqT[[#,,*D*DE)J3 $rK   c                   [        5       n[        5       n[        R                  " S5      Ul        UR                  S[        R                  " 5       5        [        5       nUR                  S[        R                  " 5       5        U R                  UR                  5        UR                  SU5        UR                  SU5        UR                  SSSS9  U R                  UR                  5        [        UR                  5       R                   Vs/ s H  oDR                  XDR                  4PM     sn5      nU R!                  US5        [        UR                  5        Vs/ s H  oDR                  XDR                  4PM     sn5      nU R!                  US5        [        [#        UR                  5       R                  5      5      nU R!                  US	5        [        UR                  5       R                   Vs/ s H  oDUR                  4PM     sn5      nU R!                  US
5        [$        R&                  " 5       nUR)                  U5      R+                  S5      ng s  snf s  snf s  snf )Nr   r6   r5   r   rq   T)r  fillGapstimeRangeFromBarDurationz[(0.0, <music21.note.Rest quarter>, <music21.duration.Duration 1.0>), (1.0, <music21.note.Note C>, <music21.duration.Duration 1.0>), (2.0, <music21.note.Rest half>, <music21.duration.Duration 2.0>)]z[<music21.note.Rest half>, <music21.note.Note C>, <music21.note.Rest quarter>, <music21.note.Rest quarter>, <music21.note.Note C>, <music21.note.Rest half>]an  [(<music21.note.Rest half>, <music21.duration.Duration 2.0>), (<music21.note.Note C>, <music21.duration.Duration 1.0>), (<music21.note.Rest quarter>, <music21.duration.Duration 1.0>), (<music21.note.Rest quarter>, <music21.duration.Duration 1.0>), (<music21.note.Note C>, <music21.duration.Duration 1.0>), (<music21.note.Rest half>, <music21.duration.Duration 2.0>)]r  )r   r   r   r;   r   r@   r   r<   r   r   r  r   r  r  r   r   r   r   r)   r  r   r  )rB   r   r0  r1  r   matchr  r  s           rH   testMakeRestsBTest.testMakeRestsB~  s   HY ..u5
		!TYY[!Y
		!TYY[!$	B	B	D4$O$ 

8R8RS8R1hh::.8RST_	`
 

E1hh::.EF_	` D2234 !W 	X aiik.G.GH.G_.GHI[	\ ,,.IIaL''0	9 T F Is   !I !!I%:I*c                   [        5       n[        5       n[        R                  " S5      Ul        UR                  S[        R                  " 5       5        [        5       nUR                  S[        R                  " 5       5        UR                  U5        UR                  U5        U R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  UR                  R                  S5        X#4 H  nUR                  SSS9  M     U R                  UR                  R                  S	5        U R                  UR                  R                  S	5        U R                  UR                  R                  S
5        UR                  SS9  U R                  UR                  R                  S5        g )Nr   r6   r5   r   r   r   Tr  r(  r         @r  r  )r
   r   r   r;   r   r@   r   r<   rX   r   r   r   r  )rB   rv   r0  r1  r   s        rH   testMakeRestsInMeasuresTest.testMakeRestsInMeasures  sL   FY ..u5
		!TYY[!Y
		!TYY[!		22C822C81137AKKtKD  	22C822C8 	1137	D!1137rK   c                f   [        5       n[        [        R                  " S5      SS9n[	        [
        R                  " SS95      n[	        [
        R                  " SS95      nUR                  SU5        UR                  SU5        UR                  SU5        UR                  SS	S
9nU R                  [        UR                  5       R                  [
        R                  5      5      S5        U R                  [        UR                  5       R                  [
        R                  5      5      S5        [        U/5      nUR                  SS	S
9nU R                  [        UR                  5       R                  [
        R                  5      5      S5        U R                  [        UR                  5       R!                  S5      R                  [
        R                  5      5      S5        U R                  [        UR                  5       R                  [
        R                  5      5      S5        g )Nr   r5   r*        @rZ        @r   FTr-  r6   )r
   r   r   r;   r   r   r<   r@   r  r   r   r  rt  r  r   r	   r  )rB   rv   r   r7  r8  r  scs          rH   !testMakeRestsInMeasuresWithVoices&Test.testMakeRestsInMeasuresWithVoices  s~   FE''.q94993/0499401	B	B	A{{54{H 	TZZ\<<TYYGH!LT\\^>>tyyIJAN A3Z||ED|ITZZ\<<TYYGH!LTZZ\11!4GG		RSUVWT\\^>>tyyIJANrK   c                   [        [        R                  " S5      SS9nUR                  S[        R
                  " SS95        UR                  S[        R
                  " SS95        UR                  SS	9  U R                  [        UR                  [        R                  5      5      S5        U R                  [        U[        R                     5      S
5        g )Nr   r5   r*  r   r2  rZ  r3  Tr  r6   )r   r   r;   r@   r   r<   r  r   r   rt  r  rB   r   s     rH   testMakeRestsByMakingVoices Test.testMakeRestsByMakingVoices  s    E''.q9	DIIC01	DIID12	T" 	Q11$))<=qAQtyy\*A.rK   c                   [        5       nUR                  S[        R                  " 5       5        UR                  S[        R
                  " S5      5        UR                  [        R                  " SSS95        UR                  [        R                  " SSS95        UR                  SS9  U R                  [        UR                  [        5      5      S	5        U R                  UR                  S
5      R                  S   R                   S5        U R                  UR                  S	5      R                  S   R                   S5        g )Nr   r/   rf   r   rZ  rg   Tr  r6   r5   r  r  )r   r@   r   rj  r   r;   rX   r   r<   r  r   r   rt  r   r  r   r   )rB   sScrs     rH   testMakeMeasuresInPlaceTest.testMakeMeasuresInPlace  s    xAt()Au**512DIId#67DIId#67$'T44W=>Ba..q166<a..q166<rK   c                   [         R                  " S5      n[        5       nUR                  S[        R
                  " S5      5        UR                  5       R                  U5      R                  SS9nU R                  [        UR                  [        5      5      S5        [        5       nUR                  S[        R
                  " S5      5        UR                  5       R                  U5      R                  SS9nU R                  [        UR                  [        5      5      S5        [        5       nUR                  S[        R
                  " S	5      5        UR                  5       R                  U5      R                  SS9nU R                  [        UR                  [        5      5      S
5        [        5       nUR                  S[        R
                  " S5      5        UR                  5       R                  U5      R                  SS9nU R                  [        UR                  [        5      5      S5        [        5       nUR                  S[        R
                  " S5      5        UR                  5       R                  U5      R                  SS9nU R                  [        UR                  [        5      5      S5        g)z
Testing making measures of various sizes with a supplied single element meter stream.
This illustrates an approach to partitioning elements by various sized windows.
r  r   rh   Fr     r|  rs  r/   r;  z12/4rq   z48/4r5   N)r   r   r   r@   r   r;   r  r  r  r   r   rt  r   )rB   sBachmeterStreamsPartitioneds       rH   testMakeMeasuresMeterStream Test.testMakeMeasuresMeterStream  s/   
 ./h1e11%89}}33K@II J \<<WEFKh1e11%89}}33K@II J \<<WEFKh1e11%89}}33K@II J \<<WEFKh1e11&9:}}33K@II J \<<WEFJh1e11&9:}}33K@II J \<<WEFJrK   c                   [        5       nUR                  [        R                  " SS9S5        UR	                  S[
        R                  " S5      5        UR                  5       nU R                  [        UR                  [        5      R                  5       R                  5      S5        UR                  SSS	9nUR                  [        5       Vs/ s H  n[        UR                  5      PM     nnU R                  U/ S
Q5        [        R                  " S5      n[        R                  " S5      nUR                  XgS	9nUR                  [        5       Vs/ s H  n[        UR                  5      PM     nnU R                  U/ SQ5        UR                  SSS	9n	U	R                  [        5       Vs/ s H  n[        UR                  5      PM     nnU R                  U/ SQ5        gs  snf s  snf s  snf )z5
Test makeMeasures with optional barline parameters.
r   rZ  r   r   z5/8 <music21.bar.Barline type=final>dasheddouble)innerBarliner  )!<music21.bar.Barline type=dashed>rK  rK  !<music21.bar.Barline type=double>noneshort)<music21.bar.Barline type=none>rO  rO  z <music21.bar.Barline type=short>Nr  r  r  r  )r   r   r   r<   r@   r   r;   r  r   r   rt  r   r  rightBarliner   Barline)
rB   r   barred1barred2r   r)  bar1bar2barred3barred4s
             rH   testMakeMeasuresWithBarlines!Test.testMakeMeasuresWithBarlines"	  s    H	tyys3R8	E''./ .."**7388:GGH.	0
 ..hX.N++G464 *+Q^^$4 	 6 !F 	G {{6"{{7#..d.F ++G464 *+Q^^$4 	 6 !E 	F ..d.F++G464 *+Q^^$4 	 6 @A1666s   G+G05G5c                   [        5       nUR                  [        R                  " S5      5        [        R
                  " S5      nUR                  SU5        UR                  SS9  U R                  [        US   5      S5        g )Nr/   FREEZEr7   Tr  
Expressionr5   )
r   rX   r   r;   r   TextExpressionr@   r  r   r   )rB   r   r  s      rH   %testMakeMeasuresLastElementNoDuration*Test.testMakeMeasuresLastElementNoDurationL	  se    H	$$U+,((2	C	t$Q|_-q1rK   c                   [        5       n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      nUR                  SU5        UR                  SU5        UR                  SU5        U R	                  [        U5      S5        U R	                  UR                  U5        UR                  U5        U R	                  [        U5      S5        U R	                  UR                  S	5        S
nU R                  [        U5         UR                  S5        S	S	S	5        g	! , (       d  f       g	= f)z)
Test removing components from a Stream.
rr   r   rC   r   r}   r3   r7   r6   Nz9clef.TrebleClef is not a Music21Object; got <class 'str'>zclef.TrebleClef)
r   r   r<   r@   r   r   r  removeassertRaisesRegex	TypeError)rB   r   r
  r  r  expecteds         rH   
testRemoveTest.testRemoveT	  s     HYYs^YYt_YYs^	B	R	BQ#*	Q#-N##Ix8HH&' 988s   D55
Ec                   [        5       nUR                  [        R                  " 5       S5        UR                  [        R
                  " 5       S5        UR                  [        R                  " 5       S5        U R                  [        U5      S5        UR                  S5        U R                  [        U5      S5        U R                  [        UR                  5      S5        UR                  [        R                  5        U R                  [        U5      S5        U R                  [        UR                  5      S5        UR                  S/5        U R                  [        UR                  5      S5        g )Nr6   r   r  rq   r   r   )r   r   r   r  r   r<   rj  r   r   removeByClassr   r  rB   r   s     rH   testRemoveByClassTest.testRemoveByClassn	  s    H	t}}*	tyy{A&	t(!,Q#	
#Q#QWWq)			"Q#QWWq)	)*QWWq)rK   c                   [        5       n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      nUR                  SU5        UR                  SU5        U R	                  [        U5      S5        UR                  X$5        U R	                  US   US   /XC/5        UR                  X55        U R	                  US   US   /XE/5        UR                  XR5        U R	                  US   US   /XB/5        U S	U 3nU R                  [        U5         UR                  XT5        S
S
S
5        g
! , (       d  f       g
= f)z*
Test replacing components from a Stream.
rr   r   rC   ri   r   r3   r6   r5   z already in N)	r   r   r<   r@   r   r   r  rc  r   )rB   r   r
  r  r  r  re  s          rH   testReplaceTest.testReplace~	  s#    HYYs^YYt_YYs^YYs^	B	BQ#			"!A$!x0			"!A$!x0			"!A$!x0TaS)##OX>IIb ?>>s   E
E,c                f   [         R                  " S5      nUR                  R                  5       nUR	                  5       R                  [        R                  5      R                  5       nU R                  U[        R                  5        [        R                  " 5       nUR	                  5       R                  X4SS9  UR                  R                  5       R	                  5       R                  [        R                  5      R                  5       nU R                  U[        R                  5        g )Nr  T
allDerived)r   r   r   r  r  rt  r   r  rm  rj  r  r  )rB   rA  partSopranorG  rH  cTests         rH   testReplaceA1Test.testReplaceA1	  s    ./kk'')  "55dii@FFHb$//2 ]]_%%b%> !!#++-@@KQQSeT]]3rK   c                T   [         R                  " S5      n[         R                  " S5      n[        5       n[        R                  " U5      n[        R                  " U5      n[        5       nUR                  SU5        UR                  SU5        UR                  SU5        UR                  SU5        UR                  XSS9  U R                  US   U5        U R                  US   R                  U5      S5        U R                  US   U5        U R                  US   R                  U5      S5        U R                  US   U5        U R                  US   R                  U5      S5        U R                  US   U5        U R                  US   R                  U5      S5        g )	Nrr   r   r   r}   r   r   Trq  )
r   r<   r   rY   rZ   r@   r  r  r   r  )rB   r
  r  s0rk   rl   r  s          rH   testReplaceBTest.testReplaceB	  sZ   YYs^YYt_X]]2]]2X
		!R
		"b
		"b
		"b


2d
+ 	beR A..r2A6 	beR A..r2B7 	beR A..r2B7 	beR A..r2B7rK   c                   [         R                  " S5      R                  S   R                  SS5      nSUl        UR                  5       n[        UR                  R                  5       5      nU R                  US   U5        UR                  [        R                  5      R                  5       nU R                  UR                  S5        [        R                  " S5      n[!        5       nUR#                  SU5        UR%                  XESS	9  UR                  [        R                  5      R                  5       nU R                  Xu5        U R                  UR                  S5        UR'                  5       R                  [        R                  5      R                  5       nU R                  X5        U R                  UR                  S5        U R                  US   U5        g )
Nciconia/quod_jactaturr   r5   r6   measureExcerptrQ   Trq  )r   r   r   r  r   r  r   
derivationchainr  rt  r   rk  r  r   sharpsr   r@   r  r   )	rB   qjqj_flatdck1k3flats
mUnrelatedkWhichkWhich2s	            rH   testReplaceDerivedTest.testReplaceDerived	  sl   \\1288;DDQJ **,'$$**,-beR ''(8(89??AB'""2& Y
!R  	5++C,<,<=CCEf&+**,11#2B2BCIIKg', 	jmR(rK   c                N   [         R                  " 5       n[        5       nUR                  U5        [        5       nUR                  U5        UR	                  5       n[
        R                  " U5      n[
        R                  " UR	                  5       5      nUR                  5       ng N)r   r<   r   r@   r  rY   rZ   r  )rB   r
  rk   rl   s2Flat	unused_s3r  unused_s3Measuress           rH   testDoubleStreamPlacementTest.testDoubleStreamPlacement	  sq    YY[X
		"
 X
		"
  MM&)	]]2::<(OO-rK   c                .   [        5       nS H/  n[        R                  " 5       nX#l        UR	                  U5        M1     UR                  5       nU R                  UR                  S5        U R                  UR                  S5        [        5       nS H/  n[        R                  " 5       nX#l        UR	                  U5        M1     UR                  5       nU R                  UR                  S5        U R                  UR                  S5        [        5       nS H/  n[        R                  " 5       nX#l        UR	                  U5        M1     UR                  5       nU R                  UR                  S5        U R                  UR                  S5        g	)
z8
Get a time signature based on components in a measure.
)r6   r7   r6   r+  rq   r   r   r   r   )r   r   r   N)	r   r   r<   r   rX   bestTimeSignaturer   r  denominator)rB   r   qlr   rD   s        rH   testBestTimeSignatureTest.testBestTimeSignature
  s0    IB		A OHHQK    "q)+IB		A OHHQK    "q)+IB		A OHHQK    "q),rK   c                   [        5       n[        R                  " S5      n[        R                  " S5      nUR                  U5        UR                  U5        UR	                  [        R                  5      nU R                  US   U5        U R                  US   U5        [        R                  " S5      n[        5       n[        R                  " 5       nSUl	        UR                  U5        X%l
        [        5       n[        R                  " 5       nSUl	        UR                  U5        [        5       nUR                  U5        UR                  U5        UR	                  [        R                  5      nU R                  US   U5        UR                  5       R	                  [        R                  5      nU R                  US   U5        UR                  [        R                  5      nU R                  XB5        g)'
Searching contexts for key signatures
r5   r   r7   rq   N)r   r   rk  rX   rt  r   r   r   r<   r   keySignaturer  r  r  )	rB   r   ks1ks2r  r0  r
  r1  r  s	            rH   testGetKeySignaturesTest.testGetKeySignatures!
  s{    Hq!r"		##C$4$45a#&a#& q!YYY[
		"YYY[
		"H		 $$S%5%56d1gs# yy{--c.>.>?d1gs# ##C$4$45d rK   c                `   [         R                  " S5      n[         R                  " S5      n[        5       n[        R                  " 5       nSUl        UR                  U5        Xl        [        5       n[        R                  " 5       nSUl        UR                  U5        [        5       n[        R                  " 5       nSUl        UR                  U5        X'l        [        5       n	U	R                  U5        U	R                  U5        U	R                  U5        UR                  [         R                  5      n
U R                  U
S   U5        UR                  [         R                  5      n
U R                  X5        UR                  [         R                  5      n
U R                  X5        g)r  r5   r7   rq   r   N)r   rk  r   r   r<   r   rX   r  r   rt  r  r  )rB   r  ks3r0  r
  r1  r  m3r  r   r  s              rH   !testGetKeySignaturesThreeMeasures&Test.testGetKeySignaturesThreeMeasuresL
  s7   
 q!q!YYY[
		"YYY[
		"YYY[
		"H			 $$S%5%56d1gs# ##C$4$45d  ##C$4$45d rK   c                B   [        5       n[        R                  " S5      n[        R                  " S5      n[        R                  " 5       n[        R
                  " / SQ5      n[        R                  " S5      nUR                  U5        UR                  U5        UR                  U5        UR                  U5        UR                  U5        UR                  SS9  U R                  UR                  R                  R                  5        U R                  UR                  S   R                  R                  5        U R                  UR                  S   R                  R                  5        U R                  UR                  R                  S5        [        5       n[        R                  " S5      n[        R                  " S	5      n[        R                  " 5       n[        R
                  " / SQ5      nUR                  U5        UR                  U5        UR                  U5        UR                  U5        UR                  S
SS9  U R                  UR                  S   R                  S5        U R                  UR                  S   R                  S5        g)z!
Test accidental display setting
rt   a4)a#2r  a5Tr  r5   r6   NrC   F)cautionaryPitchClassr  )r   r   r<   r  r   r  rX   makeAccidentalsr   r   r]   displayStatusr~  r  r   )rB   r   r
  r  r  rG  r  s          rH   testMakeAccidentalsATest.testMakeAccidentalsAv
  s    HYYt_YYt_YY[[[,-YYt_						$'++99:

100>>?

100>>? 	"((--t4HYYt_YYs^YY[[[,-					udC 	A1148A1148rK   c                   [         R                  " S5      nUR                  S   R                  [        5      S   nUR                  [
        R                  5      nU R                  [        US   R                  5      S5        U R                  [        US   R                  S   R                  R                  5      S5        [         R                  " S5      nUR                  S   R                  [        5      S   nUR                  [
        R                  5      nU R                  [        US   R                  5      S	5        U R                  [        US   R                  S   R                  5      S
5        g )Nzmonteverdi/madrigal.5.3.rntxtr   !   r5   zO(<music21.pitch.Pitch B-4>, <music21.pitch.Pitch D5>, <music21.pitch.Pitch F5>)Falsezmonteverdi/madrigal.5.4.rntxtI   zN(<music21.pitch.Pitch C5>, <music21.pitch.Pitch E5>, <music21.pitch.Pitch G5>)r  )r   r   r   rt  r   r   r  r   r   r~  r]   r  )rB   r   m34ri   m74s        rH   testMakeAccidentalsBTest.testMakeAccidentalsB
  s    LL89ggaj++G4R8""5;;/QqT\\* -T 	U 	QqT\\!_77EEFPLL89ggaj++G4R8""5;;/QqT\\*:	; 	QqT\\!_778&ArK   c                j   [        5       nUR                  [        R                  " S5      S5        UR                  [        R                  " S5      S5        [        5       nUR                  [        R                  " S5      S5        [	        5       nUR                  X/5        U R                  [        UR                  5       R                  5      S5        U R                  [        UR                  5       R                  SS  5      S5        UR                  5       R                  SS   Vs/ s H"  n[        UR                  R                  5      PM$     nnU R                  US/S-  5        UR                  5       R                  SS   Vs/ s H"  oDR                  R                  R                  PM$     nnU R                  U/ SQ5        UR                  S	S
9  UR                  5       R                  SS   Vs/ s H"  oDR                  R                  R                  PM$     nnU R                  U/ SQ5        [	        5       nUR                  S[         R"                  " S5      5        [        R                  " SSS9n[        R                  " SSS9n	UR                  US5        UR                  U	S5        UR%                  5       nUR                  5       R                   Vs/ s H"  oDR                  R                  R                  PM$     nnU R                  U/ SQ5        g s  snf s  snf s  snf s  snf )Nf4r6   f#4rq   r   r   sharp)NNNNNNTr  )TFTFFFr   rh   zE-4UUUUUU?rZ  F#4UUUUUU?r}   r+  )r5   r   r   r   r   r   r5   r   r   r   r5   r5   r   r   r5   r   r   )r   r   r   r<   r
   rX   r   r   r  r   r   r   r]   r  r  r@   r   r;   r	  )
rB   r0  r1  exr   accdisplayrv   tuplet1tuplet2s
             rH   testMakeAccidentalsCTest.testMakeAccidentalsC
  sp    Y
		$+
		%(!,Y
		%(!,V
		2(RZZ\//0!4RZZ\//34a8 13

0B0B120FG0F1s177%%&0FGwi!m,=?ZZ\=O=OPQPR=ST=S77%%33=ST"FG
 	4(=?ZZ\=O=OPQPR=ST=S77%%33=ST"JKF	E''./))E7))E7	w#	w"^^ >@ZZ\=O=OP=O77%%33=OP #, 	-1 HT U Qs   +)L!)L&8)L+!)L0c                P   [        5       n[        5       nUR                  [        R                  " S5      5        UR                  [
        R                  " SSS95        UR                  [
        R                  " SSS95        SUl        UR                  U5        UR                  SS9  UR                   Vs/ s H  o3R                  R                  PM     nnU R                  USS/5        UR                  S	5      nU R                  [        UR                  5      S
5        g s  snf )Nr   r   r  r1   finalTr  Fr5   rG  )r
   r   rX   r   r;   r   r<   rQ  r	  r~  r]   r  r   r  r   )rB   r  r0  rv   r)  r   s         rH   testMakeAccidentalsDTest.testMakeAccidentalsD
  s    VY
		%%%e,-
		$))Dv./
		$))Dv./!
		"
%57ZZ@Z++Z@u.JJqMQ^^,.PQ As   7D#c                n   [         R                  " SSS9n[         R                  " SSS9n[        U5      n[        U5      n[        X4/5      n[	        U5      nUR                  SS9  U R                  U[         R                     R                  5       R                  R                  R                  S5        g)zr
Making accidentals on a score having a part with measures
should still reiterate accidentals measure by measure.
r   r,  r1   Tr  N)r   r<   r   r
   r	   r  r  r  r   r]   r  )rB   r
  r  r0  r1  rv   r   s          rH   testMakeAccidentalsInScoreTest.testMakeAccidentalsInScore
  s    
 YYt'*YYt'*R[R["N!H	$'a		l'')//::HH$OrK   c           	        / SQn/ SQn/ SQn[        5       nXU4 GHD  n[        R                  " S5      [        R                  " S5      [        R                  " S5      [        R                  " S5      [        R                  " S5      [        R                  " S	5      4 H  n[        5       n[        R
                  " S
5      Ul        Xgl        US-   HV  n[        R                  " U5      n	SU	l
        U	R                  U	R                  R                  5        UR                  U	5        MX     UR                  SS9  UR!                  SS9  UR                  U5        M     GMG     g )N)r  d4r  r  r  r  r  c5)ri   rj   ze-r   rr   za-zb-r  )rs   zd#ze#r   r   rt   zb#c#5r   r6   rq   r+  rQ   r~  r   r   Tr  )r   r   rk  r   r   r;   r   r  r   r<   r   addLyricr   r   rX   r   r  )
rB   scale1scale2scale3r   scalerm  r   rv   r   s
             rH   %testMakeAccidentalsWithKeysInMeasures*Test.testMakeAccidentalsWithKeysInMeasures
  s   A=BHf-E''*C,<,<Q,?''*C,<,<Q,?AQAQRTAU''+- I"'"5"5e"<!#A		!A&*AOJJqww||,HHQK	 #
 D)!!$!/- .rK   c           
        [         R                  " SSS9nUR                  SSS9  UR                  5       R                  n/ SQn[        [        X25      5       H_  u  nu  pVU R                  UR                  R                  R                  UU SUR                  R                  R                   SU 35        Ma     [         R                  " S	SS9nUR                  SSS9  UR                  5       R                  n/ S
Qn[        [        X25      5       H_  u  nu  pVU R                  UR                  R                  R                  UU SUR                  R                  R                   SU 35        Ma     g)zK
tests to make sure that Accidental display status is correct after a tie.
zAtinynotation: 4/4 c#'2 b-2~ b-8 c#'8~ c#'8 b-8 c#'8 b-8~ b-8~ b-8Fr  T)r  cautionaryNotImmediateRepeat)
TTFTFTFFFFz	 failed, z != zEtinynotation: 4/4 c#'2 b-2~ b-8 b-8 c#'8~ c#'8 b-8 c#'8 b-8~ b-8~ b-8)TTFTTFFFFFFN)r   r   r	  r  r   r  zipr   r   r]   r  )rB   bmallNotesdsrb   dsirw  s          rH   testMakeAccidentalsTiesTest.testMakeAccidentalsTies  sL    __O  	5I::<%%O"+C,=">AX^^66DD  !s)HNN,E,E,S,S+TTXY\X]^` #? __S  	5I::<%%V"+C,=">AX^^66DD  !s)HNN,E,E,S,S+TTXY\X]^` #?rK   c                X   [         R                  " S5      nSUR                  R                  l        [        U5      nU R                  UR                  R                  R                  5        UR                  SS9  U R                  UR                  R                  R                  S5        g )ND#neverTr  F)
r   r<   r   r]   displayTyper   r  r  r  r  rB   r   r   s      rH   &testMakeAccidentalsRespectsDisplayType+Test.testMakeAccidentalsRespectsDisplayType3  sw    IIdO)0&1I!'',,::;	$'agg((66>rK   c                   [         R                  " S5      n[        U5      nU R                  [	        S U 5       5      5        UR                  SS9  U R                  [        S U 5       5      5        [         R                  " S5      n[        U5      nU R                  US   R                  R                  5        UR                  SS9  U R                  US   R                  R                  R                  5        UR                  u  pVS Ul        S Ul
        S Ul        S UR                  l        UR                  SS9  U R                  [        S U 5       5      5        [         R                  " S	5      n[        [        R                  " S
5      U/5      nUR                  SS9  U R                  [        S U 5       5      5        g )NzF# A# C#c              3  `   #    U  H$  oR                   R                  R                  v   M&     g 7fr  r   r]   r  .0r   s     rH   	<genexpr>2Test.testMakeAccidentalsOnChord.<locals>.<genexpr>@  s     Iq!WW//==q   ,.Tr  c              3  `   #    U  H$  oR                   R                  R                  v   M&     g 7fr  r  r  s     rH   r  r  B  s     HaGG..<<ar  zF4 F#5r   c              3  `   #    U  H$  oR                   R                  R                  v   M&     g 7fr  r  r  s     rH   r  r  R  s      WFVGG..<<FVr  zF#4 F#5r5   c              3  d   #    U  H&  oR                   R                  R                  S L v   M(     g7f)FNr  r  s     rH   r  r  X  s#     \|!GG..<<E|s   .0)r   r  r   r   anyr  r   allr  r   r]   r  r~  r=   r   rk  )	rB   ri   r   augmented_octaverl   lowhightwo_f_sharpsr  s	            rH   testMakeAccidentalsOnChordTest.testMakeAccidentalsOnChord=  st   KK
#1IIqIIJ	$'HaHHI ;;x0$%*1-33>>?
4((+11<<JJK %,,	
(,%
4(WFVWWX {{9-S%%a(,78
4(\|\\]rK   c                b   [         R                  " S5      nUR                  S5      R                  S[        R
                  " SS95        UR                  SS9  U R                  UR                  S5      R                  R                  5       R                  R                  R                  S5        g )	Ntinynotation: 4/4 f#1~ f#1r5   r   r  Tr  r6   F)r   r   r  r@   r   rk  r	  r  r   r  r   r]   r  rB   rv   s     rH   testMakeNotationTiesKeyless Test.testMakeNotationTiesKeylessZ  sz    OO89			!As//q9:	t$aiil((..066AAOOQVWrK   c                   [         R                  " S5      nUR                  S5      R                  S[        R
                  " SS95        UR                  5       nU R                  UR                  S5      R                  R                  5       R                  R                  R                  S5        [         R                  " S5      nUR                  S5      R                  S[        R
                  " SS95        UR                  5       nU R                  UR                  S5      R                  R                  5       R                  R                  R                  S5        [         R                  " S	5      nUR                  S5      R                  S[        R
                  " SS95        UR                  5       nU R                  UR                  S5      R                  R                  5       R                  R                  R                  S5        [         R                  " S5      nUR                  S5      R                  S[        R
                  " SS95        UR                  5       nU R                  UR                  S5      R                  R                  5       R                  R                  R                  S5        UR                  5       R                   H
  nS Ul        M     UR                  5       nU R                  UR                  S5      R                  R                  5       R                  R                  R                  S5        g )
Nr  r6   r   r5   r  FrQ   Tztinynotation: 4/4 b1~ b1)r   r   r  r@   r   rk  r	  r  r   r  r   r]   r  r  r%   )rB   rv   mader   made_no_tiess        rH   testMakeNotationTiesKeyChange"Test.testMakeNotationTiesKeyChangeb  s@   OO89			!As//q9:~~dll1o++11399DDRRTYZOO89			!As//r:;~~dll1o++11399DDRRTXYOO67			!As//r:;~~dll1o++11399DDRRTXYOO89			!As//r:;~~dll1o++11399DDRRTYZ ""AAE #~~'l**1-3399;AALLZZ\`arK   c                "   [        5       n[        R                  " S5      nUR                  U5        UR                  [        R
                  " S5      5        UR                  [        R
                  " S5      5        UR                   H3  nU R                  UR                  R                  R                  S 5        M5     UR                  SS9  UR                   H2  nU R                  UR                  R                  R                  5        M4     g )Nr~  zB-2B-1Tr  )r   r   rk  rX   r   r<   r   r   r   r]   r  r  r   )rB   r   kr   s       rH   testMakeAccidentalsOctaveKS Test.testMakeAccidentalsOctaveKS  s    HR 		5!"	5!"AQWW//==tD  	
$'AQWW//==> rK   c           
        ^  U 4S jn[         R                  " 5       nSUl        [        5       nUR	                  US5        U" US/ SQ5        U" US/ SQ5        U" US/ SQ5        U" US	/ S
Q5        U" US/ SQ5        [         R                  " 5       nSUl        [        5       nUR                  U[        [        SS5      5      5        U" US/ SQ5        U" US/ SQ5        U" US/ SQ5        U" US/ SQ5        U" US	/ SQ5        U" US/ SQ5        [        5       n[         R                  " 5       nSUl        UR                  U[        [        SSS5      5      5        [         R                  " 5       nSUl        UR                  U[        [        SSS5      5      5        U" US/ SQ5        U" US	/ SQ5        U" US/ SQ5        [        5       n[         R                  " 5       nSUl        UR                  U[        [        SSS5      5      5        [         R                  " 5       nSUl        UR                  U[        [        SSS5      5      5        U" US/ SQ5        U" US	/ SQ5        U" US/ S Q5        U" US!/ S"Q5        g )#Nc                "  > U  Vs/ s H  o3R                   PM     nnUR                  5         U R                  USS9nU Vs/ s H  o3R                   PM     nnUR                  5         TR                  US [	        U5       U5        g s  snf s  snf NFr  )r   sortscaleOffsetsr   r   )s_innerscalarr)  r   oListSrcsNew	oListPostrB   s          rH   procCompare/Test.testScaleOffsetsBasic.<locals>.procCompare  s~    *12'Q'H2MMO'''>D+/04a4I0NN Y{E
3U; 3 1s   BBr6   r}   r   r   r  rq   r   r  r  r  r7   r         @r        2@r   r   r   r   r   r   r   r   r   r   r5   r-  r/  r-  e   f   g   r-  r   h   j   r-  r#  l   p   r   r-       `Y@     Y@g      Z@r-        Y@     @Y@r)  r-  g     Y@r,  g     0Y@r   r   r   r   r   r   r  r.  r   r   r   r   r   r2  r   r   r  r  r        ,@   r  r  r-  r*  g      Z@     Z@g     Z@r  r,  r)       Y@r*  g     Y@r  r7  r5  g      [@g      \@g     \@r   r  r5  g     ]@g      _@g      a@g     a@)r   r<   r   r   r   r>   r   rW   )rB   r  r   r   r
  r  s   `     rH   testScaleOffsetsBasicTest.testScaleOffsetsBasic  s   		< IIKH	q" 	Aq/*Aq01Aq01As01At12 IIKH	q$uS#/0Aq./Aq./Aq./As67As67At9: HYY[	q$uQA/0YY[	q$uQA/0Aq89As:;Aq:; HYY[	q$uS#q123YY[	q$uS#q123AqDEAsFGAqDEAqDErK   c                   ^  U 4S jnU" S/ SQ5        U" S/ SQ5        U" S/ SQ5        U" S/ S	Q5        U" S
/ SQ5        g )Nc                  > [         R                  " 5       nSUl        [        5       nUR	                  US5        U Vs/ s H  oDR
                  PM     nnUR                  5         UR                  U SS9  U Vs/ s H  oDR
                  PM     nnUR                  5         TR                  US [        U5       U5        g s  snf s  snf )Nr6   r}   Tr  )
r   r<   r   r   r   r   r  r  r   r   r  r)  r   r   r   r  r  rB   s          rH   r  7Test.testScaleOffsetsBasicInPlaceA.<locals>.procCompare  s    		AAOANN1b!*+,!Q!H,MMONN64N0+,-1a1I-NN Y{E
3U; - .s   B?9Cr6   r  rq   r  r7   r  r   r  r   r  r   rB   r  s   ` rH   testScaleOffsetsBasicInPlaceA"Test.testScaleOffsetsBasicInPlaceA  s@    	<$ 	A'A-.A-.C-.D./rK   c                   ^  U 4S jnU" S/ SQ5        U" S/ SQ5        U" S/ SQ5        U" S/ S	Q5        U" S
/ SQ5        U" S/ SQ5        g )Nc           	       > [         R                  " 5       nSUl        [        5       nUR	                  U[        [        SS5      5      5        U Vs/ s H  oDR                  PM     nnUR                  5         UR                  U SS9  U Vs/ s H  oDR                  PM     nnUR                  5         TR                  US [        U5       U5        g s  snf s  snf )Nr5   r-  r/  Tr  )r   r<   r   r   r>   r   rW   r   r  r  r   r   r>  s          rH   r  7Test.testScaleOffsetsBasicInPlaceB.<locals>.procCompare  s    		AAOANN1d5c?34*+,!Q!H,MMONN64N0+,-1a1I-NN Y{E
3U; - .s   CCr5   r  r6   r"  rq   r%  r   r(  r   r+  r   r.  r   r@  s   ` rH   testScaleOffsetsBasicInPlaceB"Test.testScaleOffsetsBasicInPlaceB  sL    	<  	A+,A+,A+,C34C34D67rK   c                T   ^  U 4S jnU" S/ SQ5        U" S/ SQ5        U" S/ SQ5        g )Nc           
     >  > [        5       n[        R                  " 5       nSUl        UR	                  U[        [        SSS5      5      5        [        R                  " 5       nSUl        UR	                  U[        [        SSS5      5      5        U Vs/ s H  oUR                  PM     nnUR                  5         UR                  U SS9  U Vs/ s H  oUR                  PM     nnUR                  5         TR                  US [        U5       U5        g s  snf s  snf )Nr5   r   r   r7   r6   Tr  r   r   r<   r   r>   r   rW   r   r  r  r   r   	r  r)  r   r
  r  r   r  r  rB   s	           rH   r  7Test.testScaleOffsetsBasicInPlaceC.<locals>.procCompare  s    AB BNN2tE!RO45B BNN2tE!RO45*+,!Q!H,MMONN64N0+,-1a1I-NN Y{E
3U; - .   DDr5   r/  r   r0  r6   r1  r   r@  s   ` rH   testScaleOffsetsBasicInPlaceC"Test.testScaleOffsetsBasicInPlaceC  s+    	<( 	A56C78A78rK   c                j   ^  U 4S jnU" S/ SQ5        U" S/ SQ5        U" S/ SQ5        U" S/ S	Q5        g )
Nc           
     >  > [        5       n[        R                  " 5       nSUl        UR	                  U[        [        SSS5      5      5        [        R                  " 5       nSUl        UR	                  U[        [        SSS5      5      5        U Vs/ s H  oUR                  PM     nnUR                  5         UR                  U SS9  U Vs/ s H  oUR                  PM     nnUR                  5         TR                  US [        U5       U5        g s  snf s  snf )	Nr5   r-  r3  r7   r6   r  Tr  rJ  rK  s	           rH   r  7Test.testScaleOffsetsBasicInPlaceD.<locals>.procCompare  s    AB BNN2tE#sA$678B BNN2tE#sA$678*+,!Q!H,MMONN64N0+,-1a1I-NN Y{E
3U; - .rM  r5   r4  r   r6  r6   r8  r   r9  r   r@  s   ` rH   testScaleOffsetsBasicInPlaceD"Test.testScaleOffsetsBasicInPlaceD  s6    	<( 	AABCCDAABAABrK   c                ^  ^ ^ U4S jmUU 4S jn[         R                  " 5       nSUl        [        5       nUR	                  US5        [         R                  " 5       nSUl        [        5       nUR	                  US5        UR                  U5        T R                  T" U5      S/S/S/S	/S
S/S/S/S////5        U" USSS/S/S
/S/SS/S/S/S////5        U" USSS/S
/S/S/SS/S/S/S	////5        U" USSS/S/S/S/SS/S/S/S////5        [         R                  " 5       nSUl        [        5       nUR                  U/ SQ5        [         R                  " 5       nSUl        [        5       nUR                  U/ SQ5        T R                  UR                  S5        UR                  U5        T R                  UR                  S5        UR                  [        R                  " U5      5        UR                  [        R                  " U5      5        T R                  T" U5      S/S/S/S/S S!/S"/S#/S$///S%S!/S"/S#/S$///S&S!/S"/S#/S$////5        U" USSS/S /S'/S/S(S!/S#/S)/S*///S+S!/S#/S)/S*///S,S!/S#/S)/S*////5        U" USS S/S /S'/S/S(S-/S./S//S0///S+S-/S./S//S0///S,S-/S./S//S0////5        U" USSS/S1/S2/S3/SS!/S4/S5/S6///S7S!/S4/S5/S6///S8S!/S4/S5/S6////5        U" USS S/S1/S2/S3/SS/S9/S:/S;///S7S/S9/S:/S;///S8S/S9/S:/S;////5        g )<Nc                   > / nU  HY  n/ nUR                  UR                  5        UR                  (       a  UR                  T" U5      5        UR                  U5        M[     U$ r  )rX   r   isStream)r   r  r   r#  scaleOffsetMaps       rH   rX  3Test.testScaleOffsetsNested.<locals>.scaleOffsetMap5  sR    D

188$::JJ~a01C   KrK   c                   > T" U 5      nUR                  5         U R                  UUSS9nT" U5      nUR                  5         TR                  US [        U5       U5        g )NF)anchorZeroRecurser  )r  r  r   r   )	r   r  r[  r)  r  r  r  rX  rB   s	          rH   r  0Test.testScaleOffsetsNested.<locals>.procCompare@  sd    %a(HMMO>>&4E*/ " 1D 't,INN Y{E
3U;rK   r6   rq   r   r   r   r   r  r  r   r   lowestr  r  r   r  r  r   r         ?r5   )r}   r;  r<  r=        #@)r        @D@ru       D@3   E   r  r2        .@      1@r  r  r`       D@ra  g     @Q@g      ^@r        :@      E@g     E@g      `@g     l@g      T@g     @T@g     T@g     T@r,       &@     '@g     D@g      D@g     0D@g     8@     B@g     @$@g     $@g     $@)r   r<   r   r   r   rX   r   r>   rS  rY   rZ   )rB   r  r
  rk   r  rl   rX  s   `     @rH   testScaleOffsetsNestedTest.testScaleOffsetsNested4  sa   			< YY[X
AYY[X
A
		" 	+%#u#use <=?	@ 	B8USEC54&cUSEC53%89;	< 	B8USED6D6cUSEC53%89;	< 	BhUSEC53%SEE7TFUG<=?	@
 YY[X
,-YY[X
01,
		"5
		$--#$
		$--#$ 	+&4&4&4&4&4&4&4&!AB4&4&4&4&!AB D6D6D6D6"BCE	 	B8VdVdVdVdVdVdVdV<=tftftftf=>tftftftf=>@	 	B4VdVdVdVdVdVdVdV<=tftftftf=>tftftftf=>@	 	BhVdVeWugdVfXwABtfvh&BCdVfXwABD	 	BdVdVeWugdVfXwABtfvh&BCdVfXwABD	rK   c                  ^  U 4S jn[         R                  " 5       nSUl        [        5       nUR	                  U[        [        S5      5      5        UR                  SSS9nT R                  U Vs/ s H  oUR                  R                  PM     sn/ SQ5        T R                  U Vs/ s H  oUR                  R                  PM     sn/ SQ5        U" US/ S	Q5        U" US
/ SQ5        [        5       nS H0  n[         R                  " S5      nXgl        UR                  U5        M2     U" US/ SQ5        U" US/ SQ5        U" US/ SQ5        gs  snf s  snf )z/
Scale some durations, independent of offsets.
c                   > U R                  USS9nU Vs/ s H  oDR                  PM     nnTR                  US [        U5       U5        g s  snf r  )scaleDurationsr   r   r   )r   r  r)  
sNew_innerr   r  rB   s         rH   r  1Test.testScaleDurationsBasic.<locals>.procCompare  sN    ))&%)@J2<=*Q*I=Y{E
3U; >s   Ar   r   r6   Fr  )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r7   )r   r   r   r   r   r6   r7   r   r   r   rr   r   r-  r   r   r   r   r   r   )r   r^  r   r-        ?ru  r   rq   )r   r  r   r  r   r   r   N)r   r<   r   r   r>   r   rW   rp  r   r   rX   )rB   r  r
  rk   r  r   r  r   s   `       rH   testScaleDurationsBasicTest.testScaleDurationsBasic  s   
	<
 YY[X
DqN+   E 2B?Bq**22B?A_`DADq**22DACab 	B/0B?+ X3B		#A OIIaL 4
 	BGHBNOB;<! @As   1E)Ec                   ^  U 4S jn[        5       nS H0  n[        R                  " S5      nX4l        UR	                  U5        M2     U" US/ SQ/ SQ5        U" US/ SQ/ S	Q5        U" US
/ SQ/ SQ5        g )Nc                  > U R                  USS9nU Vs/ s H  oUR                  PM     nnU Vs/ s H  oUR                  PM     nnT	R                  US [	        U5       U5        T	R                  US [	        U5       U5        T	R                  US   UR
                  5        T	R                  US   US   -   UR                  5        UR                  5       ng s  snf s  snf )NFr  rQ   )augmentOrDiminishr   r   r   r   rR  rS  r  )
r   r  matchOffsetmatchDurationr  r   r  
qlListPostunused_postrB   s
            rH   r  4Test.testAugmentOrDiminishBasic.<locals>.procCompare  s     &&vu&=D+/04a4I03784a//4J8Y'8K(89;GZ(;]);<mL [_d.@.@A[_}R/@@!--/ ++-K 18s
   CCrs  rr   r   )r   r   r   r   r2  g      @r3  rt  r   )r   r-  r   r        %@g     %@ri  )r-        @r         @r^  r^  r-  r7   )r   r   r  r        5@g     5@     6@)r   r  r   r9  r-  r-  r   )r   r   r<   r   rX   )rB   r  rk   r  r   s   `    rH   testAugmentOrDiminishBasicTest.testAugmentOrDiminishBasic  sv    	.* X3B		#A OIIaL 4 	B;>	@ 	B>>	@ 	B<5	7rK   c                   [         R                  " S5      nUR                  R                  5       R	                  5       R
                  SS n[        U5      nU R                  UR                  S5        U R                  UR                  S5        UR                  SSS9nU R                  UR
                  S   R                  S	5        U R                  UR
                  S
   R                  S5        U R                  UR                  S5        U R                  UR                  S5        UR                  SSS9  U R                  UR
                  S
   R                  U5      S5        U R                  UR
                  S
   R                  S5        U R                  UR                  S5        U R                  UR                  S5        g)zE
Need to make sure that highest offset and time are properly updated
r  r   r   r  rh  r6   Fr  r   r5   r   g      S@g      U@TN)r   r   r   r  r  r  r
   r   rR  rS  rz  r   r  )rB   r  foundr  newExs        rH   !testAugmentOrDiminishHighestTimes&Test.testAugmentOrDiminishHighestTimes  sw    ll,-		!))+99!B?%[))40. $$Q$6,,Q/66<,,Q/66<,,d3**D1 	Q-))!,<<R@#F))!,33S9))40.rK   c                   [         R                  " S5      nUR                  R                  5       R	                  5       R
                  SS n[        U5      n[        5       nS HG  n[        5       nUR                  USS9 H  nUR                  U5        M     UR                  SU5        MI     [        R                  " 5       nUR                  U5      R                  S5      n	[         R                  " S5      nUR                  S   R	                  5       R
                  R                  5       n[        5       nS	 H%  nUR                  USS9nUR                  SU5        M'     UR                  U5      R                  S5      n	g
)z5
Extract phrases from the corpus and use for testing
r  r   r   )r   r   r6   r   Fr  r  zbach/bwv323.xml)r5   r6   r   r   N)r   r   r   r  r  r  r
   r	   rz  rX   r@   r)   r  r  r"  )
rB   r  r  r  r   r  partr   r  r  s
             rH   testAugmentOrDiminishCorpus Test.testAugmentOrDiminishCorpus  s>   
 ll,- 		!))+99!B?%[G)F6D ))&%)@A AHHQ * ,,.IIaL''0	 ll,-YYq\!!#1188:G&F'''>DHHQ ' IIaL''0	rK   c                h   SSK Jn  [        5       n[        R                  " S5      Ul        [        R                  " S5      nSUl        UR                  [        R                  " U5      5        U R                  UR                  S   R                  S5        U R                  UR                  5       U" SS5      S5        U R                  UR                   R                  SS5        [        5       n[        R                  " S5      Ul        [        R                  " 5       nS	Ul        [        R                  " 5       nS
Ul        UR                  U5        UR                  U5        U R                  UR                  5       U" SS5      S5        U R                  UR                   R                  S5        g )Nr   rX  r/   zB--2r5   r7   rq   r|   r   r   r6   r3   r   )r[  rY  r   r   r;   r   r   r<   r   rX   rY   rZ   r   r   r   barDurationProportionra  )rB   rY  r   r   r
  r  s         rH    testMeasureBarDurationProportion%Test.testMeasureBarDurationProportion8  s5   &I--e4IIf	q!"**A.002HQNAF44a; I--e4YY[YY[		002HQNAF44c:rK   c                b   / SQn[         R                  " 5       nSUl        [        5       nUR	                  X!5        / SQnU GH  u  pVpx[
        R                  " U5      n	U R                  U	R                  S5        U R                  U	R                  S5        [         R                  " 5       n
XZl        U	R                  Xj5        U R                  U	R                  U5        U R                  U	R                  U5        U R                  [        U	5      [        U5      S-   5        [
        R                  " U5      n	[        R                  " U	R                  5        U	R                  5         U R                  U	R                  S5        U R                  U	R                  S5        [         R                  " 5       n
XZl        U	R                  Xj5        U R                  U	R                  U5        U R                  U	R                  U5        U R                  [        U	5      [        U5      S-   5        GM     g )Nr   r6   rq   r   r   r}   r  r6   )r   r        (@     ,@)r7   r   r<  r=  )      @r        2@     4@)r   rq   r  r  )r7   rq   r<  r=  )r  rq   r  r  )r5   r6   r8  r<  )r6   r6   r;  r   )r5   r7   r  r;  )r6   r7   r8  r<  )r5   rq   r8  r<  )r6   rq   r;  r   )r6   r  g      )@      -@)r  rq   r       0@r  r;  r5   )r   r<   r   r   r>   rY   rZ   r   rR  rS  insertAndShiftr   r   shuffle	_elementsr\  )rB   r3  r   r   dataqLinsertOffsetnewHighOffsetnewHighTimesProcnAlters              rH   testInsertAndShiftBasicTest.testInsertAndShiftBasic^  s   )IIKH	q"
. =A8BmMM!$EU00"5U..3YY[F#%   6U00-@U..<SZQ!4 MM!$ENN5??+%%'U00"5U..3YY[F#%   6U00-@U..<SZQ!4/ =ArK   c                @   / SQn[         R                  " 5       nSUl        [        5       nUR	                  X!5        / SQnU H  u  pVn[
        R                  " U5      nU R                  UR                  S5        U R                  UR                  S5        [        R                  " 5       n	UR                  XY5        U R                  UR                  U5        U R                  UR                  U5        U R                  [        U5      [        U5      S-   5        M     g )Nr  r6   )	r   r  r;  r  r  rq   r  r;  r  r  r6   r  r;  r  )r7   r  r;  r  r;  r5   )r   r<   r   r   r>   rY   rZ   r   rR  rS  r   r  r  r   )
rB   r3  r   r   r  r  r  r  r  ri   s
             rH   testInsertAndShiftNoDuration!Test.testInsertAndShiftNoDuration  s    )IIKH	q"

 9=4LMM!$EU00"5U..3		A  1U00-@U..<SZQ!4 9=rK   c                   / SQn[         R                  " 5       nSUl        [        5       nUR	                  X!5        / SQnU GH>  u  pVpx[
        R                  " U5      n	U R                  U	R                  S5        U R                  U	R                  S5        [         R                  " 5       n
SU
l        / nUnXU-   :  aE  UR                  U5        UR                  [
        R                  " U
5      5        US-  nXU-   :  a  ME  U	R                  U5        U R                  U	R                  U5        U R                  U	R                  U5        U R                  [        U	5      [        U5      [        U5      S-  -   5        GMA     g )Nr  r6   r  r  r;  r   )r   r<   r   r   r>   rY   rZ   r   rR  rS  rX   r  r   )rB   r3  r   r   r  r  r  r  r  r  r  itemListr   s                rH   "testInsertAndShiftMultipleElements'Test.testInsertAndShiftMultipleElements  sC   )IIKH	q"
. =A8BmMM!$EU00"5U..3 YY[F#'F HAR''"f 56T	 R''   *U00-@U..<SZQ#h-!2C)CD' =ArK   c                F   [        5       n[        R                  " 5       nUR                  U5        [        R
                  " 5       Ul        SUR                  l        SUR                  l        [        R                  " 5       nUR                  U5      R                  S5      ng )NzFrank the Composerz
work titler  )r   r   r<   rX   r   Metadatacomposertitler)   r  r   r  )rB   r   r
  r  r  s        rH   testMetadataOnStreamTest.testMetadataOnStream  sm    HYY[	&&(
2

'

,,.IIaL''0	rK   c                   [        5       n[        R                  " S5      Ul        U R	                  [        U5      S5        [        R                  " S5      nX!l        U R	                  [        U5      S5        U R	                  US   U5        U R	                  UR                  S 5        [        R                  " S5      nU R	                  UR                  R                  S5        X1l	        U R	                  [        U5      S5        [        R                  " S5      n[        R                  " S5      nXAl        U R	                  [        U5      S5        U R	                  UR                  U5        XQl	        U R	                  [        U5      S5        U R	                  UR                  U5        [        5       nUR                  [        R                  " U5      5        UR                  [        R                  " U5      5        [        5       nU R	                  [        U5      S5        XWl	        U R	                  [        U5      S5        U R	                  UR                  S 5        U R	                  UR                  U5        g )	Nr/   r5   heavyr6   r   r   r7   rI  )r   r   r;   r   r   r   r   rR  leftBarlinerQ  ra  r   r
   rX   rY   rZ   )rB   r0  b1b2b3r  rv   r1  s           rH   testMeasureBarlineTest.testMeasureBarline  s   Y ..u5R!$[[!R!$A#$/[[!55s; 	R!$[["[[!R!$,R!$"-F	r"#	r"#
 YR!$R!$."-rK   c                   [        5       n[        SS5       H}  n[        R                  " 5       n[	        5       nUR                  U5        US-  Ul        US-  S:X  a&  [        R                  " SS9nUR                  SU5        UR                  U5        M     [        R                  " 5       nUR                  U5      R                  S5      ng	)
z+
test both system layout and measure width
r5   r}   r-  r6   r   T)isNewr  N)r   rW   r   r<   r   rX   layoutWidthr   SystemLayoutr@   r)   r  r   r  )rB   r   rb   r   r   slr  r  s           rH   testMeasureLayoutTest.testMeasureLayout  s     Hq"A		A	AHHQKGAM1uz((t4BHHQK  ,,.IIaL''0	rK   c                   [         R                  " 5       nSUl        [         R                  " 5       nSUl        [         R                  " 5       nSUl        [         R                  " 5       nSUl        [        5       nSUl        UR	                  U5        [        5       nSUl        [        5       nSUl        UR	                  U5        [        5       nSUl        [        5       n	S	U	l        [        5       n
S
U
l        U
R	                  U5        U
R	                  U5        [        5       nSUl        [        5       nSUl        [        5       nSUl        [        5       nSUl        UR	                  U	5        UR	                  U
5        UR	                  U5        UR	                  U5        UR	                  U5        UR	                  U5        UR	                  U5        UR	                  U5        UR	                  U5        / nUR                  SSS9 H  nUR	                  UR                  5        M      U R                  U/ SQ5        / nUR                  SSS9 H  nUR	                  UR                  5        M      U R                  U/ SQ5        / nUR                  SSS9 H  nUR	                  UR                  5        M      U R                  U/ SQ5        g )Nn(1a)n2(2b)n3(3b)n4(3b)1a2a2b2c3a3b3c3d3e3fT)streamsOnlyincludeSelf)
r  r  r  r  r  r  r  r  r  r  F)r  r  r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  )r   r<   r   r   rX   r   r   )rB   r
  r  r  r  rk   rl   r  r  r  r  r  s8s9s10r)  r   s                    rH   testYieldContainersTest.testYieldContainers4  s3   YY[YY[YY[YY[X
		"XX
		"XXX
		"
		"XXXh 			"
		"
		"
		"
		"
		#
		"
		"
		" $?ALL @ 	 \] 4@ALL A 	 !I 	J 4@ALL A 	 LMrK   c                  ^  SSK JnJn  S T l        U 4S jn[	        5       n[
        R                  " S5      nSUl        UR                  US5        [        R                  " U5      nT R                  [        US   R                  5      S5        T R                  [        US   R                  5      S	-  S5        [        R                  " U5      nSUR                  S 4SUR                   S 4SUR"                  S
4SUR$                  S
4SUR"                  S
4SUR$                  S
4SUR"                  S
4SUR$                  S
4SUR"                  S
4SUR$                  S
4SUR"                  S
4SUR$                  S
4SUR"                  S
4SUR$                  S
4SUR&                  S 4/nU" Xx5        [	        5       n[
        R                  " S5      nSUl        UR                  US5        [        R                  " U5      nSUR                  S 4SUR                   S 4SUR"                  S
4SUR$                  S
4SUR"                  S
4SUR$                  S
4SUR"                  S
4SUR$                  S
4SUR&                  S 4/	nU" Xx5        [	        5       n/ SQn	U	 H2  u  p[
        R                  " U
5      nXl        UR)                  U5        M4     [        R                  " U5      nSUR                  S 4SUR                   S 4SUR"                  S4SUR$                  S4SUR"                  S4SUR$                  S4SUR"                  S
4SUR$                  S
4SUR"                  S4SUR$                  S4SUR"                  S4SUR$                  S4SUR&                  S 4/nU" Xx5        [	        5       n/ SQn	U	 HK  u  pU
c  [
        R*                  " 5       nO[
        R                  " U
5      nXl        UR)                  U5        MM     [        R                  " U5      nSUR                  S 4SUR                   S 4SUR"                  S4SUR$                  S4SUR"                  S4SUR$                  S4SUR"                  S4SUR$                  S4SUR"                  S4SUR$                  S4SUR&                  S 4/nU" Xx5        [	        5       n/ SQn	U	 HK  u  pU
c  [
        R*                  " 5       nO[
        R                  " U
5      nXl        UR)                  U5        MM     [        R                  " U5      nSUR                  S 4SUR                   S 4SUR"                  S4SUR$                  S4SUR"                  S4SUR$                  S4SUR"                  S4SUR$                  S4SUR"                  S4SUR$                  S4SUR&                  S 4/nU" Xx5        [	        5       n/ SQn	U	 HK  u  pU
c  [
        R*                  " 5       nO[
        R                  " U
5      nXl        UR)                  U5        MM     [        R                  " U5      nSUR                  S 4SUR                   S 4SUR"                  S4SUR$                  S4SUR"                  S4SUR$                  S4SUR"                  S4SUR$                  S4SUR"                  S4SUR$                  S4SUR"                  S4SUR$                  S4SUR&                  S 4/nU" Xx5        [	        5       nSS/ SQS4SSSS S!/S4/ S"QS4S/ S#QS$4/
n	U	 Hw  u  pU
c  [
        R*                  " 5       nOB[-        U
[.        5      (       a  [0        R2                  " U
5      nO[
        R                  " U
5      nXl        UR)                  U5        My     [        R                  " U5      nSUR                  S 4SUR                   S 4SUR"                  S4SUR$                  S4SUR"                  S%4SUR"                  S&4SUR"                  S'4SUR$                  S%4SUR$                  S&4SUR$                  S'4SUR"                  S4SUR$                  S4SUR"                  S(4SUR"                  S4SUR$                  S(4SUR$                  S4SUR"                  S)4SUR"                  S*4SUR"                  S+4SUR$                  S)4SUR$                  S*4SUR$                  S+4SUR"                  S,4SUR"                  S4SUR"                  S-4S.UR$                  S,4SUR$                  S4SUR$                  S-4SUR&                  S 4/nU" Xx5        g )/Nr   )
MetaEventsChannelVoiceMessagesc                n  > / n[        S[        U R                  S   R                  5      S5       Hp  nU R                  S   R                  U   nU R                  S   R                  US-      nUR	                  UR
                  UR                  UR                  45        Mr     TR                  X!5        g )Nr   r5   r6   )	rW   r   trackseventsrX   timer2   r   r   )mf_innermatch_innertriplesrb   deltar   rB   s         rH   r  -Test.testMidiEventsBuilt.<locals>.procCompare  s    G1c(//!"4";";<a@ *11!4OOA&--a!e4

AFFAGG<= A
 W2rK   g#3r   r   r5   r   r6   8   i  i`'  r   r7   i;  ))rH  r   )c#3r   )r  r   r  r5   )r  r6   rv  i	  1   r  rc  iN  )rH  r5   Nr   r  r5   r  r  r  r  r5   )r  )Nr   r  )Nr   r  Nr6   r  )r  Nr5   r  r  r  r  r  r  r  r  r  r  r  r  )f3za-4r  r  r  r  r   r  )zd-2za#3zg#6)zf#3r  r  rq   5   D   H   &   rr  :   \   6   r  i  )music21.midir  r  maxDiffr   r   r<   r   r   midiTranslatestreamHierarchyToMidiTracksr   r   r  streamToMidiFileSEQUENCE_TRACK_NAME
PITCH_BENDNOTE_ONNOTE_OFFEND_OF_TRACKrX   r  
isinstancer   r   r  )rB   r  r  r  r   r   r  mfr)  r  rv   rj   s   `           rH   testMidiEventsBuiltTest.testMidiEventsBuilt  s
   A	3 HIIe	q!88;T!W^^,b1T!W^^,q0!4++A.
..5$//6$,,b1'00"5$,,b1'00"5$,,b1'00"5$,,b1'00"5$,,b1'00"5$,,b1'00"5J++T2
$ 	BHIIe	q!++A.
..5$//6$,,b1(1126$,,b1(1126$,,b1(1126J++T2

 	B H
 DA		!AOHHQK 
 ++A.
..5$//6$,,b1'00"5$,,b1'00"5$,,b1(1126$,,b1(1126$,,b1(1126J++T2
 	B H
 DAyIIKIIaLOHHQK  ++A.
..5$//6$,,b1(1126'//4(1126'//4(1126'//4(1126J++T2
 	B H
 DAyIIKIIaLOHHQK  ++A.
..5$//6$,,b1(1126'//4(1126(00"5(1126(00"5(1126J++T2
 	B H
 DAyIIKIIaLOHHQK  ++A.
..5$//6$,,b1(1126(00"5(1126$,,b1(1126(00"5(1126(00"5(1126J++T2
 	B H !$D\3"C(!1%
 DAyIIKAt$$KKNIIaLOHHQK  ++A.
..5$//6$,,b1(1126(00"5$,,b1$,,b1(1126$--r2$--r2'//4(1126(00"5$,,b1'00"5$--r2$,,b1$,,b1$,,b1'00"5$--r2$--r2(00"5$,,b1$,,b1(1126$--r2$--r2J++T2;
> 	BrK   c                6   [        5       n[        R                  " 5       nUR                  U/ SQ5        UR	                  5       nU Vs/ s H1  oDR
                  UR
                  UR                  R                  -   4PM3     nn/ SQnU R                  XV5        U R                  [        U5      S5        UR                  SSS9  U R                  [        U5      S5        U R                  [        UR                  [        R                  5      5      S5        g s  snf )N)r   r   r  rq   r   ))r   r   )r2  r   )r   r  r3   T)r  r'  r   r7   )r   r   r<   r>   findGapsr   r   r   r   r   r  rt  r  )rB   r   r   r  r   testr)  s          rH   testFindGapsTest.testFindGaps  s    HIIK	q-.zz|IMNA188ajj&>&>>?N4%Q#	D40Q#Q11$))<=qA Os   8Dc                  ^  U 4S jnSSK Jn  U" / SQ/ SQ/ SQ/ SQS/5        U" / SQ/ SQ/ SQ/ SQS	/5        U" / S
Q/ SQSU" S5      U" S5      SS/U" S5      U" S5      U" S5      SS/SS/5        U" / SQ/ SQSU" S5      U" S5      SS/U" S5      U" S5      U" S5      SS/S	S/5        U" / SQ/ SQSU" S5      U" S5      SS/U" S5      U" S5      U" S5      SS/S	S/5        U" / SQ/ SQSSU" S5      U" S5      SU" S5      U" S5      /U" S5      U" S5      U" S5      U" S5      U" S5      U" S5      S/SS/5        g ) Nc                  > [        5       n[        X5       H1  u  pg[        R                  " 5       nXxl        UR                  Xh5        M3     UR                  5         UR                  USSSS9  U V	s/ s H  oR                  PM     n
n	U V	s/ s H  oR                  R                  PM     nn	TR                  X5        TR                  X5        g s  sn	f s  sn	f )NT)processOffsetsprocessDurationsr  )r   r  r   r<   r   r@   r  quantizer   r   r   )	srcOffsetsrcDur	dstOffsetdstDurdivListr   nOffset	nDurationr   r   targetOffset	targetDurrB   s               rH   r  &Test.testQuantize.<locals>.procCompare  s    A&))&<"IIK"+$ '=
 FFHJJwtdTXJY./0aHHaL0;<=1a111I=\5Y/	 1=s   2CCr   rX  ){Gz?Q?g=
ףp=?(\?)r   r   r   r   )r   r   r   r-  rq   )r   r!  gp=
ף?r"  r   )r   Gz?gv?RQ?gQ?)ףp=
?{Gz?Q?r   r   r   z1/3z2/3r   r   r   r7   )r   r#  gCl?gGz?{Gz?)r%  r&  r'  )\(?zG?)gQ?gq=
ףp?gDl?r$  r(  )r&  gffffff?r'  r)  r*  r   )gT㥛  @gh|?5 @gDl@g^I+@r   g/$
@gh|?5@)grh|?gˡE?g9v?gMb?g㥛 ?gMbX?g?5^I?r6   z7/3z8/3r   z10/3z11/3)r[  rY  )rB   r  r	  s   `  rH   testQuantizeTest.testQuantize  s~   	0$ 	,,.F*,DC	 	,.F*,DC	 	42!E(AeHc48uXqx54>F	 	42!E(AeHc48uXqx54>F	 	42!E(AeHc48uXqx54>F	 	CE1U8QuXsAfIqyIuXqx51U8uXqx/ F	rK   c                R   [         R                  " 5       S-  S-  nUS-  n[        R                  " US/S9nUR	                  5       R
                  S   nU R                  UR                  R                  S5        U R                  UR                  R                  S5        [        5       nUR                  [        R                  " S	S
9S5        UR                  [        R                  " SS
9S5        UR!                  SS/S9  U R                  [#        UR$                  5      S5        g)z
Notes (not rests!) of nonzero duration should retain a nonzero
duration after quantizing. Zero duration rests should be removed.
midir  z
test15.midr6   )quarterLengthDivisorsrQ   r   g      ؿ16thr1   r7   32ndT)r  r/  N)r   getSourceFilePathr   r   r  r   r   r   r   	editorialquarterLengthQuantizationErrorr   r   r   r<   r  r  r   r  )rB   dirLibfpr   	last_noterl   s         rH   testQuantizeMinimumDuration Test.testQuantizeMinimumDuration  s    
 ))+f4Fl"OOBqc:IIK%%b)	++993?,,KKYW X
		v.2
		v.2
D<R--.2rK   c                   [         R                  " S5      nUR                  S   UR                  S   UR                  SS5      UR                  S   R                  SS5      /n[        R
                  " S5      [        R
                  " S5      [        R
                  " S	5      [        R
                  " S
5      /nS HL  n[        X#5       H:  u  pVUR                  U5      nU R                  [        U5      [        U5      5        M<     MN     [        R                  " S5      S4[        R                  " S5      S4[        R                  " S5      S4[        R                  " S5      S4/nS Hz  n[        X(5       Hh  u  pYUR                  U5      nU R                  UR                  R                  U	S   R                  5        U R                  UR                  U	S   5        Mj     M|     [        R                  " S5      S4[        R                  " S5      S4[        R                  " S5      S4[        R                  " S5      S4/n
S Hz  n[        X*5       Hh  u  pYUR                  U5      nU R                  UR                  R                  U	S   R                  5        U R                  UR                  U	S   5        Mj     M|     g )Nrq  r   r5   rq   r3   r6   r  r<     r}   )rW   ambitusspanF#minorr   r  major)KrumhanslSchmuckler	krumhansl)arden)r   r   r   r  r   Intervalr  analyzer   r   r   Pitchtonicr   mode)rB   r   r#  matchAmbitusidStrsTestmatchAmbitusTestr  matchKrumhanslsMatch
matchArdens              rH   testAnalyzeTest.testAnalyze  s9   LL(wwqz1771:qzz!Q'7
##Aq)+ !))"- ))"- ))"- ))"-/ 2E+.s+A'}}U+  TC0@,AB ,B 2 !;;t,g6 ;;t,g6 ;;s+W5 ;;s+W57 :E!$S!9}}U+  &)..A  F1I6	 ": : {{4('2{{4('2{{4('2{{3'13
 E!$S!5}}U+  &)..A  F1I6	 "6 rK   c                *   SSK Jn  S nS n[        5       n/ SQnU H/  n[        R                  " 5       nXgl        UR                  U5        M1     UR                  USS9  U R                  U" U5      / SQ5        U R                  U" U5      / S	Q5        g
)
Creating brackets
r   r  c                    / nU  Hc  nUR                   R                  (       a4  UR                  UR                   R                  S   R                  5        MR  UR                  S 5        Me     U$ r%  r   r^   rX   r2   ssr  r   s      rH   collectType1Test.testMakeTupletBracketsA.<locals>.collectTypeJ  R    D::%%KK

 2 21 5 : :;KK%	 
 KrK   c                    / nU  Hc  nUR                   R                  (       a4  UR                  UR                   R                  S   R                  5        MR  UR                  S 5        Me     U$ r%  r   r^   rX   bracketrV  s      rH   collectBracket4Test.testMakeTupletBracketsA.<locals>.collectBracketS  R    D::%%KK

 2 21 5 = =>KK%	 
 KrK   )r5   r6   r   UUUUUU?Tr  )NNN	startStop)NNNFN	music21.streamr	  r   r   r<   r   rX   makeTupletBracketsr   rB   r	  rX  r^  r   qlListr  r   s           rH   testMakeTupletBracketsATest.testMakeTupletBracketsAD  s     	0		 H#B		A OHHQK  	''4'8Q)HI*,EFrK   c                   SSK Jn  S nS n[        5       n/ SQnU H/  n[        R                  " 5       nXgl        UR                  U5        M1     UR                  USS9  U R                  U" U5      / SQ5        [        5       n/ S	QnU H/  n[        R                  " 5       nXgl        UR                  U5        M1     UR                  USS9  U R                  U" U5      / S
Q5        [        5       n/ SQnU H/  n[        R                  " 5       nXgl        UR                  U5        M1     UR                  USS9  U R                  U" U5      / SQ5        [        5       n/ SQnU H/  n[        R                  " 5       nXgl        UR                  U5        M1     UR                  USS9  U R                  U" U5      / SQ5        U R                  U" U5      / SQ5        [        5       n/ SQnU H/  n[        R                  " 5       nXgl        UR                  U5        M1     UR                  USS9  U R                  U" U5      / SQ5        [        5       n/ SQnU H/  n[        R                  " 5       nXgl        UR                  U5        M1     UR                  USS9  U R                  U" U5      / SQ5        U R                  U" U5      / SQ5        [        5       n/ SQnU H/  n[        R                  " 5       nXgl        UR                  U5        M1     UR                  USS9  U R                  U" U5      / SQ5        U R                  U" U5      / SQ5        g)rS  r   r  c                    / nU  Hc  nUR                   R                  (       a4  UR                  UR                   R                  S   R                  5        MR  UR                  S 5        Me     U$ r%  rU  rV  s      rH   rX  1Test.testMakeTupletBracketsB.<locals>.collectTypeo  rZ  rK   c                    / nU  Hc  nUR                   R                  (       a4  UR                  UR                   R                  S   R                  5        MR  UR                  S 5        Me     U$ r%  r\  rV  s      rH   r^  4Test.testMakeTupletBracketsB.<locals>.collectBracketx  r`  rK   )r5   r  r  r  r5   r5   Tr  )NrO   NrP   NN)	r5   ra  ra  ra  ra  ra  ra  r5   r5   )	NrO   NrP   rO   NrP   NN)r5   r6   r   ra  ra  ra  )NNNrO   NrP   )r5   r  r5   r  r5   r  )Nrb  Nrb  Nrb  )NFNFNF)r5   r  r  r  ra  ra  r5   )NrO   rP   rO   NrP   N)r5   r  r  r5   ra  r  r  ra  )NrO   rP   NrO   rP   rO   rP   )NTTNTTTT)r5   皙?ro  皙?rp  ro  ro  r   )NrO   NNNNrP   N)NTTTTTTNNrc  rf  s           rH   testMakeTupletBracketsBTest.testMakeTupletBracketsBi  s    	0		 H/B		A OHHQK  	''4'8Q)RS HDB		A OHHQK  	''4'8 	QY	[
 H3B		A OHHQK  	''4'8Q)RS H/B		A OHHQK  	''4'8QR	T*,ST H:B		A OHHQK  	''4'8Q)]^ HAB		A OHHQK  	''4'8QX	Z*I	K
 HEB		A OHHQK  	''4'8Q)^_*,\]rK   c                x   S nS n[        5       nS/nU H/  n[        R                  " 5       nXVl        UR	                  U5        M1     UR                  5       nU R                  U" UR                  5       R                  5      S/5        U R                  U" UR                  5       R                  5      S/5        g)z(
This is a test of many make procedures
c                    / nU  Hc  nUR                   R                  (       a4  UR                  UR                   R                  S   R                  5        MR  UR                  S 5        Me     U$ r%  rU  r  r  r   s      rH   collectTupletType1Test.testMakeNotationA.<locals>.collectTupletType  sR    D::%%KK

 2 21 5 : :;KK%	 
 KrK   c                    / nU  Hc  nUR                   R                  (       a4  UR                  UR                   R                  S   R                  5        MR  UR                  S 5        Me     U$ r%  r\  ru  s      rH   collectTupletBracket4Test.testMakeNotationA.<locals>.collectTupletBracket  sR    D::%%KK

 2 21 5 = =>KK%	 
 KrK   r  rb  FN)	r   r   r<   r   rX   r	  r   r  r   )rB   rv  ry  r   rg  r  r   postMakes           rH   testMakeNotationATest.testMakeNotationA  s    		* HB		A OHHQK  >>#*8+;+;+=+C+CD{mT-h.>.>.@.F.FG%QrK   c                x   SSK Jn  [        5       nUR                  SU" 5       5        UR                  S[        R
                  " SSS95        UR                  [        R
                  " SSS9[        S5       Vs/ s H  o3S-  PM	     sn5        UR                  [        R
                  " S	S
S9/ SQ5        UR                  5       nU R                  [        UR                  5      S5        U R                  [        UR                  5      S5        U R                  [        UR                  [        5      5      S
5        U R                  [        UR                  [        5      S   R                  5      S5        U R                  [        UR                  [        5      S   R                  5      S5        UR                  [        5       HH  nUR                  S   R                   H(  nU R                  [        UR                   5      S5        M*     MJ     U R#                  UR%                  SS9S   U5        gs  snf )z5
Testing voices making routines within make notation
r   )	Xylophonerf   r   rZ  b-4r   r   zf#5r6   )r   r6   rq   r   r@  r7   r5   TrZ  N)music21.instrumentr  r   r@   r   r<   r>   rW   r	  r   r   r6  r   rt  r   assertGreaterr^  rm  getInstruments)rB   r  r   r   rx  r   r   s          rH   testMakeNotationBTest.testMakeNotationB  s    	1H	IK 	DIId!45	tyyc:eTVi<XiWi<XY	tyya8,G  	QXX*QWWr*U55g>?CU55g>qAHHI1MU55g>qAHHI1M))'2AXXa[&&""3qww<3 ' 3
 	e2242@CYO% =Ys   9H7
c           
     r   [        5       nS H=  nS H4  nUR                  U[        R                  " SUS-  -   US-  -   US95        M6     M?     UR	                  5       nU R                  [        UR                  [        5      5      S5        U R                  [        UR                  [        5      S   R                  5      S5        U R                  [        UR                  [        5      S	   R                  5      S5        U R                  UR                  5       R                  S
   R                  5        g)z8
Test creating diverse, overlapping durations and notes
)r   r   r7   )r   r   rq   r   r  r6   rZ  r7   r   rq   r5   rQ   N)r   r@   r   r<   r	  r   r   rt  r   r6  rF  r  r   r%   )rB   r   rI  r   rx  s        rH   testMakeNotationCTest.testMakeNotationC  s     H C(2q>VaZ+H9<"> ? ) !  U55g>?CU55g>qAHHI1MU55g>qAHHI1MU]]_2226::;rK   c                n   [        5       n[        5       n[        5       nX#4 H:  nUR                  [        R                  " 5       S5        UR                  SU5        M<     U R                  UR                  5       5        U R                  UR                  [        5      S   R                  5       5        U R                  UR                  [        5      S   R                  5       5        UR                  SS9nU R                  UR                  5       5        U R                  [        UR                  [        5      R                  5       R                  [        5      5      S5        U R                  [        UR                  [        5      S   R                  [        5      5      S5        U R                  [        UR!                  5       R                  ["        R$                  5      5      S5        U R                  [        UR!                  5       R                  [&        R(                  5      5      S5        g)	$
Test makeNotation on Score objects
r  r   r5   Fr  r7   r6   N)r	   r   r   r   r<   r@   r   hasPartLikeStreamsr   rt  hasMeasuresr	  r   r   r  r   r  r   r;   r   r  rB   r   r  r  rv   r  s         rH   testMakeNotationScoreATest.testMakeNotationScoreA1  s    GXXANN499;+HHQN  	,,./--f5a8DDFG--f5a8DDFG~~e~,//12 	T44V<BBDWWX_`a	T44V<Q?RRSZ[\	T\\^>>u?R?RSTVWXT\\^>>tyyIJANrK   c                   [        5       n[        5       n[        5       nX#4 H:  nUR                  [        R                  " 5       S5        UR                  SU5        M<     U R                  UR                  5       5        U R                  UR                  [        5      S   R                  5       5        U R                  UR                  [        5      S   R                  5       5        UR                  S[        [        R                  " S5      /5      S9nU R                  UR                  5       5        U R                  [        UR                  [        5      S   R                  [         5      5      S5        U R                  [        UR                  [        5      S   R                  [         5      5      S5        U R                  [        UR#                  5       R                  [        R                  5      5      S5        U R                  [        UR#                  5       R                  [$        R&                  5      5      S5        g	)
r  r  r   r5   Fr/   r  rB  rq   r6   N)r	   r   r   r   r<   r@   r   r  r   rt  r  r	  r   r;   r   r   r   r  r   r  r  s         rH   testMakeNotationScoreBTest.testMakeNotationScoreBL  s    GXXANN499;+HHQN  	,,./--f5a8DDFG--f5a8DDFG ~~e  '(:*~ + 	//12 	T44V<Q?RRSZ[\^_`T44V<Q?RRSZ[\^_`T\\^>>u?R?RSTVWXT\\^>>tyyIJANrK   c                z   [        5       n[        5       n[        5       nX#4 H:  nUR                  [        R                  " 5       S5        UR                  SU5        M<     UR                  [        5      R                  5       R                  S[        [        R                  " S5      /5      S9  U R                  UR                  [        5      S   R                  5       5        U R                  UR                  [        5      S   R                  5       5        UR                  SS9nU R                  [        UR                  [        5      S   R                  [         5      5      S	5        U R                  [        UR                  [        5      S   R                  [         5      5      S
5        U R                  [        UR#                  5       R                  [        R                  5      5      S5        U R                  [        UR#                  5       R                  [$        R&                  5      5      S5        g)r  r  r   Tr/   r  r5   Fr  rq   r7   r6   N)r	   r   r   r   r<   r@   rt  r  r	  r   r;   r   r  r   r   r   r   r  r   r  r  s         rH   testMakeNotationScoreCTest.testMakeNotationScoreCi  s    GXXANN499;+HHQN 
 	
V$**,99 3 3E :;< 	: 	> 	,,V4Q7CCEF--f5a8DDFG~~e~,T44))'2456	8T44))'2456	8 	T\\^>>u?R?RSTVWXT\\^>>tyyIJANrK   c                   Sn[         R                  " 5       n[        R                  " S5      n[        R
                  " U5      n[        5       nUR                  SU5        UR                  SU5        UR                  SU5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S5      5        UR                  5       nU R                  [        UR                  [        5      5      S5        UR                  [        5      R                  5       nU R                  UR                   R"                  U5        g)	zu
The base-case: Stream should keep it's key.KeySignature element when a
single-voice score is prepared for notation.
r6   r   r   r  r   r  r5   Nr   rj  r   r;   r   rk  r   r@   r   r<   r	  r   r   rt  r   r  r  r  rB   sharpsInKeyri   rD   rm  r   rx  r0  s           rH   $testMakeNotationKeySignatureOneVoice)Test.testMakeNotationKeySignatureOneVoice  s    
 OO  'k*H	a	b	b	diin%	diin% U55g>?C%%g.446//=rK   c                   Sn[         R                  " 5       n[        R                  " S5      n[        R
                  " S5      n[        5       nUR                  SU5        UR                  SU5        UR                  SU5        UR                  S[        R                  " S5      5        UR                  S[        R                  " S5      5        UR                  5       nU R                  [        UR                  [        5      5      S5        UR                  [        5      R                  5       nUR                   c   eU R                  UR                   R"                  U5        g)	zd
Stream should keep its key.KeySignature element
when a multi-voice score is prepared for notation.
r6   r   r   r   r  r  r5   Nr  r  s           rH   &testMakeNotationKeySignatureMultiVoice+Test.testMakeNotationKeySignatureMultiVoice  s    OO  'a H	a	b	b 	
diin%	diin% U55g>?C%%g.446***//=rK   c                   S n[         R                  " S5      nUR                  S   R                  SS5      nU R	                  U" U5      / SQ5        UR                  5       R                  R                  5       nU R	                  [        U5      S5        UR                  S[        R                  " S	5      5        UR                  SS
S9  UR                  S S9nUR                  S
S9  U R	                  [        UR                  5       5      S5        U R	                  U" U5      / SQ5        UR                  5       R                  SS
S9  S U l        U R	                  U" U5      / SQ5        g )Nc                *   / nU R                  5       R                   Hr  nUR                  R                  bG  UR	                  UR                  R
                  UR                  R                  R                  45        Ma  UR	                  S5        Mt     U$ )Nr   )r  r  r   r]   rX   r   r  ru  s      rH   collectAccidentalDisplayStatus9Test.testMakeTies.<locals>.collectAccidentalDisplayStatus  sj    D__&4477%%1KKqww/A/A/O/O PQKK$	 5
 KrK   rq  r7   r6   r   )r   r   Fr   r   E#Tr>  Fr   r  r  r  r)  Fr  r  r   r   r   r  r  r  r   r   r   r   r  r     r   rM   Tr  r  rt  )+r   r  r  r   r   r   r   r  r  Fr  r   r  r  r  r  r  r  r  r  r  r  r   r   r   r   r  r  r  r  r  r  r   r   r   r   r   r   r   r   r  r  r  r  p5)+r   r)  Nr  r   r   r   r   zB#Nr  r   Nr>  Nr  r  r  r  r  r  r  Nr  r  r  r   r   r  r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r  r  r  r  )r   r   r   r  r   r  r  r"  r   r@   r   r;   rz  r  r  r  r  )rB   r  r   sSubmStreams        rH   testMakeTiesTest.testMakeTies  sJ   	 LL(wwqz""1a( 	7=7	8 ||~++224TB'Au**512q$/ ###6&W__./4 	7@U		 	##D$#7 7@6		rK   c                   [        5       n[        SS9nUR                  [        R                  " S5      5        UR                  [
        R                  " SS95        UR                  U5        UR                  5       nU R                  [        U[           5      S5        U[           R                  5       R                  R                  5       nU[           R                  5       R                  R                  5       nU R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  UR                   5        U R                  UR                   5        U R                  UR                   R"                  S5        U R                  UR                   R"                  S	5        UR%                  5       nU R                  [        U[           5      S5        g
)z
Test that makeTies adds a new measure when the last note is too long,
both when called directly and when called from makeNotation
r5   r*  r   brever1   r6   r   rO   rP   N)r
   r   rX   r   r;   r   r<   r  r   r   r  r   r  r   r   rF  r%   r2   r	  )rB   rv   r   
p_makeTiesr
  r  p_makeNotations          rH   testMakeTiesAddNewMeasureTest.testMakeTiesAddNewMeasure  sc   
 F1	$$U+,	()	ZZ\
Z0115 &&(..446 %%'--33522C822C8RVV$RVV$g.f-)^G45q9rK   c                    [         R                  " S5      nUR                  SS5      nU R                  [	        UR
                  5      S5        g )Nz"tinynotation: 2/8 g8 e f g e f g ar7   z4[<music21.pitch.Pitch E4>, <music21.pitch.Pitch F4>])r   r   r  r   r   r~  )rB   r   r  s      rH   testMeasuresAndMakeMeasures Test.testMeasuresAndMakeMeasures  s;    OO@Azz!QT\\*,bcrK   c                   [        5       nSUl        [        R                  " S5      n[        R                  " S5      nUR	                  SU5        UR	                  SU5        U R                  U Vs/ s H  oDR                  PM     snSS/5        UR                  5       nU R                  U Vs/ s H  oDR                  PM     snSS/5        U R                  U Vs/ s H  oDR                  PM     snSS/5        UR                  5         U R                  U Vs/ s H  oDR                  PM     snSS/5        [        5       nSUl        [        R                  " S5      n[        R                  " S5      nUR	                  SU5        UR	                  SU5        U R                  UR                   Vs/ s H  oDR                  PM     snSS/5        [        5       nSUl        [        R                  " S5      n[        R                  " S5      nUR	                  SU5        UR	                  SU5        U R                  UR                   Vs/ s H  oDR                  PM     snSS/5        [        5       nSUl        [        R                  " S5      n[        R                  " S5      nUR	                  SU5        UR	                  SU5        U R                  US   R                  S5        U R                  US	   R                  S5        [        5       nSUl        [        R                  " S5      n[        R                  " S5      nUR	                  SU5        UR	                  SU5        U R                  US   R                  S5        U R                  US	   R                  S5        [        5       nSUl        [        R                  " S5      n[        R                  " S5      nUR	                  SU5        UR	                  SU5        U R                  UR                  S   R                  S5        U R                  UR                  S	   R                  S5        [        5       nSUl        [        R                  " S5      n[        R                  " S5      nUR	                  SU5        UR	                  SU5        U R                  UR                  S   R                  S5        U R                  UR                  S	   R                  S5        / S
Qn[        5       nSUl        U H1  u  px[        R                  " 5       n	Xl        UR	                  Xy5        M3     / n
UR                   H*  n	U
R                  U	R                  U	R                  45        M,     U R                  Xj5        [        5       nSUl        U H1  u  px[        R                  " 5       n	Xl        UR	                  Xy5        M3     / n
UR                   H*  n	U
R                  U	R                  U	R                  45        M,     U R                  / SQU
5        g s  snf s  snf s  snf s  snf s  snf s  snf )NFr  r  r-  r   TrC   rE   r5   ))r   r6   )r<  r}   )   r5   )r}   r6   )r3   r  )r   r}   )r   r6   )r   r   ))r   r6   )r   r   )r   r  )r  r}   )r  r6   )rd  r}   )r  r6   )r  r   )r   r  r   r<   r@   r   r   r   r  r  r\   r   rX   r   )rB   r   r
  r  r   sSortedpairsr   rj   r   r)  s              rH   testSortAndAutoSortTest.testSortAndAutoSort  s   H
YYs^YYs^	b	B!,!Q&&!,sCj9((*!,!Q&&!,sCj9'2'Q&&'2S#J?	!,!Q&&!,sCj9 H
YYs^YYs^	b	B 	!//:/Q&&/:S#JG H
YYs^YYs^	b	B!//:/Q&&/:S#JG H
YYs^YYs^	b	B1C(1C( H
YYs^YYs^	b	B1C(1C( H
YYs^YYs^	b	BA++S1A++S1 H
YYs^YYs^	b	BA++S1A++S1 Y H
DA		AOHHQN  ALL!((AOO45 !& H
DA		AOHHQN  ALL!((AOO45 ! >?D	FC - -2 - ; ;s$   1Y/YYY4YYc           	     J   / SQn/ SQ/ SQ/ SQ/ SQ4 GH  n[        5       nSn[        X!5       H?  u  pVU H0  n[        R                  " U5      nXXl        UR                  XH5        M2     XE-  nMA     U R                  [        U5      S5        U R                  [        UR                  [        R                  5      5      S5        UR                  5       n	UR                  5       nX94 H  n
U R                  [        U
R                  [        R                  5      5      S5        [        U5       He  u  pU
R                  [        R                  5      U   R                   Vs/ s H  oR                  PM     nnU R                  U[        U5      5        Mg     M     GM     g s  snf )	N))C2A2)zA#1zC-3G5)r  r  D3rf   )r5   r5   r5   )r   r6   r7   )r   r   r   )r   r   r   r   r9  r7   )r   r  r   r<   r   r@   r   r   rt  r   r  chordifyr  r~  nameWithOctaver   )rB   pitchColdurColr   r   r  r~  pStrr   sModsEvalrb   pitchElrv   r)  s                  rH   testMakeChordsBuiltATest.testMakeChordsBuiltA  sZ   0
 !+/@)LFAA"64#D		$A&(OHHQN $   5 SVQ'S!5!5ekk!BCQG ::<D

A  U%=%=ekk%J!KQO"+H"5JA"55ekkB1EMMOM 34--M  O$$UDM: #6 # M&Os    F 
c                   [         R                  " S5      nSUl        [         R                  " S5      nSUl        [         R                  " S5      nSUl        [         R                  " S5      nSUl        [        5       nUR	                  SU5        UR	                  SU5        UR	                  SU5        UR	                  S	U5        U R                  U Vs/ s H  ofR                  PM     sn/ S
Q5        UR                  5       nUR                  5       nXW4 Hi  nU R                  [        UR                  [        R                  5      5      S5        U R                  U V	s/ s H  oR                  PM     sn	/ SQ5        Mk     [         R                  " S5      nSUl        [         R                  " S5      nSUl        [         R                  " S5      nSUl        [         R                  " S5      nSUl        [        5       nUR	                  SU5        UR	                  SU5        UR	                  SU5        UR	                  S	U5        UR                  5       ng s  snf s  sn	f )NrH  r6   r   r   r  f5r   r5   r7   r  r   )r   r   r   r   r   r2  r   )r   r<   r   r   r@   r   r   r  r   rt  r   r  )
rB   r
  r  r  r  r   r   r  r  ri   s
             rH   testMakeChordsBuiltBTest.testMakeChordsBuiltB  s   YYt_YYt_YYt_YYt_H	B	B	B	BA.Aq((A.0DE zz|JJLYES!9!9%++!FGK61hh68VW  YYt_YYt_YYt_YYt_H	B	B	B	B zz|? / 7s   I"I!
c                t   [         R                  " S5      nSUl        [         R                  " S5      nSUl        [         R                  " S5      nSUl        [         R                  " S5      nSUl        [         R                  " S5      nSUl        [         R                  " S5      nSUl        [        5       nUR	                  SU5        UR	                  SU5        UR	                  SU5        UR	                  SU5        UR	                  SU5        UR	                  SU5        UR                  SS9nU R                  UR                  [        R                  5      S   R                   V	s/ s H  n	U	R                  PM     sn	S	S
/5        U R                  UR                  [        R                  5      S   R                   V	s/ s H  n	U	R                  PM     sn	SS/5        UR                  SS9nU R                  UR                  [        R                  5      S   R                   V	s/ s H  oR                  PM     sn	/ SQ5        U R                  UR                  [        R                  5      S   R                   V	s/ s H  oR                  PM     sn	/ SQ5        g s  sn	f s  sn	f s  sn	f s  sn	f )NrH  r   g2r  r  r   T)removeRedundantPitchesr  G2r5   E4r  F)r  r  r  )r  r  r  )r   r<   r   r   r@   r  r   rt  r   r  r~  r  )
rB   r
  r  r  r  r  n6rk   r  rv   s
             rH   testMakeChordsBuiltCTest.testMakeChordsBuiltC  sD   YYt_YYt_YYt_YYt_YYt_YYuX
		!R
		!R
		!R
		#r
		#r
		#r{{${7#'#:#:5;;#G#J#R#RT#Ra **#RT,	( 	#'#:#:5;;#G#J#R#RT#Ra **#RT-	)
 {{%{8'+'>'>u{{'KA'N'V'VW'V!'VW	

 	'+'>'>u{{'KA'N'V'VW'V!'VW	
TT X
 Xs   -J&J+.J0J5c                   [        5       nUR                  [        R                  " SSS9[        R                  " SSS9[        R                  " SSS9[        R                  " SS9[        R                  " SSS9[        R                  " SSS9[        R                  " SSS9/5        [        5       nUR                  [        R                  " S	SS9[        R                  " S
SS9/5        [        5       nUR                  [        R                  " SS9[        R                  " SS9/5        [        5       nUR                  SU/5        UR                  SU/5        UR                  SU/5        UR                  5       R                  5       nU R                  [        UR                  [        R                  5      5      S5        U R                  [        UR                  [        R                  5      5      S5        g )NG4r6   rZ  r  rf   rq   r5   r  A3F3r   r   r   )r
   rX   r   r<   r  r	   r@   r  r  r   r   rt  r   r  )rB   r  r  r  r   r  s         rH   testMakeChordsBuiltDTest.testMakeChordsBuiltD  st   V
		499T399T399T3991-99T399T399T3 	 V
		499T399T37 	8 V
		4991-991- 	 G	!R	!R	!Ryy{##%T44TYY?@!DT44U[[ABAFrK   c                    [         R                  " 5       S-  S-  n[        R                  " U5      nUR                  S   nUR                  S5      nU R                  UR                  S5        g)zJ
problems with getting elements at or before when triplets were involved.
r"  ztripletOffsetBugtest.xmlr   r6   N)r   r2  r   r   r   r  r   r+  )rB   bugtestFiler   rv   r   s        rH   testGetElementAtOrBeforeBarline$Test.testGetElementAtOrBeforeBarline'  s\     ..08;>XXOOK(GGAJ""1%1%rK   c                   [         R                  " 5       nSUl        [         R                  " 5       nSUl        [        R                  " 5       n[        5       nUR                  U5        U R                  UR                  S5        U R                  [        U5      S5        U R                  US   U5        U R                  UR                  U5      S5        U R                  US   R                  U5        UR                  U5        U R                  [        U5      S5        U R                  US   U5        U R                  UR                  U5      S5        U R                  US   R                  U5        U R                  U Vs/ s H  oUR                  PM     snSS/5        UR                  U5        U R                  [        U5      S5        U R                  US   U5        U R                  UR                  U5      S5        U R                  US   U5        U R                  UR                  U5      S5        U R                  UR                  S	5        U R                  U Vs/ s H  oUR                  PM     sn/ S
Q5        U R                  UR                  U5      S5        U R                  UR                  U5      S	5        UR                  SS5      R!                  5       nU R                  [        UR"                  5      S5        UR                  SS5      R!                  5       nU R                  [        UR"                  5      S5        U R                  US   U5        U R                  UR%                  S	5      U5        U R                  UR%                  S5      U5        U R                  UR'                  U5      U5        U R                  UR'                  U5      U5        UR)                  [        R                  5      R!                  5       nU R                  [        U5      S5        U R                  US   U5        U R                  U Vs/ s H  oUR                  PM     snS/5        [         R                  " 5       n	SU	l        UR                  U	5        U R                  XR                  U5         R                  S5        U R                  U Vs/ s H  oUR                  PM     snSS/5        UR+                  [        R                  5      n
U R                  [        U
5      S5        U R                  [        U
R"                  5      S5        UR+                  [         R                  5      nU R                  [        U5      S5        U R                  [        UR"                  5      S5        [,        R.                  " U5      nU R                  U Vs/ s H  oUR                  PM     sn/ S
Q5        U R1                  [3        US   5      [3        U5      5        U R5                  US   [        R                  5        [        R                  " 5       nUR7                  X=5        U R                  [3        US   5      [3        U5      5        U R                  UR9                  S5      U5        U R                  [        U5      S5        U R                  U Vs/ s H  oUR                  PM     snSS/5        UR                  U5        U R                  U Vs/ s H  oUR                  PM     sn/ S
Q5        U R                  UR9                  S5      U5        U R                  U Vs/ s H  oUR                  PM     snSS/5        U R                  UR                  U5      S5        gs  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )3
Test adding elements at the highest time position
r   r   r5   r   r6   r         >@r7   r  )r   r   r  r   <   r  r}   r  N)r   r<   r   r   rR  r   rX   r   rS  r   indexr  
storeAtEndr   r  rl  r"  r  r  getElementAfterElementrt  getElementsNotOfClassrY   rZ   assertNotEqualr   rm  r  pop)rB   r
  r  r  r   r   found1found2sub1r  sub2sub3sCopyr  s                 rH   testElementsHighestTimeATest.testElementsHighestTimeA1  s    YY[YY[[[]H	+Q#1r"a(1!, 	
RQ#1r"a(1!,A.Aq((A.d<	Q#1r"a(1r"a(+A.Aq((A.@ 	,c2,b1 &&q"-446V112A6&&r2.557V112A6B' 	//3R8//3R8 	11"5r:11"5r: ##CKK0779TA&a"%D1Dq((D1C59 YY[Bjjn-44d;D1Dq((D1C;? &&s{{3TA&T//0!4&&tyy1TA&T//0!4 a E2Eq((E2ODBuQxL"R&1eAh4 [[]			"AaD2b6* 	q2&Q#A.Aq((A.b	: 	
RA.Aq((A.@ 	q2&A.Aq((A.d<a(i / /: 2 2 3 / /
 /s0   ^0'^5^:^? _!_	 _/_c                ~   [        5       nU R                  [        5         UR                  S5        S S S 5        [        R
                  " 5       nSUR                  l        U R                  [        5         UR                  U5        S S S 5        [        R                  " 5       nUR                  U/5        U R                  [        5         UR                  U/5        S S S 5        [        R                  " 5       nUR                  SU5        U R                  UR                  S5        U R                  UR                  USS9S5        U R                  [        5         UR                  U5        S S S 5        g ! , (       d  f       GNN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r   T)returnSpecial)r   r   r   r  r   r<   r   r   r   rR  r@   r   r   r  )rB   r   r   rE   r  s        rH   testStoreAtEndFailuresTest.testStoreAtEndFailures  s-   H/LLO 0 IIK#&

 /LLO 0 KKM	aS /LL! 0 [[]	BA&4@!D/LL 0/+ 0/
 0/ 0/ 0/s/   E95FFF.9
F
F
F+.
F<c                   [         R                  " 5       nSUl        [         R                  " 5       nSUl        [        R                  " 5       n[        5       nUR                  U5        UR                  U5        UR                  U5        U R                  U Vs/ s H  oUR                  PM     sn/ SQ5        UR                  S5        U R                  U Vs/ s H  oUR                  PM     sn/ SQ5        UR                  US5      nU R                  U Vs/ s H  oUR                  PM     sn/ SQ5        UR                  USS5      nU R                  U Vs/ s H  oUR                  PM     snSS/5        g	s  snf s  snf s  snf s  snf )
r  r   r   )r   r  r  r3   )r        A@     K@r   r   r  N)r   r<   r   r   rR  r   rX   r  r   r   shiftElementsextractContext)rB   r
  r  r  r   r   r  s          rH   testElementsHighestTimeBTest.testElementsHighestTimeB  s3    YY[YY[[[]H			RA.Aq((A.0AB 	
A.Aq((A.0AB !!"b)F3Fq((F35FG!!"a,F3Fq((F3dD\B /
 / 4 4s   E:E?FF	c                   [         R                  " 5       nSUl        [         R                  " 5       nSUl        [        R                  " S5      n[
        R                  " 5       n[        R                  " 5       n[        5       nUR                  U5        U R                  U Vs/ s H  owR                  PM     snS/5        UR                  U5        UR                  U5        UR                  U5        U R                  U Vs/ s H  owR                  PM     sn/ SQ5        UR                  U5        U R                  U Vs/ s H  owR                  PM     sn/ SQ5        U R                  U Vs/ s H  owR                  S   PM     sn/ SQ5        [
        R                  " 5       nUR                  U5        U R                  U Vs/ s H  owR                  S   PM     sn/ S	Q5        g s  snf s  snf s  snf s  snf s  snf )
Nr   r   6/8r   )r   r  r  r  )r   r  r  r  r  r   )r<   r<   rR  Treble8vaClefr;   )r<   r<   rR  rR  r  r;   )r   r<   r   r   r;   r   rR  r   r  r   rX   r   r   r  classes)	rB   r
  r  ts1r  rG  r   r   r  s	            rH   testElementsHighestTimeCTest.testElementsHighestTimeC  s{   YY[YY[!!%([[]!H	A.Aq((A.6	R	R	SA.Aq((A.0GH	A.Aq((A.0MN21))A,2V	X [[]	R21))A,2a	c /
 / /2
 3s   #G*G/G40G9G>c                0  ^ [        5       m[        R                  " 5       nSUl        [        R                  " 5       nSUl        [        R                  " 5       nSUl        [        R                  " 5       nSUl        XX44 H  nTR	                  U5        M     TR                  SSS9nU R                  UR                   Vs/ s H  oUR                  R                  PM     sn/ SQ5        TR                  S	SS9nU R                  UR                   Vs/ s H  oUR                  R                  PM     sn/ S
Q5        TR                  SSS9nU R                  UR                   Vs/ s H  oUR                  S L PM     sn/ SQ5        U R                  [        U4S j5        TR                  SSS9nU R                  UR                   Vs/ s H  oUR                  R                  PM     sn/ SQ5        TR                  SUSS9nU R                  UR                   Vs/ s H  oUR                  S L PM     sn/ SQ5        [        5       m[        R                  " 5       nSUl        [        R                  " 5       nSUl        [        R                  " 5       nSUl        TR	                  U5        TR	                  U5        TR	                  U5        U R                  TR                  S5        TR                  5       nUR                  SS9  U R                  UR                  5       R                   Vs/ s H  oUR                  R                  PM     sn/ SQ5        UR                  S/SS9  U R                  UR                  5       R                   Vs/ s H  oUR                  R                  PM     sn/ SQ5        [        5       m[        R                  " S5      nSUl        [        R                  " S5      nSUl        [        R                  " S5      nSUl        [        R                  " S5      nSUl        XX44 H  nTR	                  U5        M     TR                  SSS9nU R!                  [#        S UR                   5       5      5        [        5       m[        R                  " 5       nS	Ul        [        R                  " 5       nSUl        [        R                  " 5       nSUl        [        R                  " 5       nSUl        XX44 H  nTR	                  U5        M     TR                  SSS9nU R                  UR                   Vs/ s H  oUR                  S L PM     sn/ SQ5        g s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )Nr5   r6   r   r   r   Fr  )(rO   r$  r$  r$  r$  r$  r$  rP   rO   r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  rP   rO   r$  r$  rP   rO   r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  rP   r   )rO   r$  r$  rP   rO   r$  r$  r$  r$  r$  r$  rP   rO   rP   rO   r$  r$  r$  r$  rP   )
FFFFFFTFFFc                 $   > T R                  SSS9$ )Nr  Fr  )sliceByQuarterLengths)r   s   rH   <lambda>5Test.testSliceByQuarterLengthsBuilt.<locals>.<lambda>  s    !"9"9%"9"OrK   ra  )rO   r$  r$  r$  r$  rP   rO   r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  rP   rO   r$  rP   rO   r$  r$  r$  r$  r$  r$  r$  rP   )targetr  )TFFFFFFFFFFFFFFFFTTr   r*  T)rO   rP   rO   rP   rO   rP   )0rO   r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  rP   rO   r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  rP   rO   r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  rP   rs   r   r   r   c              3  <   #    U  H  oR                   S Lv   M     g 7fr  r$   r  s     rH   r  6Test.testSliceByQuarterLengthsBuilt.<locals>.<genexpr>n  s     J7I!EE-7Is   )TTFFFFF)r   r   r<   r   rX   r  r   r  r%   r2   r   r   rS  r  r  r  r   r  )	rB   r
  r  r  r  r   r  r  r   s	           @rH   testSliceByQuarterLengthsBuilt#Test.testSliceByQuarterLengthsBuilt  s   HYY[YY[YY[YY["!AHHQK " &&ue&<d.@.@A.@%%**.@AF	G &&tU&;d.@.@A.@%%**.@A:	; &&sE&:1C1CD1CA%%4-1CD^	` 	/O	Q &&ue&<d.@.@A.@%%**.@A^	_ &&uR&G1C1CD1CA%%4-1CD&	' HYY[YY[YY[			+NN$	4(i.?.?.A.O.OP.O%%**.OPL	N
 	''t'<!*!2!2!4!B!BC!BAUUZZ!BC!		" HYYt_YYt_YYt_YYt_"!AHHQK " &&ue&< 	Jt7I7IJJKHYY[YY[YY[YY["!AHHQK " &&sE&:1C1CD1CA%%4-1CDH	Jq B B E B E8 Q Dd Es0   U0U5%U:	U?V0V	VVc                   [         R                  " S5      n[        R                  " U5      nUR                   H#  nUR                  SSSS9  UR                  SS9  M%     U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S	   R                  5       R                  5      S5        U R                  [        UR                  S
   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        [        R                  " U5      nUR                   H#  nUR                  SSSS9  UR                  SS9  M%     U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S	   R                  5       R                  5      S5        U R                  [        UR                  S
   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        [        R                  " U5      nUR                  SSSS9  U R                  [        UR                  S   R                  5       R                  5      S5        U R                  [        UR                  S	   R                  5       R                  5      S5        U R                  [        UR                  S
   R                  5       R                  5      S5        U R                  [        UR                  S   R                  5       R                  5      S5        g )Nbwv66.6r   TFr  addTiesr  r   r  r5   r6   r7   r      )r   r   rY   rZ   r   r  r   r   r   r  r  )rB   sSrcr   rv   s       rH   !testSliceByQuarterLengthsImported&Test.testSliceByQuarterLengthsImported  s   ||I&MM$A##Cu#EKKK%  	QWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"EMM$A##D$#FKKK%  	QWWQZ//1??@#FQWWQZ//1??@#FQWWQZ//1??@#FQWWQZ//1??@#F MM$	T5AQWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"ErK   c                   [        5       n[        R                  " 5       nSUl        [        R                  " 5       nSUl        [        R                  " 5       nSUl        [        R                  " 5       nSUl        X#XE4 H  nUR	                  U5        M     UR                  SS9nU R                  [        UR                  5       R                  5      S5        U R                  UR                   Vs/ s H  ofR                  R                  PM     sn/ SQ5        [        5       n[        R                  " 5       nSUl        [        R                  " 5       nS	Ul        [        R                  " 5       nSUl        [        R                  " 5       nSUl        X#XE4 H  nUR	                  U5        M     UR                  SS9nU R                  [        UR                  5       R                  5      S
5        U R                  UR                   Vs/ s H  ofR                  R                  PM     sn/ SQ5        g s  snf s  snf )Ng      ?r6   r   r   Fr     )rO   r$  r$  r$  r$  r$  rP   rO   r$  r$  r$  r$  r$  r$  rP   rO   rP   rO   r$  r$  r$  r$  rP   r  r;  )rO   r$  r$  r$  r$  r$  r$  r$  r$  r$  r$  rP   rO   rP   rO   r$  rP   rO   r$  r$  r$  r$  r$  r$  r$  rP   )r   r   r<   r   rX   sliceByGreatestDivisorr   r   r  r  r%   r2   )rB   r   r
  r  r  r  r   r  s           rH   testSliceByGreatestDivisorBuilt$Test.testSliceByGreatestDivisorBuilt  s   HYY[YY[YY[YY["!AHHQK "'''6T\\^99:B?d.@.@A.@%%**.@AR	S HYY[YY[ YY[YY["!AHHQK "'''6T\\^99:B?d.@.@A.@%%**.@AF	G) B( Bs   2H6H;c                v   [         R                  " S5      nUR                   H  nUR                  SSS9  M     U R	                  [        UR                  S   R                  5       R                  5      S5        U R	                  [        UR                  S   R                  5       R                  5      S5        U R	                  [        UR                  S   R                  5       R                  5      S	5        U R	                  [        UR                  S
   R                  5       R                  5      S5        g )Nr  Tr  r   rw  r5   ;   r6   =   r7   r  )r   r   r   r!  r   r   r  r  )rB   r   rv   s      rH   "testSliceByGreatestDivisorImported'Test.testSliceByGreatestDivisorImported  s    LL#A$$T4$@  	QWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"EQWWQZ//1??@"ErK   c                   [        5       n[        R                  " 5       nSUl        UR	                  U5        UR                  / SQSS9  U Vs/ s H  o3R                  UR                  4PM     nn/ SQnU R                  XE5        g s  snf )Nrq   )r5   r6   r7   Tr  )r   r   r   r   r   r   )r   r   )r   r   r<   r   rX   sliceAtOffsetsr   r   )rB   r   r   r   rC   rE   s         rH   testSliceAtOffsetsSimpleTest.testSliceAtOffsetsSimple  sp    HIIK		D1234!Qhh(!4< 5s   !Bc                   [        5       nS H2  u  p#[        R                  " U5      nX4l        UR	                  U5        M4     U R                  U Vs/ s H  oUR                  PM     snS/5        UR                  / SQSS9nU R                  U Vs/ s H  oUR                  UR                  4PM     sn/ SQ5        UR                  S/SS9nU R                  U Vs/ s H  oUR                  UR                  4PM     snSS	/5        [        5       nS
 H2  u  p#[        R                  " U5      nX4l        UR	                  U5        M4     U R                  U Vs/ s H  oUR                  PM     sn/ SQ5        UR                  S/SS9nU R                  U Vs/ s H  oUR                  PM     sn/ SQ5        UR                  SS/SS9  U R                  U Vs/ s H  oUR                  PM     sn/ SQ5        UR                  / SQSS9  U R                  U Vs/ s H  oUR                  PM     sn/ SQ5        U R                  U Vs/ s H  oUR                  PM     sn/ SQ5        g s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )N))r   rq   r   )r   r5   r   r6   r  r7   r2  Fr  )r   r   )r   r   )r   r   )r   r   )r   r   )r  r   )r   r   )r2  r   r   r1  )r   r2  )a2r   r2  r2  )r   r   r   )r   r   r   r   r   r  T)r   r   r   r   r  r   )r   r   r2  r   )	r   r   r   r   r   r  r   r2  r   )	r   r   r   r   r   r   r   r   r   )r   r   r<   r   rX   r   r   r-  )rB   r   rv   r  r   r   rk   s          rH   testSliceAtOffsetsBuiltTest.testSliceAtOffsetsBuilt  s)   H EA		!A OHHQK ! 	A.Aq((A.6;UKrBr!88Q__5rB>	? seU3rBr!88Q__5rBZQ[D\]H<EA		!A OHHQK = 	A.Aq((A.@seU3B/Bq((B/1EF
3*d3B/Bq((B/1OP
.=B/Bq((B/1^_262a//26F	H1 / C
 C / 0//6s0   I%!I*!I/I4I9I>JJc                $   [         R                  " S5      nUR                  S   R                  5       R	                  / SQ5      nU R                  U Vs/ s H  o3R                  PM     sn/ SQ5        UR                  S   R	                  / SQ5      nU R                  UR                  [        5      S   R                   Vs/ s H  o3R                  PM     sn/ SQ5        U R                  UR                  [        5      S   R                   Vs/ s H  o3R                  PM     sn/ SQ5        U R                  UR                  [        5      S	   R                   Vs/ s H  o3R                  PM     sn/ S
Q5        g s  snf s  snf s  snf s  snf )Nr  r   )r   r         
@)0r   r   r   r   r   r   r   r   r   r   r   r   r7  r   r   r  r.  r  r  r  r_  r  r,  r  r  r2  rd  r  re  r        3@r  r  r  r        7@r        9@rg        ;@      =@r  r       @@r       @A@r   r  )r   r   r7  g     A@)r   r   r   r5   )r   r   r   r   r  r   rQ   )r   r   r   r   g      @)
r   r   r   r  r-  r   r   rt  r   r  rB   r  r  r   s       rH   testSliceAtOffsetsImportedTest.testSliceAtOffsetsImported  sb   ||I&zz!}$$&556HID1Dq((D1\	] zz!}++,FG11':1=KKMK ()((KM)	+ 	11':1=KKMK ()((KM9	; 	11':2>LLNL ()((LN4	6 2MMNs   E>FFFc                   [        5       n[        R                  " S5      nUR                  SU5        S H2  u  p4[        R
                  " U5      nXEl        UR                  U5        M4     U R                  U Vs/ s H  ofR                  PM     snSS/5        UR                  5       nU R                  UR                   Vs/ s H  ofR                  UR                  4PM     sn/ SQ5        UR                  U5        [        R                  " S5      nUR                  SU5        UR                  5       nU R                  UR                   Vs/ s H  ofR                  UR                  4PM     snSS/5        g s  snf s  snf s  snf )	Nr/   r   ))r   r7   r   )r*  r+  r,  r  )r   r   r  )r   r   r;   r@   r   r<   r   rX   r   r   sliceByBeatr  rb  )	rB   r   r
  rv   r  r   r   rk   ts2s	            rH   testSliceByBeatBuiltTest.testSliceByBeatBuilt#  s8   H!!%(	C EA		!A OHHQK !
 	A.Aq((A.c
;]]_r?O?OP?O!88Q__5?OP=	? 	
!!%(	C]]_r?O?OP?O!88Q__5?OP$j1	3 / Q Qs   :E;!F !Fc                    [         R                  " S5      nUR                  S   R                  5       nU R	                  UR                  5       R                   Vs/ s H  o3R                  PM     sn/ SQ5        g s  snf )Nr  r   )'r   r   r   r   r   r   r   r  r.  r  r  r_  r  r,  r  r  r2  rd  r  re  r  r8  r  r  r  r9  r  r:  rg  r;  r  r<  r  r  r  r=  r  r>  r   )r   r   r   rC  r   r  r  r   r?  s       rH   testSliceByBeatImportedTest.testSliceByBeatImported:  s_    ||I&zz!}((*DLLN,H,HI,Hq((,HID	EIs   A;c                   [         R                  " S5      nUR                  SSSS9nU R                  UR                  S   R                  5       R                   Vs/ s H  o3R                  PM     sn/ SQ5        UR                  5       nU R                  UR                  5       R                   Vs/ s H  o3R                  PM     sn/ SQ5        U R                  [        U[        R                     5      S5        g s  snf s  snf )	Nluca/gloriar   r   F)gatherSpanners)8r   r   r2  r  r   r  r  r        !@r  r  r  rd  r       1@r  r  r8       3@r  r  r  r  r9  r  r:  rg  r;  r  r=  r>       A@r  rk  r       C@r  rf  rh       E@     F@     F@     @G@     G@      H@     H@     I@     I@      J@     @J@     J@     J@      K@     K@     L@     @M@)Gr   r   r2  r  r         @r  r  r  rM  r  r  r  rd  r  rN  r  r  r8  rO  r  r  r  g     5@r  r  r9  g     7@r  g     8@r:  g     9@rg  g     :@r;  r  r=  r>  rP  r  rk  r  rQ  r  r`  rf  rh  rR  rS  rT  g      G@rU  rV  g     G@rW  rX  rY  rZ  r[  r\  r]  r^  r_  g     @K@r  r`  g      L@g     @L@ra  rb  g     M@G   )r   r   r  r   r   r  r  r   r  r   r   r   r  )rB   r   r  r   s       rH   testChordifyImportedTest.testChordifyImportedE  s    LL'zz!Rz6 	DJJqM,A,A,C,Q,QR,Qq((,QR8	9 }} 	DLLN,@,@A,@q((,@AQ	R 	T%++./4' S Bs   C>2Dc                	   [        5       nS HK  u  p#Uc  [        R                  " 5       nO[        R                  " U5      nX4l        UR                  U5        MM     [        5       nS HK  u  p#Uc  [        R                  " 5       nO[        R                  " U5      nX4l        UR                  U5        MM     U R                  U Vs/ s H  ofR                  PM     sn/ SQ5        U R                  U Vs/ s H  ofR                  PM     sn/ SQ5        [        5       nUR                  SU5        UR                  SU5        UR                  S   R                  5       nUR                  S   R                  5       n	U R                  [        UR                  5       5      S5        U R                  [        UR                  5       R                  [        R                   5      5      S5        U R                  [        UR                  5       R                  [        R                  5      5      S	5        U R                  [        U	R                  5       5      S
5        U R                  [        U	R                  5       R                  [        R                   5      5      S5        U R                  [        U	R                  5       R                  [        R                  5      5      S5        UR                  5       n
U
R                  5       nU R                  [        UR                  5       R                  [        R                   5      5      S5        U R                  [        UR                  5       R                  [        R                  5      5      S	5        UR                  5       nU R                  [        UR                  5       R                  [        R                   5      5      S5        U R                  [        UR                  5       R                  [        R                  5      5      S	5        U R                  [#        UR                  [        R                   5      R%                  5       R&                  5      S5        U R                  [#        UR                  [        R                   5      S   R&                  5      S5        g s  snf s  snf )N)r  )r   r6   r  )e3r6   )r  r6   )r  r  )zd#3r5   r  )e-5r6   r  )r   r   r   r  r  )r   r   r   r   r  r  r   r5   r3   r7   r6   r   rq   z5(<music21.pitch.Pitch D2>, <music21.pitch.Pitch C#3>)z5(<music21.pitch.Pitch D2>, <music21.pitch.Pitch D#3>))r
   r   r  r<   r   rX   r   r   r	   r@   r   r  r   r  rt  r   r  r   r  r~  )rB   r  rv   r  r   r  r   scorep1Chordsp2Chords	scoreFlatscoreChordsscoreChordifys                rH   testChordifyRestsTest.testChordifyRestsc  sc   VLEAyIIKIIaL OIIaL M VZEAyIIKIIaL OIIaL [ 	B/Bq((B/1JKB/Bq((B/1OPQQ ;;q>**,;;q>**,X--/0!4X--/BB5;;OPRSTX--/BB499MNPQRX--/0!4X--/BB5;;OPRSTX--/BB499MNPQR MMO	((*[002EEekkRSUVW[002EEdiiPQSTU(]224GGTUWXY]224GG		RSUVW]==ekkJPPRZZ[P	R]==ekkJ1MUUVP	RA 0/s   S4Sc                   [        5       nUR                  S[        R                  " SS95        UR                  S[        R
                  " S5      5        U R                  UR                  S5        [        5       nUR                  [        R                  " S5      S5        [        5       nUR                  SU5        UR                  SU5        UR                  5       nU R                  [        UR                  [        R                  5      5      S5        U R                  [        UR                  [        R                  5      R!                  5       R"                  5      S5        [        5       nUR                  S[        R                  " SS95        UR                  S[        R
                  " S5      5        U R                  UR                  S5        [        5       nUR                  [        R                  " SS	S9S
5        [        5       nUR                  SU5        UR                  SU5        UR                  5       nU R                  [        UR                  [        R                  5      5      S
5        U R                  [        UR                  [        R                  5      R!                  5       R"                  5      S5        g )Nr   r  rZ  r   r  r  r  z4(<music21.pitch.Pitch C4>, <music21.pitch.Pitch G4>)r  r6   )r
   r@   r   r<   r   r^  r   rS  r   r	   r  r   rt  r   r  r   r  r~  )rB   r  r  r   r  s        rH   testChordifyATest.testChordifyA  s   V
		!TYYT23
		$226:;.V
		$,G	B	Bzz|T44U[[ABBGT44U[[AGGIQQRO	Q V
		!TYYT23
		$226:;.V
		$c:A> G	B	Bzz|T44U[[ABAFT44U[[AGGIQQRO	QrK   c                `   [        5       n[        5       n[        R                  " S5      Ul        UR                  S[        R                  " 5       5        UR                  5         U R                  UR                  S5        [        5       nUR                  [        R                  " 5       S5        UR                  X#/5        [        5       n[        5       n[        R                  " S5      Ul        UR                  [        R                  " 5       S5        UR                  5         U R                  UR                  S5        [        5       nUR                  [        R                  " S5      S5        UR                  XV/5        [        5       nUR                  SU5        UR                  SU5        UR                  5       nU R                  [!        UR#                  [        5      5      S5        UR#                  [        5      R%                  5       n	U R                  U	R                  S5        g )Nr   r   r   rq   r5   r  r6   )r
   r   r   r;   r   r@   r   r<   padAsAnacrusisr   paddingLeftr   rX   r  r	   r  r   rt  r  )
rB   r  m1am2ar  m1bm2br   r  r0  s
             rH   testChordifyBTest.testChordifyB  s   Vi!//6

1diik"#.ia(
		3*Vi!//6a(#.i4!,
		3*G	B	Bzz|T44W=>B$$W-335-rK   c                   [         R                  " S5      nUR                  R                  5       R	                  [
        5      R                  5       nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  R                  S5        U R                  UR                   Vs/ s H  o3R                  PM     snS/5        UR                  5       nU R                  UR	                  [
        5      R                  5       R                  S5        / nUR	                  [
        5       HF  nU R                  UR                  5       5        UR!                  [#        UR$                  5      5        MH     U R                  U/ SQ5        U R                  [#        UR'                  5       R	                  [(        R*                  5      5      S5        gs  snf )z2
Chordifies with triplets (floating point errors)
zschoenberg/opus19/movement6r   r   r   )
r7   r9  r9  r  r  r@  r  r   r@     rq   N)r   r   r   r  rt  r   r   rS  rw  r   r   r   r   r  r   	hasVoicesrX   r   r~  r  r   r  )rB   r   r0  r   r  r)  r   s          rH   testChordifyCTest.testChordifyC  s\    LL67WW]]_//8>>@ 	--22C8BHH5Hq((H5u=zz|009??AMMsS
 ((1AQ[[]+LLQYY( 2 	 DET\\^>>tyyIJAN 6s   	G0c                   [        5       nUR                  [        R                  " SS9S5        [        5       nUR                  [        R                  " SSS9S5        [        5       nUR	                  SU5        UR	                  SU5        UR                  5       nU R                  [        UR                  [        R                  5      5      S5        g )	Nr7   rZ  rq   r  r6   r   r   r   )r   r   r   r<   r@   r  r   r   rt  r   r  )rB   rk   rl   r  r  s        rH   testChordifyDTest.testChordifyD  s    X
		2A6X
		$a8!<X
		!R
		!R{{}T44U[[ABAFrK   c                   [        5       n[        5       n[        5       nUR                  [        R
                  " SSS9S5        [        5       nUR                  [        R
                  " SS9S5        UR                  SU5        UR                  SU5        UR                  U5        UR                  5       nU R                  [        U[        R                     5      S5        g )	Nr  r   rZ  r7   r5   r   r   r   )r   r   r   r   r   r<   r@   rX   r  r   r   r   r  )rB   rk   r0  r7  r8  r  s         rH   testChordifyETest.testChordifyE  s    XYW
		$c:A>W
		2A6
		!R
		!R 			"{{}T%++./3rK   c                   SS K n[        R                  " S5      nUR                  S5      nU R	                  UR
                  R                  S5        UR                  S5      nU R	                  UR
                  R                  S5        UR                  UR                  S5      5      nU R	                  UR
                  R                  S5        g )Nr   zessenFolksong/erk5blauenz"Ich sach mir einen blauen Storchenz	pfal.gr.fzEs fuhr sich ein PfalzgrafzPfal(.*))rer   r   getScoreByTitler   r   r  compile)rB   r  r   r   s       rH   testOpusSearchTest.testOpusSearch  s    LL-.h'))+OPk*))+GHbjj45))+GHrK   c                   [        [        [        [        R                  " 5       5      5      5      n[        [        [        [        R                  " 5       5      5      5      n[        X/5      nU R                  UR                  U5      S5        g)zc
Providing a sequence of Scores to an Opus container should append
rather than insert each at 0.0.
r   N)r	   r
   r   r   r<   r   r   r  )rB   rk   rl   r   s       rH   testOpusSequenceTest.testOpusSequence%  s\    
 4		,-.4		,-."N,c2rK   c                l   [        5       n[        5       nUR                  U5        U R                  UR                  U5        UR	                  SS9nU R                  UR                  U5        UR	                  5       nU R                  UR                  U5        UR	                  5       nU R                  UR                  U5        UR	                  SS9nU R                  UR                  U5        UR
                  R                  [        R                  5      nU R                  UR                  U5        UR
                  R                  [        R                  5      nU R                  UR                  U5        UR                  [        R                  5      nU R                  UR                  U5        g )NTretainContainers)r   rX   r   r  r  r    getObjByClassr   r;   r   r  r  )rB   outerinnerr   s       rH   testActiveSiteManglingTest.testActiveSiteMangling/  sN   U))51}}d}3))51}}))51 }}))51
 }}d}3))51 {{(()<)<=))51{{((3))51&&tyy1))51rK   c                f   [         R                  " S5      nUR                   GH
  nUR                  [        5       H  nUR
                  S   nUR                  [        R                  5      nU R                  [        U[        R                  5      U5        UR                  [        R                  5      nU R                  [        U[        R                  5      U5        UR                  [        R                  5      nU R                  [        U[        R                  5      U5        M     GM     g )Nr  r   )r   r   r   rt  r   r   r  r   r  r   r  r   r;   r   rk  )rB   r   rv   r   r   r  s         rH   testGetElementsByContextStream#Test.testGetElementsByContextStreamP  s    LL#A))'2GGAJ**4995
4 ;TB**5+>+>?
41D1D EtL**3+;+;<
41A1A BDI 3 rK   c                   [        5       n[        R                  " S5      nSUl        UR	                  US5        [        5       n[        R                  " S5      nSUl        UR	                  US5        [        5       nUR                  SU5        UR                  SU5        UR                  5       nU R                  [        R                  " [        U5      S5      5        [        5       nUR                  SU5        U R                  [        US   R                  5      S5        U R                  US   R                  S    Vs/ s H  oR                   PM     sn/ S	Q5        U R                  US   R                  S    Vs/ s H  oR                   PM     snS
S/5        ["        R$                  " 5       n	U	R'                  U5      R)                  S5      n
g s  snf s  snf )Nr  r   rq   r  r5   r6   r   a"  [OffsetMap(element=<music21.note.Note D>, offset=0.0, endTime=0.5, voiceIndex=0),
            OffsetMap(element=<music21.note.Note D>, offset=0.5, endTime=1.0, voiceIndex=0),
            OffsetMap(element=<music21.note.Note D>, offset=1.0, endTime=1.5, voiceIndex=0),
            OffsetMap(element=<music21.note.Note D>, offset=1.5, endTime=2.0, voiceIndex=0),
            OffsetMap(element=<music21.note.Note C>, offset=0.0, endTime=1.0, voiceIndex=1),
            OffsetMap(element=<music21.note.Note C>, offset=1.0, endTime=2.0, voiceIndex=1)]r  r   r   r  )r   r   r<   r   r   r   r@   	offsetMapr   r   whitespaceEqualr  r
   r   r   r6  r   r)   r  r   r  )rB   r7  r
  r8  r  r   oMap	oMeasuresr   r  r  s              rH   testVoicesATest.testVoicesA]  s   WYYt_
AWYYt_
AI	B	B {{}..J`a 	b F	AYq\00115IaL,?,?,BC,Bq((,BC-	/IaL,?,?,BC,Bq((,BCs	% ,,.IIaL''0	 DCs   GGc                   [        5       n[        R                  " S5      nSUl        UR	                  US5        [        5       n[        R                  " S5      nSUl        UR	                  US5        [        5       n[        R                  " S5      nSUl        UR	                  US	5        [        5       n[        R                  " S
5      nSUl        UR	                  US5        [        5       n	U	R                  SU5        U	R                  SU5        U	R                  SU5        U	R                  SU5        U	R                  5       n
[        S5       H*  nU R                  [        X   R                  5      S5        M,     [        S5       H8  nU R                  [        X   R                  5       R                  5      S5        M:     [        S5       H  nU R                  [        X   R                  S   R                  5      S5        U R                  [        X   R                  S   R                  5      S5        U R                  [        X   R                  S   R                  5      S5        U R                  [        X   R                  S   R                  5      S5        M     [        R                  " 5       nUR!                  U
5      R#                  S5      ng )Nr  r       r  r5   r   r   r   @   rH  rq   r   r7   r  r   r6   r  )r   r   r<   r   r   r
   r@   r  rW   r   r   r6  r  r  r)   r  r   r  )rB   r7  r
  r8  r  v3r  v4r  r   r  rb   r  r  s                 rH   testVoicesALongerTest.testVoicesALonger  s/    WYYt_
BWYYt_
BWYYt_
BWYYt_
AF	B	B	B	BNN$	 qAS!4!45q9  qAS!5!5!7!E!EFK  qAS!4!4Q!7!E!EFJS!4!4Q!7!E!EFJS!4!4Q!7!E!EFKS!4!4Q!7!E!EFJ	  ,,.IIi(//8	rK   c                .   [        5       n[        R                  " S5      nSUl        UR	                  US5        [        5       n[        R                  " S5      nSUl        UR	                  US5        [        5       n[        R                  " S5      nSUl        UR	                  US	5        [        5       nUR                  S
U5        UR                  S
U5        UR                  S
U5        UR                  5       nU R                  [        UR                  [        5      5      S5        U R                  [        UR                  [        5      S
   R                  5      S5        U R                  [        UR                  [        5      S   R                  5      S5        U R                  [        UR                  [        5      S	   R                  5      S5        U R                  [        UR                  [        5      S   R                  5      S
5        g )Nr  r      r  r7   r   r   r   rq   r   r5   r6   r3   )r   r   r<   r   r   r   r@   r	  r   r   rt  r   r6  )	rB   r7  r
  r8  r  r  r  r   rx  s	            rH   testVoicesBTest.testVoicesB  s    WYYt_
BWYYt_
AWYYt_
AH	B	B	B U55g>?CU55g>qAHHI1MU55g>qAHHI1MU55g>qAHHI1MU55g>qAHHI1MrK   c                X   [        5       n[        R                  " S5      nSUl        UR	                  U/ SQ5        [        5       n[        R                  " S5      nSUl        UR	                  U/ SQ5        [        5       nUR                  SU5        UR                  SU5        UR                  SSS	9nU R                  [        [        UR                  S   R                  5      5      S
5        U R                  [        [        UR                  S   R                  5      5      S5        g )Nr  r   )r6   r  g      @rj  r  )r   r3  rc  g     +@r   TF)r'  r  z[<music21.note.Rest half>, <music21.note.Note C>, <music21.note.Rest 2.25ql>, <music21.note.Note C>, <music21.note.Rest 2.5ql>, <music21.note.Note C>, <music21.note.Rest 4.25ql>, <music21.note.Note C>, <music21.note.Rest half>]r5   z[<music21.note.Rest 16th>, <music21.note.Note C>, <music21.note.Rest 3.25ql>, <music21.note.Note C>, <music21.note.Rest dotted-quarter>, <music21.note.Note C>, <music21.note.Rest breve>, <music21.note.Note C>])r   r   r<   r   r>   r   r@   r  r   r   r   r6  r  )rB   r7  r
  r8  r  r   rx  s          rH   testVoicesCTest.testVoicesC  s    WYYt_
12WYYt_
45H	B	BT59T%,,q/"?"?@A7	8 	T%,,q/"?"?@AO	PrK   c           	        [         R                  " S5      nUR                  S5      nU R                  [	        UR
                  5      S5        UR
                  S   nU R                  [	        UR                  5       R                  [        R                  5      5      S5        UR                  [        5      S   nU R                  [	        UR                  5       5      S5        UR                  [        5      S   nU R                  [	        UR                  5       5      S5        UR                  [        5      S   nU R                  [	        UR                  5       5      S5        UR                  [        5      S   nU R                  [	        UR                  5       5      S5        UR                  SS5      nU R                  [	        UR                  5       R                  [        R                  5      5      S5        UR
                   H  nU R                  [	        UR                  [        5      R                  5       R                  5      S5        U R                  [	        UR                  S5      R                  5      S5        U R                  [	        UR                  SS5      R                  [        5      S   R                  5      S5        M     g )Nr  r6   r   r5   r   r9  r7   )r   r   partsToVoicesr   r   r   r  rt  r   r  r   r  r  r6  r  )rB   rx  rk   r  m1Rawm2Rawex1rv   s           rH   testPartsToVoicesATest.testPartsToVoicesA  s   \\)$a  	RXX*XXa[RZZ\<<TYYGH!L
 %%g.q1U]]_-q1 %%g.q1U]]_-q1 %%g.q1U]]_-q1 %%g.q1U]]_-q1
 kk!QS[[]==diiHI1M AS!5!5g!>!D!D!F!M!MNPQRS1!4!45q9S1"((1!"55;V=>?A	 rK   c                0   [         R                  " S5      nU R                  [        UR                  5      S5        UR                  SSS9nU R                  [        UR                  5      S5        U R                  [        UR                  S   R                  [        5      R                  5       R                  5      S5        U R                  [        UR                  S   R                  [        5      R                  5       R                  5      S5        g )Nrf  r7   r6   TpermitOneVoicePerPartr   r5   )
r   r   r   r   r   r  rt  r   r  r6  )rB   rx  rk   s      rH   testPartsToVoicesBTest.testPartsToVoicesB1  s    \\34RXX*at<RXX*RXXa[;;GDJJLSSTVWXRXXa[;;GDJJLSSTVWXrK   c                	   [         R                  " 5       n[         R                  " 5       n[        R                  " S5      n[        R                  " S5      n[	        5       n[	        5       n[
        R                  " SSS9n[
        R                  " SSS9n[
        R                  " SSS9n	[
        R                  " SSS9n
[
        R                  " SSS9n[
        R                  " SSS9n[
        R                  " SSS9n[
        R                  " SSS9nUR                  X[
        R                  " SS9Xx[
        R                  " SS9X[        R                  " X5      [        R                  " S	S
/5      [
        R                  " SS9[        R                  " S
S/5      [
        R                  " SS945        [        R                  " S5      Ul        UR                  X$[        R                  " SS/5      [
        R                  " SS9[        R                  " SS/5      [
        R                  " SS9[
        R                  " SS9X[
        R                  " SS9X45        [        R                  " S5      Ul        [!        5       nUR                  U5        UR                  [        R                  " Xx5      5        [!        5       nUR                  [        R                  " X5      5        UR                  [        R                  " X5      5        UR                  U5        [#        5       nUR%                  SU5        UR%                  SU5        UR'                  SSS9nU R)                  [+        U5      S5        U R)                  [+        US   R-                  S5      5      S5        U R)                  [+        US   S   5      S5        U R)                  [+        US   5      S5        U R/                  US   S   [        5        U R)                  US   S   S   U5        U R)                  US   S   S   U5        U R)                  [+        US   S   R0                  5      S5        U R)                  [+        US   S   S   S   5      S5        U R)                  US   S   S   S   S   S   U	5        U R)                  US   S   S   S   S   S   U
5        g )Nz12/8C#5rN   r1   r  A5zB-5C6r  r  r  rg   r  r  r   r6   Tr  r5   rO  r7   rq   )r   rj  r   r;   r   r   r<   rX   r  r!   rO  r   r  r   rR  rQ  r
   r	   r@   r  r   r   rt  rm  r6  )rB   clef1clef2r
  rD  r0  r1  r
  r  r  r  r  r  n7n8r  r  r   s_s                      rH   testPartsToVoicesSpannerTest.testPartsToVoicesSpannerh  s   !!!!&)!!&)YYYYu8,YYt(+YYt(+YYu8,YYt(+YYu8,YYt(+YYu8,
				x0"II8$bLL KKt%tyyh'?KKu&		x(@
 	 ++i0
		T4L1499(3KKKt%tyyh'?II8$bII8$b	
 	 ++i0V
		"
		',,r&'V
		',,r&'
		',,r&'
		"G	B	B__Qd_;R!$RU55f=>BRU6]+Q/RUQ'beAh0Aq!e,Aq!c*RU1X__-q1RU1Xa[0115Aq!V,Q/2B7Aq!V,Q/2B7rK   c           	     T   [         R                  " S5      nUR                  S5      nUR                  S   R	                  5       nU R                  [        UR                  5      S5        U R                  [        UR                  S   R                  5       R                  5      [        UR                  S   R                  5       R                  5      5        UR                  S5      nU R                  UR                  S   S5        U R                  [        UR                  S   R                  [        5      R                  5       R                  5      S5        UR	                  5       nU R                  [        UR                  S   R                  5       R                  5      [        UR                  S   R                  5       R                  5      5        U R                  [        [        UR                  S   R                  5       R                  5      5      [        [        UR                  S   R                  5       R                  5      5      5        U R                  [        UR                  S   R                  5       R                  5      [        UR                  S   R                  5       R                  5      5        U R                  [        [        UR                  S   R                  5       R                  5      5      [        [        UR                  S   R                  5       R                  5      5      5        U R                  [        UR                  S   R                  5       R                  5      [        UR                  S   R                  5       R                  5      5        U R                  [        [        UR                  S   R                  5       R                  5      5      [        [        UR                  S   R                  5       R                  5      5      5        U R                  [        UR                  S   R                  5       R                  5      [        UR                  S   R                  5       R                  5      5        U R                  [        [        UR                  S   R                  5       R                  5      5      [        [        UR                  S   R                  5       R                  5      5      5        [!        5       n[#        5       nUR%                  [&        R(                  " S5      S5        [#        5       nUR%                  [&        R(                  " S	5      S5        [#        5       nUR%                  [&        R(                  " S
5      S5        UR+                  SU5        UR+                  SU5        UR+                  SU5        UR	                  5       nU R                  [        UR                  5      S5        U R                  [        UR                  S   R                  5       5      [        UR                  5       5      5        U R                  [        UR                  S   R                  5       5      [        UR                  5       5      5        U R                  [        UR                  S   R                  5       5      [        UR                  5       5      5        U R                  [        UR                  S   R                  5       5      [        UR                  5       5      5        U R                  [        UR                  S   R                  5       5      [        UR                  5       5      5        g )Nr  r6   r   rq   r	   r5   r7   r   r  b5)r   r   r  r   voicesToPartsr   r   r  r  r	  rt  r   r  r6  r   r   r   r   r   r   r<   r@   )rB   rx  rk   rl   r7  r8  r  s          rH   testVoicesToPartsATest.testVoicesToPartsA  s=   \\)$a XXa[&&(RXX*RXXa[002@@ARXXa[002@@A	C a A0RXXa[;;GDJJLSSTVWXRXXa[002@@ARXXa[002@@A	CT"((1+"5"5"7"E"EFGT"((1+"5"5"7"E"EFG	I 	RXXa[002@@ARXXa[002@@A	CT"((1+"5"5"7"E"EFGT"((1+"5"5"7"E"EFG	I 	RXXa[002@@ARXXa[002@@A	CT"((1+"5"5"7"E"EFGT"((1+"5"5"7"E"EFG	I 	RXXa[002@@ARXXa[002@@A	CT"((1+"5"5"7"E"EFGT"((1+"5"5"7"E"EFG	I
 XW
		$+W
		$+W
		$+
		!R
		!R
		!RRXX*bhhqk1134d2::<6HIRXXa[0023S5FGbhhqk1134d2::<6HIRXXa[0023S5FGbhhqk1134d2::<6HIrK   c                   [         R                  " S5      n[        R                  " S5      n[        R
                  " S5      n[        R
                  " S5      n[        5       n[        5       nUR                  X[        R                  " SS945        X6l        [        5       n[        5       n[        5       n	UR                  [        R                  " SS95        U	R                  [        R                  " SS95        UR                  SU5        UR                  SU	5        XGl        UR                  Xg45        UR                  5       n
U
R                   H  nUR!                  5       nU R#                  X5        U R#                  X,5        U R%                  UR'                  [        5      S   R                  5        U R%                  UR'                  [        5      S   R                  5        M     g )	Nr  rh   r  r  r  r1   r   r5   )r   r  r   r;   r   rR  r	   r   rX   r   r<   rQ  r   r@   r  r   r  r   rF  rt  )rB   r  rD   r  r  r   r0  r1  r7  r8  	partScorer  flattenedParts                rH   *testVoicesToPartsNonNoteElementPropagation/Test.testVoicesToPartsNonNoteElementPropagation  s[   GGCL  '[[#[[!GY
		1$))012YWW
		$))()
		$))()
		!R
		!R	"OO%	OOD LLNMMM!+MM",  !8!8!A!!D!Q!QR  !8!8!A!!D!Q!QR $rK   c                   [        5       n[        5       n[        5       n[        R                  " S5      n[        R                  " S5      nUR                  U5        UR                  U5        UR	                  U5        U R                  [        U5      S5        U R                  [        US   5      [        US   5      5        U R                  [        US   5      [        US   5      5        UR	                  US/S9  U R                  [        U5      S5        UR	                  US/S9  U R                  [        U5      S5        g )	Nr   rr   r6   r   r5   r  )classFilterListr   )r   r   r<   rX   mergeElementsr   r   r   )rB   rk   rl   r  r
  r  s         rH   testMergeElementsTest.testMergeElements   s    XXXYYt_YYs^
		"
		"
R!$BqEBr!uI.BqEBr!uI.
fX6R!$
m_=R!$rK   c                   [         R                  " 5       n[         R                  " S5      n[         R                  " S5      nSUl        [        R                  " X5      n[        5       nUR                  U5        UR                  US5        UR                  U5        UR                  U5        U R                  UR                  S   UR                  S   R                  5       5        U R                  UR                  S   UR                  S   R                  5       5        [        R                  " U5      nU R                  [!        UR                  5      S5        U R                  UR                  S   UR                  S   R                  5       5        U R                  UR                  S   UR                  S   R                  5       5        U R                  [!        UR                  5      S5        U R                  UR                  S   UR                  S   R                  5       5        U R                  UR                  S   UR                  S   R                  5       5        U R                  UR                  S   R                  5       UR                  S   UR                  S   /5        ["        R$                  " 5       nUR'                  U5      R)                  S5      ng )	Nr  r   r   rq   r   rQ   r5   r  )r   r<   r   r!   rO  r   rX   r   r@   r   r  rQ  getSpannedElementsrY   rZ   r   r   r)   r  r   r  )	rB   r
  r  r  su1rk   rl   r  r  s	            rH   testDeepcopySpannersTest.testDeepcopySpanners  s   YY[YYt_YYull2"X
		"
A
		"
		#b&&q)2;;q>+L+L+NOb&&r*BKKN,M,M,OP]]2 	R[[)1-b&&q)2;;q>+L+L+NOb&&r*BKKN,M,M,OP 	R[[)1-b&&q)2;;q>+L+L+NOb&&r*BKKN,M,M,OPQ::<**1-r/?/?/CD	F ,,.IIbM((1	rK   c                  ^ [         R                  " S5      nUR                  S   nS nS nUR                  5       R                  nUS   n[        U5       H  u  pxU[        U5      S-
  :  a  XWS-      n	OM!  UR                  (       a  UnO*Ub!  U	R                  (       a  UR                  c  UnOXL a  UnUc  Md  Uc  Mi  UR                  [        R                  " X45      5        S nS nM     UR                  5       m0 n
UR                   H  nUR                  5       n[        U4S jUR                  5        5       5      n[        U4S jUR                  5        5       5      nX-
  nUR                   nX;  a  / X'   X   R#                  U5        M     [%        ['        U
R)                  5       5      5       H  n[+        X   5      [        X   5      -  nM      g )NrK  r   rQ   r5   c              3  F   >#    U  H  nTR                  U5      v   M     g 7fr  r  r  r   exFlats     rH   r  ,Test.testAddSlurByMelisma.<locals>.<genexpr>Z  !     P8O1v++A..8O   !c              3  F   >#    U  H  nTR                  U5      v   M     g 7fr  r  r  s     rH   r  r  [  r  r  )r   r   r   r  r  r  r   lyricsr%   r@   r!   rO  rQ  getFirstminr  beatStrrX   r   r   r  sum)rB   r   r  nStartnEndexFlatNotesnLastrb   r   nNextmelismaByBeatspoMinoMaxrI  r  
unused_avgr  s                    @rH   testAddSlurByMelismaTest.testAddSlurByMelisma9  s   LL'WWQZjjl00Bk*DA3{#a''#E*xx#!d&6		',,v45% +( ++BAP8M8M8OPPDP8M8M8OPPD+CiiG+)+&"))#.  d=#5#5#789G]34s=;Q7RRJ :rK   c                b    [        5       nUR                  [        R                  " S5      5        g )ND#4)r
   rX   r   r<   r  s     rH   testTwoZeroOffsetTest.testTwoZeroOffseth  s    F	5!"rK   c                Z   [        5       nUR                  [        R                  " S5      5        UR                  [        R
                  " SS95        UR                  [        R
                  " SS95        UR                  [        R
                  " SS95        UR                  [        R
                  " SS95        UR                  [        R
                  " SS95        UR                  5       nU R                  [        UR                  5       R                  5      S5        U R                  [        UR                  5       R                   Vs/ s H  o3R                  PM     sn5      S5        U R                  UR                  5       R                   Vs/ s H  o3R                  PM     sn/ SQ5        UR                  5       nU R                  [        UR                  5       R                   Vs/ s H  o3R                  PM     sn5      S5        U R                  UR                  5       R                   Vs/ s H  o3R                  PM     sn/ S	Q5        UR                  [         5      R#                  5       R                  nU R                  U Vs/ s H  o3R$                  PM     sn/ S
Q5        U R                  U Vs/ s H  nUR                  PM     sn/ SQ5        U R                  U Vs/ s H  o3R&                  PM     sn/ SQ5        U R                  UR                  [         5      S   R                   Vs/ s H  o3R$                  PM     snSS/5        U R                  UR                  [         5      S   R                   Vs/ s H  o3R                  PM     snSS/5        U R                  UR                  [         5      S   R                   Vs/ s H  o3R&                  PM     snSS/5        g s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )Nr   r0   r1   r  r   zI[None, None, <music21.tie.Tie start>, <music21.tie.Tie stop>, None, None])r   r   r   r   r   r   z[None, None, None, None, None])r   r   r   r   r   )r   r   r   )r   r   r   )124r5   r   r   r   r  r  )r   rX   r   r;   r   r<   r	  r   r   r  r  r   r%   r   r  rt  r   r  r   r  )rB   rk   rl   r   r  first_m_notesAndRestss         rH   testStripTiesBuiltBTest.testStripTiesBuiltBn  s>   X
		%%%e,-
		$))+,
		$))()
		$))()
		$))()
		$))+,__RZZ\778!<RZZ\-G-GH-Gee-GHIA	B 	2::<3M3MN3Ma//3MN7	9 \\^RZZ\-G-GH-Gee-GHI9	;2::<3M3MN3Ma//3MN2	4 !# 5 5g > D D F T T,AB,Aq((,AB(	*%:<%: //%:<(	* 	-BC-B))-BC(	* 	!44W=a@NNON!XXNO#J	 	&(&;&;G&DQ&G&U&UV&U__&UV#J	 	 " 5 5g >q A O OP O1YY OP#J	7 I O IN C< D P W Qs<   O;P 1P9P
PP1P?PP#P(c                r   [         R                  " S5      nUR                  S   nUR                  [        5      nU R                  US   R                   Vs/ s H  oDR                  PM     snS/5        U R                  [        US   R                   Vs/ s H  oDR                  PM     sn5      S5        U R                  US   R                   Vs/ s H  oDR                  PM     snSS/5        U R                  [        US   R                   Vs/ s H  oDR                  PM     sn5      S5        UR                  S	S
9nUR                  [        5      nU R                  US   R                   Vs/ s H  oDR                  PM     snS/5        U R                  [        US   R                   Vs/ s H  oDR                  PM     sn5      S5        U R                  US   R                   Vs/ s H  oDR                  PM     snS/5        U R                  [        US   R                   Vs/ s H  oDR                  PM     sn5      S5        U R                  US   R                   Vs/ s H  oDR                  PM     sn/ SQ5        g s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )Nzmonteverdi/madrigal.4.2.xmlz#Altor7   r   z[<music21.tie.Tie start>]rq   r   z[None, None]Tr}  z[None]r3   )r   r   r   r   r   r   )r   r   r   rt  r   r   r  r   r   r%   r  )rB   sMonterk   r  r   rl   s         rH   testStripTiesImportedBTest.testStripTiesImportedB  s0    ;<\\'"''0GAJ,D,DE,Dq((,DEuMWQZ-E-EF-Eee-EFG4	6GAJ,D,DE,Dq((,DESzRWQZ-E-EF-Eee-EFG'	) \\t\,''0GAJ,D,DE,Dq((,DEuMWQZ-E-EF-Eee-EFGRGAJ,D,DE,Dq((,DEuMWQZ-E-EF-Eee-EFGRGAJ,D,DE,Dq((,DE7	9! FFEF FFEFEs6   JJJJ4J 3J%0J*/J/,J4c                   [        5       nUR                  [        R                  " 5       S5        UR                  [        R
                  " 5       S5        [        5       nUR                  R                  5       nU R                  [        U5      S5        U R                  UR                  R                  U5        U R                  UR                  R                  U5        UR                  [        R
                  5      R                  5       nU R                  [        U5      S5        U R                  UR                  R                  U5        [        R                   " S5      nUR"                  S   nU R                  UR                  R                  S 5        UR%                  5       nU R                  UR%                  5       R                  R                  U5        U R                  UR%                  5       R                  R                  U5        UR                  R                  5       nU R                  UR                  R                  U5        U R                  UR                  R                  U5        U R                  ['        UR                  R)                  5       5      Xv/5        U R                  UR%                  5       R                  R                  5       R                  R                  R                  R                  U5        U R                  UR%                  5       R                  R                  5       R                  R*                  U5        U R                  UR                  [,        5      S   R%                  5       R                  R                  5       R                  R*                  U5        U R                  UR                  [,        5      S   R%                  5       R                  R                  5       R                  R*                  UR                  [,        5      S   5        UR/                  S5      n	U R                  U	R%                  5       R                  R                  5       R                  R*                  U	['        U	R%                  5       R                  R                  5       R                  R)                  5       5      5        UR1                  SS5      n
U R                  U
R                  R*                  U5        U R                  U
R%                  5       R                  R                  5       R                  R*                  U5        U R                  UR%                  5       R                  [        R2                  5      R                  5       R                  R*                  U5        U R                  UR                  [,        5      S   R4                  U5        g )Nr}   r   rq  r   r7   rq   r   )r   r   r   r<   r   r  r  r"  r   r   r  r  originrT  rt  r   r   r   r  r   r  rootDerivationr   r  r  r  r  )rB   rk   rl   r  r  r   r  p1Flatp1FlatNotesm4mRanges              rH   testDerivationATest.testDerivationA  s   X
		R(
r* X$$&R"%bmm**B/--r2""5;;/668R"%bmm**B/ LL(WWQZ--t4bjjl--44b90077;**113k,,33V<//66;k44::<=|L 	bjjl00779DDKKVV]]_ab 	bjjl00779DDSSUWX 	..w7:BBDRRYY[$*^^	
 	b++G4Q7??AOOVVX!z..++G4Q7	9 ZZ]bjjl00779DDSSUWRZZ\77>>@KKQQST	V Q"**992>)77>>@KKZZ\^_IIK**4995<<>IIXX	
 	b++G4Q7BBBGrK   c                R   [        5       nUR                  [        R                  " 5       S5        UR	                  5       nU R                  UR                  R                  U5        U R                  UR                  R                  U5        [        R                  " U5      nU R                  UR                  R                  U5        U R                  UR                  R                  R                  R                  U5        U R                  UR                  R                  U5        g )Nr}   )r   r   r   r<   r  r  r  r  _derivationclientrY   rZ   )rB   rk   r  rl   s       rH   testDerivationBTest.testDerivationB  s    X
		R(f''..3f((//8]]6"bmm**F3bmm**55<<bAbnn++R0rK   c                0   [         R                  " S5      nUR                  S   nUR                  SS5      nUR	                  5       nUR
                  R                  5       nU R                  [        UR                  R                  5       5      XCU/5        g )Nrq  z#Sopranor7   r}   )r   r   r   r  r  r  r"  r   r   r  r  )rB   r   r  	pMeasurespMeasuresFlatpMeasuresFlatNotess         rH   testDerivationCTest.testDerivationC
  s~    LL(WWZ KK2&	!))+*88??A0;;AACD'B7	9rK   c                   [        5       nUR                  [        R                  " 5       S5        UR	                  5       nU R                  UR                  R                  U5        U R                  UR                  R                  S5        UR                  [        R                  5      R                  5       nU R                  UR                  R                  S5        [        R                  " S5      nUR                  5       nU R                  UR                  R                  S5        UR                  S5      nU R                  UR                  R                  S 5        g )Nr}   flatrt  ztinyNotation: 4/4 C2 D2r  r5   )r   r   r   r<   r  r  r  r  r   methodrt  r"  r   r   r  r  )rB   rk   r  
s1Elementss1ms1m1s         rH   testDerivationMethodATest.testDerivationMethodA  s    X
		R(f''..3**116:..tyy9@@B
..557KL__67oo..?{{1~//6rK   c                   [         R                  " S5      nU R                  US   S   S   R                  5        Vs/ s H  n[	        UR
                  5      PM     sn/ SQ5        UR                  5       R                  S   nU R                  UR                  5        Vs/ s H#  n[        R                  " UR
                  5      PM%     snSS/5        g s  snf s  snf )Nrq  r5   r6   r7   )z%<class 'music21.stream.base.Measure'>z"<class 'music21.stream.base.Part'>z#<class 'music21.stream.base.Score'>r   r	   )
r   r   r   containerHierarchyr   	__class__r  r  r   classToClassStr)rB   r   r   r   s       rH   testContainerHierarchyATest.testContainerHierarchyA#  s    LL(AaDGAJ4Q4Q4ST4Sq#akk*4STA	B IIK%%a(qG[G[G]^G]!&00=G]^!7+	- U _s   C *Cc                   [        5       nUR                  [        R                  " SSS95        UR                  [        R                  " SSS95        UR                  [        R                  " SSS95        UR	                  5       nU R                  [        US   R                  5      S5        U R                  [        UR                  5       R                  [        R                  5      5      S5        UR                  S[        R                  " S	5      5        U R                  [        UR                  5       R                  [        R                  5      5      S
5        UR	                  5       nU R                  [        US   R                  5      S5        U R                  UR                  5        U R                  [        UR                  5       R                  [        R                  5      5      S
5        g )Nrf   r0   r1   rg   r  r   r  r   rh   r5   z!<music21.meter.TimeSignature 2/4>)r   rX   r   r<   r  r   r   r   r   r  rt  r   r;   r@   r   r   )rB   r  r  sMeasuresTwoFours       rH   testMakeMeasuresTimeSignatures#Test.testMakeMeasuresTimeSignatures3  sr   xDIId34DIId34DIId34%%'	Yq\778<	> 	T\\^>>u?R?RSTVWXC,,U34T\\^>>u?R?RSTVWX,,.-a0>>?<	>(112 	$$&99%:M:MNPQR	TrK   c                   [        5       n[        R                  " 5       nUR                  U5        U R	                  [        UR                  5      [        U5      5        [        R                  " U5      nUS   nU R	                  [        UR                  5      [        U5      5        [        5       n[        5       n[        R                  " 5       nUR                  U5        UR                  U5        U R	                  [        UR                  5      [        U5      5        U R	                  [        UR                  5      [        U5      5        [        R                  " U5      nUS   nUS   nU R	                  [        UR                  5      [        U5      5        U R	                  [        UR                  5      [        U5      5        [        R                  " S5      nUR                  [        5      R                  5       nUR                  5       R                  [        5      S   nUS   nU R	                  [        UR                  5      [        U5      5        U R	                  [        UR                  5      [        U5      5        U R	                  [        UR                  5      [        U5      5        [        R                  " U5      nUS   n	U	S   nUS   n
U R	                  [        U
R                  5      [        U5      5        U R	                  [        UR                  5      [        U	5      5        U R	                  [        U	R                  5      [        U5      5        g )Nr   r  r6   r5   )r   r   r<   rX   r   r   r  rY   rZ   r   r   r   rt  r
   r  iter)rB   r   r   rk   r
  r   r0  rv   rnr  rn1s              rH   testDeepcopyActiveSiteTest.testDeepcopyActiveSiteM  sY   HIIK	ALL)2a51 ]]1UBMM*BrF3HIIIK		ALL)2a51ALL)2a51]]1UUBMM*BrF3BMM*BrF3 LL#  &,,.FFH''03qTBMM*BqE2ALL)2a51ALL)2a51]]1UUeCNN+RV4BMM*BrF3BMM*BrF3rK   c                    [         R                  " S5      n[        UR                  SS95      nU R	                  X;   5        U R                  [        U5      S5        g )Nr  T)r     )r   r   r   r   r   r   r   )rB   r   	rElementss      rH   testRecurseATest.testRecurseAz  sG    LL#t45	'Y-rK   c                
   [         R                  " S5      nU R                  [        US   5      S5        UR	                  SS9 H  nUR
                  R                  U5        M      U R                  [        US   5      S5        g )Nzmadrigal.5.8.rntxtrk  r5   classFilterr   )r   r   r   r   r   r  rb  rB   r   r   s      rH   testRecurseBTest.testRecurseB  sl    LL-.Q~./3~6ALL" 7Q~./3rK   c                    [         R                  " S5      nUR                  S   nUR                  5       R                  S   nUR                  SSS9nU R                  [        U5      S5        U R                  [        U5      S5        UR                  SSS9nU R                  [        UR                  5       R                  S   5      S5        U R                  [        UR                  5       R                  S   5      S5        UR                  5       R                  SSS9nU R                  [        UR                  5       R                  S   5      S5        U R                  [        UR                  5       R                  S   5      S5        g )Nr  r   P4Fr  r  r  )r   r   r   r  r  r  r   r   )rB   r   r  pitch1pitch2r  s         rH   testTransposeScoreTest.testTransposeScore  s=   LL#WWQZ++A.!!$!6V&>?V&>? \\$\.RZZ\77:;=UVRZZ\77:;=UVZZ\##D%#8RZZ\77:;=UVRZZ\77:;=UVrK   c                p    SSK Jn  [        R                  " UR                  5      nUR                  5       ng )Nr   )	testFiles)r  rE  r   r   schumannOp48No1r  )rB   rE  rC   unused_bs       rH   testExtendDurationATest.testExtendDurationA  s$    .OOI55699;rK   c                   [         R                  " S5      nUR                  S   R                  SS5      nUR	                  [
        R                  5      nU R                  [        U5      S5        US   R                  5        Vs/ s H  n[        U5      PM     nnUS   R                  5        Vs/ s H  n[        U5      PM     nng s  snf s  snf )Nrf  r   r3   r}   r5   )r   r   r   r  rt  r!   rO  r   r   r  r   )rB   r   r  
rbSpannersr   unused_firstSpannedElementIdsunused_secondSpannedElementIdss          rH   testSpannerTransferATest.testSpannerTransferA  s    LL23wwqz""1b),,W\\:
Z!,8B18X8X8Z([8Z1A8Z%([9CA9Y9Y9[)\9[A"Q%9[&)\& )\)\s   C	1Cc                   ^  U 4S jn[         R                  " S5      nU" U5        [         R                  " S5      nU" U5        g )Nc                R  > / nU R                    HF  nUR                  [        5      S   R                  nUR	                  UR                  SU5      5        MH     U HH  nUR                  [        5       H,  nTR                  UR                  5       R                  5        M.     MJ     g )NrQ   r   )	r   rt  r   r+  rX   r  r   r  r  )piecevoicesMeasuresr  mMaxvoicemeasrB   s         rH   parseMeasures/Test.testMeasureGrouping.<locals>.parseMeasures  s    N ..w7;BB %%dmmAt&<= $ (!44W=D OODLLN$@$@A > (rK   rf  zbach/bwv7.7)r   r   )rB   rW  corellibachs   `   rH   testMeasureGroupingTest.testMeasureGrouping  s8    	B( ,,89g||M*drK   c                
   [        5       nUR                  [        R                  " SSS9S5        UR                  [        R                  " SSS9S5        UR	                  SS	9  U R                  UR                   Vs/ s H"  n[        UR                  R                  5      PM$     sn/ S
Q5        U R                  UR                  S S  Vs/ s H"  o"R                  R                  R                  PM$     sn/ SQ5        [        R                  " 5       nUR                  U5      R                  S5      nU R                  UR!                  S5      S:  U5        U R#                  UR!                  S5      SU5        g s  snf s  snf )Nrs   r   rZ  rq   ri   r  r   Tr  )
r  r  r  r  naturalr  r  r  r  r  r3   )TFFFTr  z@<tuplet bracket="yes" number="1" placement="above" type="start">r   <beam number="1">begin</beam>)r   r   r   r<   r	  r   r   r   r   r]   r  r)   r  r   r  r   findr  )rB   r   r   r  raws        rH   testMakeNotationByMeasuresA Test.testMakeNotationByMeasuresA  s6   I	tyyS91=	tyyE:A>	t$ 	177C7a#agg0017C2	3
 	AGGBQKPKq'',,::KP:	< ,,.iil!!'*NPRSTUX	Z388$CDaM D
 Qs   =)E;)F c                   [        5       nUR                  [        R                  " SSS9S5        UR                  [        R                  " SSS9S5        [        R
                  " 5       nUR                  U5      R                  S5      nU R                  UR                  S	5      S
U5        U R                  UR                  S5      S
:  U5        g )Nrs   r   rZ  rq   ri   r  r   r  r_  r   z?<tuplet bracket="yes" number="1" placement="above" type="start")r   r   r   r<   r)   r  r   r  r  r`  r   )rB   r   r  ra  s       rH   testMakeNotationByMeasuresB Test.testMakeNotationByMeasuresB  s    I	tyyS91=	tyyE:A>,,.iil!!'*388$CDaMMOQRSTW	YrK   c                   [        5       nUR                  [        R                  " S5      5        UR                  [        R                  " S5      5        UR                  [        R                  " S5      5        UR                  [        R                  " S5      5        U R	                  UR                  5       5        UR                  SS9  U R                  UR                  5       5        g )Nrs   ri   Tr  )r   rX   r   r<   r   haveAccidentalsBeenMader  r   r8  s     rH   testHaveAccidentalsBeenMadeA!Test.testHaveAccidentalsBeenMadeA  s    I	4!	3 	4!	3 2245	$'1134rK   c                   [        5       nUR                  [        R                  " S5      S5        [        5       nUR                  [        R                  " S5      S5        [	        5       nUR                  X/5        [        R                  " 5       nUR                  U5      R                  S5      nU R                  UR                  S5      S5        U R                  UR                  5       5        g )Nrs   rq   ri   r  z <accidental>natural</accidental>r   )r   r   r   r<   r
   rX   r)   r  r   r  r  r`  r   rh  rB   r0  r1  rv   r  ra  s         rH   testHaveAccidentalsBeenMadeB!Test.testHaveAccidentalsBeenMadeB$  s    Y
		$+Y
		#*F	" ,,.iil!!'*388$FGK2245rK   c                   [        5       nUR                  [        R                  " S5      5        UR                  S[        R
                  " S5      5        UR                  S[        R
                  " S5      5        U R                  UR                  5       5        UR                  5       nU R                  [        UR                  5       R                  [        5      5      S5        U R                  UR                  5       5        g )NGbr   zD-5zD-4r6   )r	   r@   r   r  r   r<   r   rh  r	  r   r   r   rt  r   r   )rB   r   r  s      rH   #testHaveAccidentalsBeenMadeInVoices(Test.testHaveAccidentalsBeenMadeInVoices3  s    G		DIIe$%	DIIe$%2245~~T\\^>>uEFJ4467rK   c                   [        5       n[        R                  " S5      Ul        UR	                  [
        R                  " SSS9S5        [        5       nUR	                  [
        R                  " SSS9S5        [        5       nUR                  X/5        U R                  UR                  R                  5        UR                  SS9  U R                  UR                  R                  5        g )	Nr   rs   r   rZ  r   ri   Tr  )r   r   r;   r   r   r   r<   r
   rX   r   r]  r^  r   r   )rB   r0  r1  rv   s       rH   testHaveBeamsBeenMadeATest.testHaveBeamsBeenMadeA=  s    Y ..u5
		$c:A>Y
		#S91=F	"--.	D!,,-rK   c                n   [        5       n[        R                  " S5      Ul        UR	                  [
        R                  " SSS9S5        [        5       nUR	                  [
        R                  " SSS9S5        [        5       nUR                  X/5        U R                  UR                  R                  5        [        R                  " 5       nUR                  U5      R                  S5      nU R                  UR                  R                  5        U R!                  UR#                  S5      S	5        g )
Nr   rs   r   rZ  r   ri   r  z<beam number="1">end</beam>r   )r   r   r;   r   r   r   r<   r
   rX   r   r]  r^  r)   r  r   r  r  r`  rl  s         rH   testHaveBeamsBeenMadeBTest.testHaveBeamsBeenMadeBI  s    Y ..u5
		$c:A>Y
		#S91=F	"--.,,.iil!!'* 	--.388$ABAFrK   c                V   [         R                  " S5      nUR                  5       nUR                  5       nU R                  [	        U5      [	        U5      5        UR                  S[        R                  " S5      5        U R                  [	        U5      UR                  5       5        g )Nr  r   rr   )	r   r   r  r   r   r@   r   r<   r  )rB   r   flat1flat2s       rH   testFlatCachingATest.testFlatCachingAY  sn    LL#				EBuI.Q		#'BuIqyy{3rK   c                   [         R                  " S5      nUR                  S5      n[        R                  " S5      nUR                  5       nUR                  nUR                  5       R                  R                  5       R                  U5      n/ nUR                  5       R                   H  nUR                  UR                  5        M      U R                  U/ SQ5        g )Nzbach/bwv13.6.xmlAltor  )6r  1 2/32 1/3r  r  r  r  r  r  2 2/3r  1 1/3r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )r   r   getElementByIdr   r;   r  r  r"  r  rX   r  r   )	rB   r  sPartrD   	sPartFlatunused_notesAndRestsr  r  r   s	            rH   testFlatCachingBTest.testFlatCachingBb  s    ||./##F+  ' MMO	(66MMO1188:GGK	""$22AMM!))$ 3 "P 	QrK   c                   [         R                  " S5      R                  R                  5       n[	        UR                  5       5      nU[        R                     R                  5       nUR                  5       R                  U[        R                  " S5      5        [	        UR                  5       5      nUR                  [        5      S   nUS   R                  S[        R                  " S5      5        U[        R                     nUR                  5       R                   H"  nUR                  [        R                  5      nM$     UR                  [        R                   " S5      SS9n	g )	Nr|  r~  r5   r   r3   r  Fr  )r   r   r   r  r   r  r   rk  r  rt  r   r@   r   r  invertDiatonicr   r<   )
rB   r  unused_idFlat1r  unused_idFlat2	unused_m1unused_keySigSearchr   r   
unused_qj2s
             rH   testFlatCachingCTest.testFlatCachingCy  s   \\1288>>@BJJL)   !'')


R!1!1"!56BJJL) ))'215	 	1Q((+, !1!12##A&&s'7'78D $ &&tyy&F
rK   c                <   [        5       nUR                  S[        R                  " S5      5        UR	                  5       nU R                  UR                  5       R                  S   R                  S5        UR                  S[        R                  " S5      5        UR	                  5       nU R                  UR                  5       R                  S   R                  S5        UR	                  [        R                  " S5      5      nU R                  UR                  5       R                  S   R                  S5        UR	                  [        R                  " S5      5      nU R                  UR                  5       R                  S   R                  S5        g)	zU
doctests sufficiently search invertDiatonic for complex cases,
but not simple ones.
r   r  r  r  zF#3G3r  N)r   r@   r   r<   r  r   r   r   r  r   r  )rB   r   r1  r  r  m5s         rH   testInvertDiatonicQuickSearch"Test.testInvertDiatonicQuickSearch  s   
 I	DIIdO$++A.==tD	CGGCL!++A.==uEdiio.++A.==tDdiio.++A.==tDrK   c                
   [         R                  " S5      nUR                  SS9nUR                  SS9nU R                  [	        U5      [	        U5      5        UR
                  S   R                  [        5      S   R                  [        R                  5      nU R                  [        U5      S5        UR
                  S   R                  [        5      S   R                  S   R                  nU R                  US5        g )Nr  Tr  r   r7   r  3)r   r   r  r   r   r   rt  r   r  r   r;   r   r   r  )rB   r   ssf1ssf2rD   r  s         rH   testSemiFlatCachingATest.testSemiFlatCachingA  s    LL#yy$y/yy$y/D2d8,WWQZ**73A6HHI\I\]R"EF ''!*//8;AA!DLL#&rK   c                   [        5       n[        5       n[        5       nUR                  SU5        UR                  SU5        U R                  [	        UR
                  5      S5        UR                  SS9  U R                  [	        UR
                  5      S5        [        5       n[        5       n[        5       n[        R                  " 5       n[        R                  " 5       nUR                  SU5        UR                  SU5        UR                  SU5        UR                  SU5        U R                  [	        UR
                  5      S5        UR                  SS9  U R                  [	        UR
                  5      S5        U R                  [	        UR                  5      S5        U R                  UR                  U5      S5        U R                  UR                  U5      S	5        [        5       n[        5       n[        5       n[        R                  " 5       n[        R                  " 5       n[        R                  " 5       nUR                  SU5        UR                  SU5        UR                  SU5        UR                  SU5        UR                  SU5        U R                  [	        UR
                  5      S5        UR                  SS9  U R                  [	        UR
                  5      S5        UR                  SSS
9  U R                  [	        UR
                  5      S5        U R                  [	        UR                  5      S5        g )Nr   r6   Tr  r}   r   r  r  F   )forcer  r7   )r   r   r@   r   r   r6  flattenUnnecessaryVoicesr   r<   r   r  )rB   r   r7  r8  r
  r  r  s          rH   testFlattenUnnecessaryVoicesA"Test.testFlattenUnnecessaryVoicesA  sh   HWW	B	BQXX*	""4"0QXX* HWWYY[YY[
		"b
		"b	R	RQXX*	""4"0QXX*QWWq)++A.3++A.3 HWWYY[YY[YY[
		"b
		"b
		"b	R	RQXX*	""4"0QXX*	""t"<QXX*QWWq)rK   c                   [        5       n[        R                  " 5       n[        R                  " 5       n[        R                  " 5       nUR                  SU5        UR                  SU5        UR                  SU5        U R	                  UR                  S5      U5        U R	                  UR                  S5      U5        U R	                  UR                  S5      U5        U R	                  UR                  S5      U5        U R	                  UR                  S5      S 5        U R	                  UR                  S5      U5        U R	                  UR                  SS/5      U5        U R	                  UR                  SS/5      U5        g )	Nr   r7   r3   ffffff@皙	@333333?r<   r   )r   r   r<   r@   r   getElementBeforeOffsetrB   r   r
  r  r  s        rH   testGetElementBeforeOffsetA Test.testGetElementBeforeOffsetA  s1   HYY[YY[YY[	B	B	B11!4b911#6;11!4b911#6;11!4d;11#6;11!fX>C11#GLrK   c                   [        5       n[        R                  " 5       n[        R                  " 5       n[        R                  " 5       nUR                  SU5        UR                  S[        R
                  " 5       5        UR                  S[        R                  " 5       5        UR                  SU5        UR                  S[        R                  " 5       5        UR                  S[        R                  " 5       5        UR                  SU5        U R                  UR                  SS/5      U5        U R                  UR                  SS/5      U5        U R                  UR                  SS/5      U5        U R                  UR                  SS/5      U5        U R                  UR                  SS/5      S 5        U R                  UR                  S	S/5      U5        g )
Nr   r6   r7   g@r3   r<   r  r  r  )r   r   r<   r@   r   SopranoClefr  rj  r  r   r  r  s        rH   testGetElementBeforeOffsetB Test.testGetElementBeforeOffsetB  s`   HYY[YY[YY[	B	D$$&'	DMMO$	B	DOO%&	dnn&'	B11!fX>C11#x@"E11!fX>C11#x@"E11!fX>E11#x@"ErK   c                   [        5       n[        5       nUR                  [        R                  " SS9S5        [        5       nUR                  [        R                  " SS9S5        UR                  X#/5        SUl        U R                  [        UR                  [        5      S   R                  5      S5        U R                  [        UR                  5      S5        SUl        U R                  [        UR                  [        5      S   R                  5      S5        U R                  [        UR                  5      S5        g )	Nr   rZ  r6   dottedrQ   z!<music21.bar.Barline type=dotted>r  rG  )r   r   r   r   r<   rX   r  r   r   rt  rQ  )rB   r   r0  r1  s       rH   testFinalBarlinePropertyATest.testFinalBarlinePropertyA  s    HY
		4a8Y
		4a8	"!Q11':2>KKL<	>Q^^,<	> !Q11':2>KKL;	= 	Q^^,;	=rK   c                   [         R                  " S5      nUR                  S   nU R                  [	        UR
                  5      S5        SUl        U R                  [	        UR
                  5      S5        SUl        U R                  [	        UR
                  5      S5        SS	/Ul        U R                  [	        UR
                  5      S
5        g )Nr  r   rG  rI  rL  tickz[<music21.bar.Barline type=tick>, <music21.bar.Barline type=tick>, <music21.bar.Barline type=tick>, <music21.bar.Barline type=tick>]r  rM  z[<music21.bar.Barline type=final>, <music21.bar.Barline type=none>, <music21.bar.Barline type=final>, <music21.bar.Barline type=none>])r   r   r   r   r   r  )rB   r   sops      rH   testFinalBarlinePropertyBTest.testFinalBarlinePropertyB'  s    LL#ggajS--.0RS#S--.0ST  Q^^,_	`
 "6*Q^^,`	arK   c                    [         R                  " S5      n[        5       nUR                  U5        [        5       nX#l        U R                  X5        g )NrI  )r   rR  r   r  r\   r   )rB   rE   r   ri   s       rH   -testSetElementsFromOtherStreamWithEndElements2Test.testSetElementsFromOtherStreamWithEndElements:  s:    KK!H	QH
arK   c                   [        5       nUR                  [        R                  " 5       S5        [        R                  " 5       nUR	                  U5        [        5       nXl        / nUR
                   H#  nUR	                  UR                  U5      5        M%     U R                  U/ SQ5        U R                  [        US   5      [        US   5      5        [        5       n[        5       nUR                  SU5        UR
                  Ul        / nUR
                   H#  nUR	                  UR                  U5      5        M%     U R                  U/ SQ5        [        US S  5      n/ nUR
                   H#  nUR	                  UR                  U5      5        M%     U R                  U/ SQ5        Xl        / nUR
                   H#  nUR	                  UR                  U5      5        M%     U R                  U/ SQ5        [        5       nXl        / nUR
                   H#  nUR	                  UR                  U5      5        M%     U R                  U/ SQ5        g )Nr+  )r   r   r   r   r   r   r  r.  rQ   r  )r   r   r   r   r   r   r  r:  )
r   r   r   r<   rX   r\   r  r   r   r@   )	rB   rk   r
  rl   r)  r   r  r  r  s	            rH   testStreamElementsComparison!Test.testStreamElementsComparisonD  s   X
		Q'YY[
		"XALL**2./  HIBrFR2Z0XX
		"bkkALL**2./  	 IJ BqE]ALL**2./  IJ ALL**2./  HIXALL**2./  HIrK   c                z   [        5       nUR                  S[        R                  " SS95        UR	                  [
        R                  " 5       S5        U R                  UR                  S5        [        5       nUR                  S[        R                  " SS95        UR	                  [
        R                  " 5       S5        U R                  UR                  S5        [        5       nUR                  S[        R                  " SS95        UR	                  [
        R                  " 5       S5        U R                  UR                  S5        [        5       nUR                  S[        R                  " SS95        UR	                  [
        R                  " 5       S5        UR                  S	[        R                  " SS95        U R                  UR                  S
5        [        5       nUR                  S[        R                  " SS95        UR	                  [
        R                  " 5       S5        UR                  S[        R                  " SS95        UR                  S	[        R                  " SS95        UR                  S[        R                  " SS95        U R                  UR                  S5        g )Nr   r  r*  g      N@Z   r  r{   r  r   rS  r<     rt  i  g      <@)	r   r@   r"   MetronomeMarkr   r   r<   r   secondsrj  s     rH   testSecondsPropertyATest.testSecondsPropertyAv  s   H	E''r23	tyy{B'D)H	E''r23	tyy{B'D)H	E''s34	tyy{B'D) H	E''r23	tyy{B'	U((45K0H	E''r23	tyy{B'	U((45	U((45	U((45 	$=>rK   c                   [         R                  " S5      nUR                  5       nU R                  [	        UR                  [        R                  5      5      S5        UR                  S[        R                  " S5      5        U R                  UR                  S5        UR                  [        R                  5        UR                  S[        R                  " S5      5        U R                  UR                  S5        UR                  [        R                  5        UR                  S[        R                  " S5      5        U R                  UR                  S	5        g )
Nr  rq   r   adagiog5F$IC@prestog&Moz'@prestissimogFN$@)r   r   r  r   r   rt  r"   TempoIndicationr@   r  assertAlmostEqualr  ri  )rB   r   sFlats      rH   testSecondsPropertyBTest.testSecondsPropertyB  s    LL#		U55e6K6KLMqQQ++H56u}}k:E112Q++H56u}}k:E112Q++M:;u}}k:rK   c                :   [        5       n[        5       n[        R                  " S5      Ul        [
        R                  " SS9nUR                  SU5        UR                  [        R                  " SS95        UR                  U5        [        5       n[        R                  " S5      Ul        UR                  [        R                  " SS95        UR                  U5        [        5       n[        R                  " S	5      Ul        UR                  [        R                  " S
S95        UR                  U5        U R                  UR                  [        5       Vs/ s H  ofR                  PM     sn/ SQ5        SUl        U R                  UR                  [        5       Vs/ s H  ofR                  PM     sn/ SQ5        SUl        U R                  UR                  [        5       Vs/ s H  ofR                  PM     sn/ SQ5        g s  snf s  snf s  snf )Nr/   r  r*  r   r7   rZ  r|   r3   rh   r6   )r   r   r   r{   )r   r  r   r   )r  r  r   )r   r   r   r;   r   r"   r  r@   r   r<   rX   r   rt  r  r+  )rB   r   r0  r  r1  r  r   s          rH   testSecondsPropertyCTest.testSecondsPropertyC  s   HY ..u5  +
		!R
		$))!,-	Y ..u5
		$))!,-	Y ..u5
		$))!,-	Q-A-A'-JK-J))-JK_]	Q-A-A'-JK-J))-JK_]	Q-A-A'-JK-J))-JKM]^ L L Ls   H&H.Hc           	     `   [        5       nUR                  [        R                  " 5       S5        UR	                  S[
        R                  " SS9/5        UR                  5       nU R                  UR                  USS5      S5        U R                  UR                  USS5      S5        U R                  UR                  USS5      S	5        [        5       nUR                  [        R                  " 5       S5        UR	                  S[
        R                  " SS9S
[
        R                  " SS9/5        UR                  5       nU R                  UR                  USS
5      S5        U R                  UR                  US
S5      S5        U R                  UR                  USS5      S5        g )Nr   r   r  r*  r5   r   r6   r   r  rq   r{   r   r  
r   r   r   r<   r@   r"   r  metronomeMarkBoundariesr   _accumulatedSecondsrB   r   mmBoundariess      rH   testAccumulatedTimeATest.testAccumulatedTimeA  s\   H	tyy{A&	!U((345002..|QBCH..|QBCH..|QBCH H	tyy{A&	!U((3U((46 	7002..|QBCH..|QBCH..|QBCHrK   c                4   [        5       nUR                  [        R                  " 5       S5        UR	                  S[
        R                  " SS9S[
        R                  " SS9S[
        R                  " SS9/5        UR                  5       nU R                  UR                  USS5      S	5        U R                  UR                  USS5      S
5        U R                  UR                  USS5      S5        U R                  UR                  USS5      S5        g )Nr   r   r  r*  rq   r{   r   r  r   r   r   rc  r  r  s      rH   testAccumulatedTimeBTest.testAccumulatedTimeB  s    H	tyy{A&	!U((3U((4U((46 	7 002..|QBCH..|QBCH..|QBCH..|QBCHrK   c                   [        5       nUR                  [        R                  " 5       S5        UR	                  S[
        R                  " SS9S[
        R                  " SS9S[
        R                  " SS9/5        U R                  [        UR                  5       5      S	5        [        5       nUR                  [        R                  " 5       S5        UR	                  S[
        R                  " SS9S[
        R                  " SS9/5        U R                  [        UR                  5       5      S
5        [        5       nUR                  [        R                  " 5       S5        U R                  [        UR                  5       5      S5        [        5       nUR                  [        R                  " 5       S5        UR	                  S[
        R                  " SS9/5        U R                  [        UR                  5       5      S5        [        5       nUR                  [        R                  " 5       S5        UR	                  S[
        R                  " SS9/5        U R                  [        UR                  5       5      S5        g )Nr   r   r  r*  rq   r{   r   r  z[(0.0, 4.0, <music21.tempo.MetronomeMark maestoso Quarter=90>), (4.0, 6.0, <music21.tempo.MetronomeMark animato Quarter=120>), (6.0, 8.0, <music21.tempo.MetronomeMark Quarter=240>)]z[(0.0, 4.0, <music21.tempo.MetronomeMark animato Quarter=120>), (4.0, 6.0, <music21.tempo.MetronomeMark animato Quarter=120>), (6.0, 8.0, <music21.tempo.MetronomeMark Quarter=240>)]z?[(0.0, 8.0, <music21.tempo.MetronomeMark animato Quarter=120>)]zv[(0.0, 6.0, <music21.tempo.MetronomeMark animato Quarter=120>), (6.0, 8.0, <music21.tempo.MetronomeMark Quarter=240>)]z7[(0.0, 8.0, <music21.tempo.MetronomeMark Quarter=240>)])
r   r   r   r<   r@   r"   r  r   r   r  rj  s     rH   testSecondsMapATest.testSecondsMapA  s   H	tyy{A&	!U((3U((4U((46 	7 	Q6689T	U H	tyy{A&	!U((4U((46 	7Q6689T	U H	tyy{A&Q6689Z	\ H	tyy{A&	!U((456Q6689T	U
 H	tyy{A&	!U((456Q6689R	TrK   c           	        [        5       nUR                  [        R                  " 5       S5        UR	                  S[
        R                  " SS9/5        UR                  5       nSnU Hb  nUS[        US   5      -   S-   [        US	   5      -   S
-   [        US   5      -   S-   [        US   5      -   S-   [        US   5      -   S-   -  nMd     USS nUS-  nU R                  US5        [        5       nUR                  [        R                  " 5       S5        UR	                  S[
        R                  " SS9/5        UR                  5       nSnU Hb  nUS[        US   5      -   S-   [        US	   5      -   S
-   [        US   5      -   S-   [        US   5      -   S-   [        US   5      -   S-   -  nMd     USS nUS-  nU R                  [        U5      S5        [        5       nUR                  [        R                  " 5       S5        UR	                  S[
        R                  " SS9S[
        R                  " SS9/5        UR                  5       nSnU Hb  nUS[        US   5      -   S-   [        US	   5      -   S
-   [        US   5      -   S-   [        US   5      -   S-   [        US   5      -   S-   -  nMd     USS nUS-  nU R                  US5        [        5       nUR                  [        R                  " SS95        UR	                  S[
        R                  " SS9S[
        R                  " SS9/5        UR                  5       nSnU Hb  nUS[        US   5      -   S-   [        US	   5      -   S
-   [        US   5      -   S-   [        US   5      -   S-   [        US   5      -   S-   -  nMd     USS nUS-  nS U l        U R                  US5        g )Nr6   r   r  r*  [z{'durationSeconds': durationSecondsz, 'voiceIndex': 
voiceIndexz, 'element': elementz, 'offsetSeconds': offsetSecondsz, 'endTimeSeconds': endTimeSecondsz}, r  ]a  [{'durationSeconds': 0.0, 'voiceIndex': None, 'element': <music21.tempo.MetronomeMark larghetto Quarter=60>, 'offsetSeconds': 0.0, 'endTimeSeconds': 0.0}, {'durationSeconds': 1.0, 'voiceIndex': None, 'element': <music21.note.Note C>, 'offsetSeconds': 0.0, 'endTimeSeconds': 1.0}, {'durationSeconds': 1.0, 'voiceIndex': None, 'element': <music21.note.Note C>, 'offsetSeconds': 1.0, 'endTimeSeconds': 2.0}]r<  a  [{'durationSeconds': 0.0, 'voiceIndex': None, 'element': <music21.tempo.MetronomeMark larghissimo Quarter=15>, 'offsetSeconds': 0.0, 'endTimeSeconds': 0.0}, {'durationSeconds': 4.0, 'voiceIndex': None, 'element': <music21.note.Note C>, 'offsetSeconds': 0.0, 'endTimeSeconds': 4.0}, {'durationSeconds': 4.0, 'voiceIndex': None, 'element': <music21.note.Note C>, 'offsetSeconds': 4.0, 'endTimeSeconds': 8.0}]r5   a0  [{'durationSeconds': 0.0, 'voiceIndex': None, 'element': <music21.tempo.MetronomeMark larghissimo Quarter=15>, 'offsetSeconds': 0.0, 'endTimeSeconds': 0.0}, {'durationSeconds': 4.0, 'voiceIndex': None, 'element': <music21.note.Note C>, 'offsetSeconds': 0.0, 'endTimeSeconds': 4.0}, {'durationSeconds': 0.0, 'voiceIndex': None, 'element': <music21.tempo.MetronomeMark larghetto Quarter=60>, 'offsetSeconds': 4.0, 'endTimeSeconds': 4.0}, {'durationSeconds': 1.0, 'voiceIndex': None, 'element': <music21.note.Note C>, 'offsetSeconds': 4.0, 'endTimeSeconds': 5.0}]r   rZ  a  [{'durationSeconds': 0.0, 'voiceIndex': None, 'element': <music21.tempo.MetronomeMark larghissimo Quarter=15>, 'offsetSeconds': 0.0, 'endTimeSeconds': 0.0}, {'durationSeconds': 5.0, 'voiceIndex': None, 'element': <music21.note.Note C>, 'offsetSeconds': 0.0, 'endTimeSeconds': 5.0}, {'durationSeconds': 0.0, 'voiceIndex': None, 'element': <music21.tempo.MetronomeMark larghetto Quarter=60>, 'offsetSeconds': 4.0, 'endTimeSeconds': 4.0}])r   r   r   r<   r@   r"   r  _getSecondsMapr   r   rX   r  )rB   r   sMapsMapStrobs        rH   testSecondsMapBTest.testSecondsMapB  s   H	tyy{A&	!U((345!B.R8I5J1KK,-/22l3C/DE)*,/9,>? 00 36b6I2JK 1	1 47r:J7K3L	M
    !G  !B-3K		L H	tyy{A&	!U((345!B.R8I5J1KK,-/22l3C/DE)*,/9,>? 00 36b6I2JK 1	1 47r:J7K3L	M
    !G  !B-3WK		L H	tyy{A&	!U((3U((35 	6 !B.R8I5J1KK,-/22l3C/DE)*,/9,>? 00 36b6I2JK 1	1 47r:J7K3L	M
    !G  !B-3K	L H	-.	!U((3U((35 	6 !B.R8I5J1KK,-/22l3C/DE)*,/9,>? 00 36b6I2JK 1	1 47r:J7K3L	M
    !G  !B-3K		LrK   c                   [        5       nUR                  [        R                  " SS95        [        5       nUR                  [        R                  " SS95        [	        5       nUR                  U5        U R                  [        UR                  5      S5        U R                  UR                  R                  S5        UR                  U5        U R                  UR                  R                  S5        g )Nr  rZ  z <music21.duration.Duration 72.0>      R@g      b@)	r
   rX   r   r<   r	   r   r   r   r   )rB   r  r  r  s       rH   testPartDurationATest.testPartDurationA  s    V
		$))"-.V
		$))"-.wBT]]+-OP44d;B44e<rK   c                   [         R                  " S5      n[        5       nUR                  UR                  S   5        U R                  [        UR                  S   R                  5      S5        U R                  [        UR                  5      S5        U R                  UR                  R                  S5        UR                  UR                  S   5        U R                  UR                  R                  S5        g )Nrq  r   z <music21.duration.Duration 36.0>r  r5   r  )	r   r   r	   rX   r   r   r   r   r   )rB   r   r  s      rH   testPartDurationBTest.testPartDurationB  s    LL(wAGGAJQWWQZ0013UVT]]+-OP44d;AGGAJ44d;rK   c                T   [        5       nSUl        UR                  [        R                  " SSS9S5        [        5       nUR                  [        R                  " SSS9S5        S	Ul        [        5       nUR                  S
U5        UR                  S
U5        UR                  SSS9nU R                  [        UR                  5       R                  5      S5        / n/ nUR                  5       R                  [        R                  5       Hn  nUR                   H[  nSUR                   ;   a  UR#                  UR$                  5        S	UR                   ;   d  M@  UR#                  UR$                  5        M]     Mp     U R                  U/ SQ5        U R                  U/ SQ5        g )NrC   r  r6   rZ  r   r  r7   rq   rE   r   TFaddPartIdAsGroupr  r   )r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  )r
   r   r   r   r<   r	   r@   r  r   r   r  r   rt  r   r  r~  groupsrX   r   )	rB   r  r  r   r  idAidBri   rv   s	            rH   testChordifyTagPartATest.testChordifyTagPartA  s6   V
		$a8!<V
		$a8!<G	B	Bzz4zNT\\^112A6225;;?AYY!((?JJqvv&!((?JJqvv&	  @ 	FGFGrK   c                   [         R                  " S5      n/ n/ n/ n/ nUR                  SSS9nUR                  5       R	                  [
        R                  5       H  nUR                   H  nSUR                  ;   a  UR                  UR                  5        SUR                  ;   a  UR                  UR                  5        SUR                  ;   a  UR                  UR                  5        SUR                  ;   d  M  UR                  UR                  5        M     M     U R                  U/ S	Q5        U R                  U/ S
Q5        U R                  [        U5      [        U5      5        g )Nr  TFr  Sopranor  TenorBass)3r   r  r  r  r   r  r   r   r  r  r  r   r  r  r)  r)  r>  r  r  r  r  r  r>  r>  r  r  r  r  r  r   r   r  r  r   r  r)  r)  r>  r>  r)  r>  r>  r>  r>  r>  r>  r>  r>  r>  r  r>  )3r  r  r>  r  r  r  r  r  r)  r)  r  r)  r>  r)  r  r  r   r>  r>  r>  r  r  r  r  r   r   r>  r  r  r  r  r>  r>  r)  r>  r>  r  r>  r>  r   r   r  r  r  r  r   r  r   r  r  r   )r   r   r  r  rt  r   r  r~  r  rX   r   r   r   )	rB   r   	idSopranoidAltoidTenoridBassr  ri   rv   s	            rH   testChordifyTagPartBTest.testChordifyTagPartB  s    LL#	zz4zN225;;?AYY($$QVV,QXX%MM!&&)ahh&NN166*QXX%MM!&&)  @ 	 %O 	P 	 "2 	3 	YV5rK   c                
   [         R                  " 5       n[         R                  " 5       n[        5       nUR	                  [
        R                  " S5      S5        UR                  SU5        UR                  SU5        UR                  SS9  [        5       nUR	                  [
        R                  " S5      S5        UR                  SU5        UR                  SS9  [        5       nUR                  SU5        UR                  SU5        UR                  SSS9nU R                  UR                   Vs/ s H  n[        U5      PM     sn/ S	Q5        SUl        UR                  SS9nU R                  UR                   Vs/ s H  n[        U5      PM     sn/ S
Q5        SUl        UR!                  SS9nU R                  UR                   Vs/ s H  n[        U5      PM     sn/ SQ5        SUl        UR                  SS9nU R                  UR                   Vs/ s H  n[        U5      PM     sn/ SQ5        SUl        UR!                  SS9nU R                  UR                   Vs/ s H  n[        U5      PM     sn/ S	Q5        U R#                  UR                  5        SUR$                  S   l        SUR$                  S   l        UR                  SS9nU R                  UR$                  S   R                   Vs/ s H  n[        U5      PM     sn/ S
Q5        U R                  UR$                  S   R                   Vs/ s H  n[        U5      PM     sn/ SQ5        U R                  UR$                  S   R                  S5        U R                  UR$                  S   R                  S5        UR                  SS9  U R                  UR$                  S   R                   Vs/ s H  n[        U5      PM     sn/ S
Q5        U R                  UR$                  S   R                   Vs/ s H  n[        U5      PM     sn/ SQ5        SUl        SUR$                  S   l        SUR$                  S   l        UR$                  S   [&            H
  nSUl        M     UR!                  SS9  U R                  UR$                  S   R                   Vs/ s H  n[        U5      PM     sn/ SQ5        U R                  UR$                  S   R                   Vs/ s H  n[        U5      PM     sn/ SQ5        g s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )Nrf   rq   r   r6   Tr  F)r  reverse)r  r  rg   rg   )r  r  B-3r	  )rf   rf   rf   rf   r5   )r	  r	  r	  r	  unknown)r   EnglishHornClarinetr
   r   r   r<   r@   r  r	   _transposeByInstrumentr   r~  r   atSoundingPitchtoSoundingPitchtoWrittenPitchr   r   r   )	rB   i1i2r  r  r   r  rv   r  s	            rH   testTransposeByPitchATest.testTransposeByPitchA  ss   ##%  "V
		$+
		!R
		!R
%V
		$+
		!R
%G	B	B(((E$,,7,Q#a&,79QR #!!%!0$,,7,Q#a&,79ST #   / 	$,,7,Q#a&,79QR "!!%!0$,,7,Q#a&,79QR "   /$,,7,Q#a&,79QR--. &+
"%*
"   /$**Q-*?*?@*?Q#a&*?@B\]$**Q-*?*?@*?Q#a&*?@B^_ 	33U;33U;	$'!''!**<*<=*<Q#a&*<=?YZ!''!**<*<=*<Q#a&*<=?[\ &%)
"%*
"wwqz'*G ',G# + 	
&!''!**<*<=*<Q#a&*<=?WX!''!**<*<=*<Q#a&*<=?[\i 8 8 8 8 8 A@ >= >=sB   6UUU U.UU
U0U$5U)U.!U3c                   SSK Jn  [        R                  " UR                  5      nU R                  UR                  S   R                  5        U R                  UR                  S   R                  5        U R                  [        UR                  S   R                  [        R                  5      S   R                  5      S5        U R                  [        UR                  S   R                  [        R                  5      S   R                  5      S5        UR                   HE  nUR                  S   nU R                  UR                   5        SUl        SUR                   l        MG     U R                  UR                  S   R                   Vs/ s H  n[        U5      PM     sn/ SQ5        U R                  UR                  S   R                   Vs/ s H(  nUR                   c  S OUR                   R"                  PM*     sn/ SQ5        U R                  UR                  S   R                   Vs/ s H  n[        U5      PM     sn/ S	Q5        U R                  UR                  S   R                   Vs/ s H(  nUR                   c  S OUR                   R"                  PM*     sn/ S
Q5        U R                  UR                  S5        UR%                  SSS9  U R                  UR                  S   R                   Vs/ s H  n[        U5      PM     sn/ SQ5        U R                  UR                  S   R                   Vs/ s H(  nUR                   c  S OUR                   R"                  PM*     sn/ SQ5        U R                  UR                  S   R                   Vs/ s H  n[        U5      PM     sn/ SQ5        U R                  UR                  S   R                   Vs/ s H(  nUR                   c  S OUR                   R"                  PM*     sn/ SQ5        g s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )Nr   r  r5   z<music21.interval.Interval M-2>z<music21.interval.Interval M-6>T)rg   r  r  r  r  r  r  r  )TNFNNNFN)r  r  r  r  E5zF#5zG#5r  )TNFNNFFNr
  )r  preserveAccidentalDisplay)rf   rg   r  r  r  r  r  rC  )TNNNNNNN)r  r  r   r   transposingInstruments72ar   r   r  r   r   rt  r   
Instrumenttranspositionr~  r  r]   r  r  )rB   r  r   rv   
firstPitchs        rH   testTransposeByPitchBTest.testTransposeByPitchB*  s   2OOMCCD334334QWWQZ:::;P;PQRSTbbc:	<QWWQZ:::;P;PQRSTbbc:	<
 A1Jj334$%J!26J!!/	  	!''!**<*<=*<Q#a&*<=K	M%&WWQZ%7%79%7 #$,,"6$ALL<V<VV%79K	M 	!''!**<*<=*<Q#a&*<=L	N%&WWQZ%7%79%7 #$,,"6$ALL<V<VV%79L	N 	**I6	$$G!''!**<*<=*<Q#a&*<=I	K%&WWQZ%7%79%7 #$,,"6$ALL<V<VV%79I	K 	!''!**<*<=*<Q#a&*<=I	K%&WWQZ%7%79%7 #$,,"6$ALL<V<VV%79I	K+ >9 >9 >9 >9s0   P-/P2:P7?/P<
Q/Q.Q3/Qc                b   [         R                  " S5      nUR                  S[        R                  " 5       5        [        U5      nSUl        U R                  UR                  S5        UR                  SS9  U R                  UR                  5       R                  S   R                  S5        g )NztinyNotation: c1 d1r   Tr
  r  r  )r   r   r@   r   Hornr	   r  r   r  r  r   r  )rB   rv   r   s      rH   testTransposeByPitchCTest.testTransposeByPitchCW  s    OO12	JOO%&!H **I6 	
&**1-<<dCrK   c           	        [        5       nUR                  [        R                  " S5      5        UR                  [        R
                  " / SQ5      5        UR                  [        R                  " S5      5        UR                  [        R
                  " SS/5      5        UR                  5         / nUR                  5       R                   H}  n[        U[        R
                  5      (       a7  UR                  U Vs/ s H  n[        UR                  5      PM     sn5        MY  UR                  [        UR                  5      5        M     U R                  US/ SQSSS	//5        g s  snf )
Nr  )r   r  r  r  r  <music21.tie.Tie start>)r  <music21.tie.Tie stop>r#  <music21.tie.Tie continue>r  r$  )r   rX   r   r<   r   r  
extendTiesr  r  r  r  r%   r   )rB   r   r  r   rF   s        rH   testExtendTiesATest.testExtendTiesAi  s    H	4!	/01	4!	dD\*+	**A!U[[))!4!QT!%%[!45DK(	 +
 	3 7"4	
	 5s    E+
c           	        S U l         [        R                  " S5      nUR                  SS5      R	                  5       nUR                  5         / nUR                  5       R                  [        R                  5       H8  nUR                  U Vs/ s H  n[        UR                  5      PM     sn5        M:     U R                  U/ SQ/ SQ/ SQ/ SQ/ SQ/5        g s  snf )Nr  r9  )r#  r#  r%  )r$  r%  r  r%  )r#  r%  r#  r$  )r$  r$  r$  r  rP  )r  r   r   r  r  r&  r  rt  r   r  rX   r  r%   r   )rB   r   sChordsr  chr   s         rH   testExtendTiesBTest.testExtendTiesB  s    LL#**Q"++-//#66u{{CBKKb1baeeb12 D 	995# ;<	 2s   C
c                0   [        5       nUR                  [        R                  " S5      S5        UR	                  S[        R                  " S5      5        U R                  U Vs/ s H  n[        U5      PM     sn/ SQ5        UR	                  S[        R                  " S5      5        U R                  U Vs/ s H  n[        U5      PM     sn/ SQ5        UR	                  S[        R                  " S5      5        U R                  U Vs/ s H  n[        U5      PM     sn/ S	Q5        UR	                  S[        R                  " S
S/5      5        U R                  U Vs/ s H  n[        U5      PM     sn/ SQ5        g s  snf s  snf s  snf s  snf )Nr  r   r7   r  )r  r  r  z<music21.chord.Chord D4 G4>r  r  r  r  r  )r  r  r  <music21.chord.Chord D4 G4 B4>r  r  r  r  r3   )r  r  r  r/  r  z<music21.chord.Chord D4 B4>r  r  r  ri  )r  r  r  r/  r  z"<music21.chord.Chord D4 B4 C5 E-5>r  r  )	r   r   r   r<   insertIntoNoteOrChordr   r  r   r  r;  s      rH   testInsertIntoNoteOrChordATest.testInsertIntoNoteOrChordA  s?   H	tyy*	499T?31-1a$q'1-3	4 	
499T?31-1a$q'1-3	4 	
499T?31-1a$q'1-3	4 	
5;;e}#=>1-1a$q'1-3	4C . . . .s   &F:F	F$Fc                   [        5       nUR                  [        R                  " / SQ5      S5        UR	                  S[
        R                  " S5      5        UR	                  S[
        R                  " S5      5        UR	                  S[        R                  " / SQ5      5        U R                  U Vs/ s H  n[        U5      PM     sn/ SQ5        g s  snf )	Nr  r   r3   r  r7   r   )r  ri  zb-5)<music21.chord.Chord C4 E4 G4>r4  r4  !<music21.chord.Chord C4 E4 G4 B4>r4  r5  z)<music21.chord.Chord C4 E4 G4 D5 E-5 B-5>r4  )	r   r   r   r  r0  r   r<   r   r  r;  s      rH   testInsertIntoNoteOrChordBTest.testInsertIntoNoteOrChordB  s    H	u{{#56:	499T?3	499T?3	5;;/C#DE1-1a$q'1-<	=-s   6Cc                   SS K n[        R                  " S5      nUR                  S   nUR	                  [
        5       H}  nUR                   Hj  nUR                  U5      nXaR                  U5      :w  d  M*  [        R                  " UR                  S9nUR                  U5        UR                  Xg5        Ml     M     UR                  SS9  Sn[        R                   " 5       n	U	R                  U5      R#                  S5      n
UR%                  SS	5      nUR%                  S
S	5      nU
R%                  SS	5      nUR%                  S
S	5      nU R'                  UR)                  U5      S:  SU
5        g )Nr   r  rZ  Tr  a"        <note>
        <pitch>
          <step>A</step>
          <octave>4</octave>
        </pitch>
        <duration>5040</duration>
        <type>eighth</type>
        <stem>up</stem>
      </note>
      <note>
        <rest/>
        <duration>5040</duration>
        <type>eighth</type>
      </note>
      <note>
        <pitch>
          <step>G</step>
          <alter>1</alter>
          <octave>4</octave>
        </pitch>
        <duration>10080</duration>
        <type>quarter</type>
        <stem>up</stem>
      </note>
      <note>r   r   
)mathr   r   r   rt  r   r   r  floorr   r  r   rb  r@   r   r)   r  r  r  r   r`  )rB   r;  r   rv   r   r   r  r   r)  r  originalRawra  s               rH   testSortingAfterInsertATest.testSortingAfterInsertA  s+   LL#GGAJ%%g.AWW 003::l#;;		@AHHQKHH\-  / 	
D!2 ,,.iil))'2c2&dB'!!#r*kk$#%1,dK@rK   c                   [         R                  " S5      R                  S   nUR                  5       R	                  [
        R                  5      S   nUR                  5       R                  U[
        R                  " S5      5        UR	                  [        5      S   R                  S[
        R                  " S5      5        UR                  [        R                  " S5      SS9ng )	Nr|  r   r~  r5   r3   r  Fr  )r   r   r   r  rt  r   rk  r  r   r@   r  r   r<   )rB   r  r  r  s       rH   testInvertDiatonicATest.testInvertDiatonicA  s     \\1288;ZZ\,,S-=-=>qA


R!1!1"!56
g&q)00C4D4DQ4GH&&tyy&F
rK   c                   [         R                  " S5      nUR                  S   R                  SS5      nU R	                  [        UR                  5       R                  [        R                  5      S   5      S5        U R	                  [        UR                  5       R                  [        R                  5      S   5      S5        UR                  S   R                  [        5      S   nU R	                  [        UR                  [        5      S   5      [        U5      5        UR                  [        5       Hy  nUR                   Hf  nUR                  S:X  d  M  UR!                  U5      nUR#                  U5        [$        R&                  " UR(                  S9nUR+                  Xg5        Mh     M{     U R	                  [-        U[$        R&                     5      S	5        g )
Nr  r   r7   r   z<music21.clef.TrebleClef>zP1: Soprano: Instrument 1r  rZ  r3   )r   r   r   r  r   r   r  rt  r   r  r   r  r   r   r   r   r  rb  r   r  r   r@   r   )rB   r   r  mTargetr   r   r   r   s           rH   testMeasuresATest.testMeasuresA&  s^   LL#WWQZ  A&RZZ\<<TYYGJK4	6RZZ\<<Z=R=RSTUVW4	6 ''!*//8;B11':1=>7L&&w/AWW66S=))!,AHHQK		@AHHQN  0 	R		]+Q/rK   c                T   [         R                  " S5      nUR                  SS5      nU R                  [	        UR
                  S   R                  5       R                  [        R                  5      5      S5        [        R                  " 5       nUR                  UR
                  S   5      R                  S5      nSnUR                  SS	5      nUR                  S
S	5      nUR                  SS	5      nUR                  S
S	5      nU R                  UR                  U5      S5        g )NrK  r  r  r   r6   r  ze        <time>
          <beats>2</beats>
          <beat-type>4</beat-type>
        </time>
        r9  r   r:  )r   r   r  r   r   r   r  rt  r   r;   r)   r  r  r  r  r`  )rB   r   r   r  ra  r)  s         rH   testMeasuresBTest.testMeasuresB=  s    LL'JJr2GGAJ 33E4G4GHJKL	N ,,.ii
#**73
 kk#r"kk$#c2&dB'388E?A.rK   c                   [         R                  " S5      nUR                  S   R                  SS5      n[	        UR                  S/S95       Hw  nUR                  S:X  d  M  UR                  nUR                  nUR                  R                  U5        [        R                  " UR                  S9nUR                  XF5        My     U R                  [        U[        R                     5      S	5        g )
Nr  r   r7   r   r<   r9  r  rZ  r3   )r   r   r   r  r   r   r   r   r  rb  r   r  r   r@   r   r   )rB   r   r  r   r   siter   s          rH   testMeasuresCTest.testMeasuresCT  s    LL#WWQZ  A&bjjfXj67Avv}HH||##A&IIAOO<A! 8 	R		]+Q/rK   c                L   [        5       n[        SS9n[        SS9n[        SS9n[        SS9nUR                  U5        UR                  U5        UR                  U5        UR                  U5        S nUR                  SS5      nU R	                  U" U5      S5        U R                  X'5        U R                  X75        UR                  SS5      nU R	                  U" U5      S5        U R                  X85        U R                  XH5        UR                  SS5      n	U R	                  U" U	5      S5        U R                  X95        U R                  XI5        U R                  XY5        UR                  SS5      n
U R	                  U" U
5      S5        U R                  XJ5        U R                  XZ5        UR                  SS5      nU R	                  U" U5      S5        U R                  X+5        U R                  X;5        U R                  XK5        U R                  X[5        g )	Nr5   r*  r  r  r7   c                >    [        U R                  [        5      5      $ r  )r   rt  r   )	p_excerpts    rH   numM%Test.testMeasuresSuffix.<locals>.numMl  s    y33G<==rK   r6   rq   )r
   r   rX   r  r   r   )rB   rv   r0  ry  r{  r  rQ  mm1mm2mm3mm4mm5s               rH   testMeasuresSuffixTest.testMeasuresSuffixa  s   FAT"T"A					> jjD!cA&bcjjt$cA&ccjjq!cA&ccbjjq!cA&cbjjAcA&bccbrK   c                   SSK Jn  [        R                  " UR                  5      nS U l        U R                  UR                  S   R                  [        5      S   R                  SSS9S5        U R                  UR                  S   R                  [        5      S   R                  SS9S5        UR                  5       nUR                  [        5      S   nU R                  UR                  SSS9S	5        UR                   VVs/ s Hx  nUR                   Vs/ s H  n[        U5      PM     sn[        [        [!        UR"                  5      S
5      5      [        [        [!        UR$                  5      S5      5      4PMz     nnnU R'                  [        U5      S5        [(        R*                  " 5       nUR                  U5      R-                  S5      n	U R'                  U	R/                  S5      S
U	5        g s  snf s  snnf )Nr   r  T)addEndTimesuseMixedNumeralsa_  {0 - 0} <music21.layout.SystemLayout>
{0 - 0} <music21.clef.TrebleClef>
{0 - 0} <music21.tempo.MetronomeMark Quarter=120 (playback only)>
{0 - 0} <music21.key.Key of B- major>
{0 - 0} <music21.meter.TimeSignature 4/4>
{0 - 2/3} <music21.note.Note B->
{2/3 - 1 1/3} <music21.note.Note C>
{1 1/3 - 2} <music21.note.Note B->
{2 - 4} <music21.note.Note A>r5   )r[  z{0.0 - 0.0} <music21.clef.BassClef>
{0.0 - 0.0} <music21.tempo.MetronomeMark Quarter=120 (playback only)>
{0.0 - 0.0} <music21.key.Key of B- major>
{0.0 - 0.0} <music21.meter.TimeSignature 4/4>
{0.0 - 4.0} <music21.note.Note B->a{  {0 - 0} <music21.layout.SystemLayout>
{0 - 0} <music21.clef.TrebleClef>
{0 - 0} <music21.tempo.MetronomeMark Quarter=120 (playback only)>
{0 - 0} <music21.key.Key of B- major>
{0 - 0} <music21.meter.TimeSignature 4/4>
{0 - 2/3} <music21.chord.Chord B-2 B-4>
{2/3 - 1 1/3} <music21.chord.Chord B-2 C5>
{1 1/3 - 2} <music21.chord.Chord B-2 B-4>
{2 - 4} <music21.chord.Chord B-2 A4>r6   r7   z[(['B-2', 'B-4'], '0.0', '0.667'), (['B-2', 'C5'], '0.67', '0.667'), (['B-2', 'B-4'], '1.33', '0.667'), (['B-2', 'A4'], '2.0', '2.0')]r  z<tuplet )r  r  r   r   
triplets01r  assertMultiLineEqualr   rt  r   	_reprTextr  r   r~  r   roundfloatr   r   r   r)   r  r  count)
rB   r  r   r  r0  r   rv   r)  r  ra  s
             rH   testChordifyFTest.testChordifyF  s   2 OOM445!!GGAJ))'215??DSW @ Y!	" 	!!GGAJ))'215??D?Q&	' &&w/2!!",,4RV,"W#(		) CE((LBJQ $%99-9a3q69-eE!((OQ/0eE!//2A679BJ 	 L 	J/	0 ,,.iim""7+:.37 . Ls   
HG?3AH?Hc                ,   [        5       nUR                  [        R                  " SSS9S5        UR	                  S[        R                  " SSS95        UR                  5       nUR                  [        R                  5       H  nU R                  [        U5      S5        M      [        5       nUR                  [        R                  " SSS9S	5        UR	                  S[        R                  " SSS95        UR                  5       nUR                  [        R                  5       H  nU R                  [        U5      S5        M      [        5       nUR                  [        R                  " SS
S9S5        UR	                  S[        R                  " SSS95        UR                  5       nUR                  [        R                  5       H  nU R                  [        U5      S5        M      [        5       nUR                  [        R                  " SSS9S5        UR	                  S[        R                  " SSS95        UR                  5       nUR                  [        R                  5       H  nU R                  [        U5      S5        M      g )Nr  r  rZ  r   r   rf   r6   ra  r  gUUUUUU?r*  gUUUUUU?0   )r   r   r   r<   r@   r  rt  r   r  r   r   )rB   r   r  ri   s       rH   testChordifyGTest.testChordifyG  s   H	tyyU;Q?	DIId!45**5;;7ASVQ' 8 H	tyyU;R@	DIId!45**5;;7ASVQ' 8 H	tyyV<bA	DIId!45**5;;7ASVQ' 8 H	tyyV<bA	DIId!45**5;;7ASVQ' 8rK   c                   [        5       nUR                  [        R                  " SSS9S5        UR	                  S[        R                  " SSS95        UR                  SS9  U R                  [        UR                  5      S	5        U R                  [        UR                  S   5      S5        U R                  [        UR                  S   5      S5        g )
Nzd-4r5   rZ  r   r   rf   Tr  r6   )	r   r   r   r<   r@   r  r   r   r6  rj  s     rH   testMakeVoicesATest.testMakeVoicesA  s    H	tyya8!<	DIId!45	T"QXX*QXXa[)1-QXXa[)1-rK   c                4   [         R                  " S5      nUR                  SS5      nUR                  5       R	                  SS9nU R                  [        UR                  5       R                  5      [        UR                  5       R                  5      5        U R                  UR                  5       R                  UR                  5       R                  R                  5       R                  5        U R                  [        UR                  5      S5        g )Nr  r   r+  Fr  rq   )r   r   r  r  r  r   r   r   rS  r"  r6  )rB   r   r  sFlatVoiceds       rH   testMakeVoicesBTest.testMakeVoicesB  s    LL#JJq!$	'')44U4C 	Y..0667[=P=P=R=X=X9YZ**,88$,,.44;;=II	K[//0!4rK   c                &   S nU" 5       nUR                  SSS9u  p4U R                  X25        U R                  UR                  S5        U R                  [	        UR
                  5      S5        U R                  UR                  S5        U R                  [	        UR
                  5      S5        [        5       nUR                  U5        UR                  U5        U" 5       nUR                  SSS9u  pgU R                  Xb5        U R                  UR                  UR                  5        U R                  [	        U5      [	        U5      5        U R                  [	        UR
                  5      S5        U" 5       nUR                  S5      u  pU R                  [	        UR
                  5      S5        U R                  [	        U	5      SU	R                  5        U" 5       nUR                  S[        R                  " S	5      5        UR                  S5      u  pU R                  [	        U
5      S
5        U R                  [	        U5      S5        U R                  US   [        R                  5        U R                  US   R                  S	5        g )Nc                     [        5       n U R                  [        R                  " SSS95        U R                  [        R                  " SSS95        U R                  [        R                  " SSS95        U $ )NrC   r5   rZ  rE   r6   ri   )r   rX   r   r<   )rW  s    rH   getS,Test.testSplitAtQuarterLengthA.<locals>.getS   sS    BIIdii156IIdii156IIdii156IrK   r6   T)retainOriginFr3   r7   r   2/2rq   r5   )splitAtQuarterLengthr  r   rS  r   r   r   rX   rT  r\   r@   r   r;   rm  ratioString)rB   rr  r   lr   rx  r  r2r  r3r  r4s               rH   testSplitAtQuarterLengthATest.testSplitAtQuarterLengthA  s   	 F%%ad%;a*QWWq)*QWWq)QQF'''>7R#a&)RXX*F''*RXX*R!R[[1F	E''./''*R!$R!$beU%8%89A**E2rK   c                   [        5       n[        5       nUR                  [        R                  " SSS9S5        [        5       nUR                  [        R                  " SS9S5        UR                  SU5        UR                  SU5        UR                  S5      u  pEU R                  [        UR                  5       R                  5      S5        U R                  [        UR                  5      S5        U R                  [        UR                  5       R                  5      S5        U R                  [        UR                  5      S5        [        5       nUR                  U5        UR                  U5        g)	z7
Test if recursive calls work over voices in a Measure
r  r6   rZ  r7   r   r5   r   N)r   r   r   r   r<   r@   rv  r   r   r  r   r6  r   rX   )rB   r0  r7  r8  mLeftmRightrx  s          rH   testSplitAtQuarterLengthBTest.testSplitAtQuarterLengthB)  s    YW
		$a8!<W
		2A6
		!R
		!R //2U]]_223Q7U\\*A.V^^-334a8V]]+Q/UVrK   c           	     J   [         R                  " S5      nUR                  S5      u  p#U R                  [	        UR
                  5      S5        U R                  [	        UR
                  5      S5        [        S5       H  nU R                  [        UR
                  U   R                  [        5      S   R                  5      [        UR
                  U   R                  [        5      S   R                  5      5        M     [        S5       H  nU R                  [        UR
                  U   R                  [        5      S   R                  5      [        UR
                  U   R                  [        5      S   R                  5      5        M     [        S5       H  nU R                  [        UR
                  U   R                  [        5      S   R                  5      [        UR
                  U   R                  [        5      S   R                  5      5        M     g)z
Test splitting a Score
r  r   rq   r   N)r   r   rv  r   r   r   rW   r   rt  r   r   r   r  )rB   r   sLeftsRightrb   s        rH   testSplitAtQuarterLengthCTest.testSplitAtQuarterLengthCA  s    LL#..q1U[[)1-V\\*A.qAEKKN55g>qAOOPFLLO66w?BPPQS  qAEKKN55g>qAFFGFLLO66w?BGGHJ  qAEKKN55g>qANNOFLLO66w?BOOPR rK   c                   [        [        R                  " SS9/5      nU R                  [        S5         UR                  SS/5        SSS5        UR                  / SQ5      nU R                  U[        5        U R                  [        U5      S5        U R                  US	   [         5        U R                  US	   R                  S5        U R                  [        US	   5      S
5        U R                  US	   S	   R                  S5        U R                  US
   R                  S5        U R                  [        US
   5      S
5        U R                  US
   S	   R                  S5        U R                  US   R                  S5        U R                  [        US   5      S
5        U R                  US   S	   R                  S5        U R                  US   S	   R                  R                  S5        g! , (       d  f       GN= f)z&
Was not returning splitTuples before
r  rZ  z:cannot split by quarter length list whose sum is not equalr   r   N)r   r   r   r7   r   r5   r6   r   r.  )r   r   r<   rc  r'   splitByQuarterLengthsrm  r(   r   r   r   r   r2   )rB   r   r   s      rH   testSplitByQuarterLengthsTest.testSplitByQuarterLengthsY  s    IIC(
  ##$4$`b##S#J/b ''8e[1UQ'eAh0q//5U1X*q!22C8q//5U1X*q!22C8q//5U1X*q!22C8q!--22I>'b bs   G88
Hc                   [        5       nUR                  [        R                  " S5      5        U R	                  UR
                  S5        UR                  [        R                  " S5      5        [        R                  " SSS9nUR                  R                  5       Ul        U R	                  UR                  R                  S5        UR                  U5        U R	                  UR
                  S5        UR                  [        R                  " S5      5        U R	                  UR
                  S	5        UR                   Vs/ s H  n[        UR                  5      PM     nnU R	                  U/ S
Q5        UR                  S[        R                  " S5      5        UR                   Vs/ s H  n[        U5      PM     nnU R	                  U/ SQ5        [        R                  " SSS9R!                  5       nSUR                  l        UR                  SU5        UR                   Vs/ s H  n[        U5      PM     nnU R	                  U/ SQ5        gs  snf s  snf s  snf )z
testing grace notes
r  r   mpd#4r   rZ  r   r  r   )r  r  r  r5   r  )r  rf   r  r  r   r   F)r  zC#4rf   r  r  N)r   rX   r   r<   r   rS  r   Dynamicr   getGraceDurationr   r   r   r   r  r~  getGraceslash)rB   r   gn1r   r)  gn2s         rH   testGracesInStreamTest.testGracesInStreamx  s    I	4!,	!!$'(iiS1||44633S9	,	4!,
 ()ww/w!QWWw/ 34 	
DIIdO,!"+AQ+ 9:
 iiT2;;="	C  "#+AQ+ @A) 0 , ,s   I0I /I%c                   [        5       nUR                  [        R                  " SS/5      5        [        R                  " SS/SS9nUR                  R                  5       Ul        UR                  U5        [        R                  " SS/SS9nUR                  R                  5       Ul        UR                  U5        UR                  [        R                  " S	S
/SS95        [        R                  " SS/SS9nUR                  R                  5       Ul        UR                  U5        UR                  [        R                  " SS/SS95        g )Nr  r  r  a#4r   rZ  r  r  r  r  r6   r  r  r5   )r   rX   r   r  r   r  )rB   r   gc1gc2gc3s        rH   testGraceChordsTest.testGraceChords  s     I	dD\*+kk5%.<||446	kk4,c:||446		dD\;<kk5%.<||446		dD\;<rK   c                   [        5       nUR                  [        R                  " S5      5        [        R
                  " 5       nUR                  U5      R                  S5      nU R                  UR                  S5      SU5        g )Nr  r  z<fifths>1</fifths>r   )
r   rX   r   r  r)   r  r   r  r  r`  )rB   r   r  ra  s       rH   testScoreShowATest.testScoreShowA  sa     H	,,.iil!!'*388$891cBrK   c                   [        5       n[        R                  " 5       n[        R                  " 5       nUR                  U5        UR                  U5        U R	                  [        U[        R                     5      S5        g r  )r   r&   VariantrX   r   r   )rB   r   r7  r8  s       rH   testGetVariantsATest.testGetVariantsA  sU    H____		Qw/0!4rK   c                2   [        5       nUR                  [        R                  " S5      S5        UR	                  SS9  [
        R                  " 5       n[        5       nUR                  [        R                  " S5      S5        UR                  U5        UR                  SU5        U R                  [        UR                   Vs/ s H  oDR                  PM     sn5      S5        U R                  [        U[
        R                     5      S5        UR                  S	SS
9  U R                  [        UR                   Vs/ s H  oDR                  PM     sn5      S5        U R                  [        U[
        R                     5      S5        UR                  S	SS
9  U R                  [        UR                   Vs/ s H  oDR                  PM     sn5      S5        U R                  [        U[
        R                     5      S5        gs  snf s  snf s  snf )z%
This tests a single-measure variant
r   r  Tr  G#4rq   <['D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D']r5   FmatchBySpanr  z@['D', 'D', 'D', 'D', 'G#', 'G#', 'G#', 'G#', 'D', 'D', 'D', 'D']Nr   r   r   r<   r  r&   r  r   rX   r@   r   r   r~  r   r   activateVariantsrB   r   r7  m2Altrv   s        rH   testActivateVariantsATest.testActivateVariantsA  s    H	tyy+	t$__	499U+Q/
		% 	
Baii8iffi89W	YQw/0!4	ud;aii8iffi89[	]Qw/0!4	ud;aii8iffi89W	YQw/0!4 9 9 9s   H
H<Hc                   [        5       nUR                  [        R                  " S5      S5        UR	                  SS9  [
        R                  " 5       n[        5       nUR                  [        R                  " S5      S5        UR                  U5        UR                  R                  S5        [
        R                  " 5       n[        5       nUR                  [        R                  " S5      S5        UR                  U5        UR                  R                  S	5        UR                  SU5        UR                  SU5        U R                  [        UR                   Vs/ s H  oUR                  PM     sn5      S
5        U R                  [        U[
        R                     5      S5        UR!                  SSSS9  U R                  [        UR                   Vs/ s H  oUR                  PM     sn5      S5        U R                  [        U[
        R                     5      S5        UR!                  SSSS9  U R                  [        UR                   Vs/ s H  oUR                  PM     sn5      S5        U R                  [        U[
        R                     5      S5        UR!                  S	SSS9  U R                  [        UR                   Vs/ s H  oUR                  PM     sn5      S5        U R                  [        U[
        R                     5      S5        U[
        R                      Vs/ s H  ofR                  PM     nnU R                  [        U5      S5        gs  snf s  snf s  snf s  snf s  snf )zF
This tests two variants with different groups, each a single measure
r   r  Tr  r  rq   m2-ar  zm2-br  r6   F)groupr  r  z@['D', 'D', 'D', 'D', 'A#', 'A#', 'A#', 'A#', 'D', 'D', 'D', 'D']r  z@['D', 'D', 'D', 'D', 'B-', 'B-', 'B-', 'B-', 'D', 'D', 'D', 'D']z[['default'], ['default']]N)r   r   r   r<   r  r&   r  r   rX   r  r@   r   r   r~  r   r   r  )rB   r   r7  r  r8  rv   r   r)  s           rH   testActivateVariantsBTest.testActivateVariantsB  s    H	tyy+	t$__	499U+Q/
		%
		 __	499U+Q/
		%
		  	
B	Baii8iffi89W	YQw/0!4	UDIaii8iffi89[	]Qw/0!4 	
UDIaii8iffi89[	]Qw/0!4 	
6udCaii8iffi89[	]Qw/0!4 $%W__#56#5a#56U%AB1 9
 9 9 9 7s   $M- M2M7M<:Nc                   [        5       nUR                  [        R                  " S5      S5        UR	                  SS9  [
        R                  " 5       n[        5       nUR                  [        R                  " S5      S5        UR                  U5        [        5       nUR                  [        R                  " S5      S5        UR                  U5        UR                  SU5        U R                  [        UR                   Vs/ s H  oUR                  PM     sn5      S5        U R                  [        U[
        R                     5      S	5        UR                  S
SS9  U R                  [        UR                   Vs/ s H  oUR                  PM     sn5      S5        U R                  [        U[
        R                     5      S	5        UR                  S
SS9  U R                  [        UR                   Vs/ s H  oUR                  PM     sn5      S5        U R                  [        U[
        R                     5      S	5        gs  snf s  snf s  snf )z"
This tests a two-measure variant
r   r  Tr  r  rq   zA#4r  r5   Fr  zD['D', 'D', 'D', 'D', 'G#', 'G#', 'G#', 'G#', 'A#', 'A#', 'A#', 'A#']Nr  )rB   r   r7  r  m3Altrv   s         rH   testActivateVariantsCTest.testActivateVariantsC"   s    H	tyy+	t$__	499U+Q/
		%	499U+Q/
		% 	
Baii8iffi89W	YQw/0!4	ud;aii8iffi89_	aQw/0!4 	
ud;aii8iffi89W	YQw/0!4 9 9 9s   II=Ic                N   [        5       nUR                  [        R                  " S5      S5        [        R
                  " 5       nUR                  [        R                  " S5      5        UR                  [        R                  " S5      5        UR                  [        R                  " S5      5        UR                  SU5        U R                  [        UR                   Vs/ s H  o3R                  PM     sn5      S5        U R                  [        UR                  5      S5        U R                  [        U[        R
                     5      S5        UR                  S	S
S9  U R                  [        UR                   Vs/ s H  o3R                  PM     sn5      S5        U R                  [        UR                  5      S5        U R                  [        U[        R
                     5      S5        UR                  S	S
S9  U R                  [        UR                   Vs/ s H  o3R                  PM     sn5      S5        U R                  [        UR                  5      S5        U R                  [        U[        R
                     5      S5        gs  snf s  snf s  snf )z!
This tests a note-level variant
r   r  r  r  r  r3   r  r5   FTr  z?['D', 'D', 'D', 'D', 'D', 'G#', 'A#', 'C#', 'D', 'D', 'D', 'D']N)r   r   r   r<   r&   r  rX   r@   r   r   r~  r   r   r   r  rB   r   r%  rv   s       rH   testActivateVariantsDTest.testActivateVariantsDF   s    H	tyy+OO	5!"	5!"	5!"	Aaii8iffi89W	YQWWr*Qw/0!4	ud;aii8iffi89Z	\QWWr*Qw/0!4	ud;aii8iffi89W	YQWWr*Qw/0!4# 9 9 9s   %JJ%J"c                   [        5       nUR                  [        R                  " S5      S5        [        R
                  " 5       nUR                  [        R                  " SSS95        UR                  [        R                  " SSS95        UR                  [        R                  " SS	S95        UR                  S
U5        U R                  [        UR                   Vs/ s H  o3R                  PM     sn5      S5        U R                  [        UR                  5      S5        U R                  [        U[        R
                     5      S	5        UR                  SSS9  U R                  [        UR                   Vs/ s H  o3R                  PM     sn5      S5        U R                  [        UR                  5      S5        U R                  [        U[        R
                     5      S	5        U R                  [        [        U[        R
                     R!                  5       R"                  5      5      S5        gs  snf s  snf )z;
This tests a note-level variant with miss-matched rhythms
r   r  r  r   rZ  r  r   r  r5   r3   r  FTr  z>['D', 'D', 'D', 'D', 'D', 'G#', 'D', 'C#', 'D', 'D', 'D', 'D']z.[<music21.note.Note D>, <music21.note.Note D>]N)r   r   r   r<   r&   r  rX   r@   r   r   r~  r   r   r   r  r   r  r\   r  s       rH   testActivateVariantsETest.testActivateVariantsEj   s    H	tyy+OO	545	545	523	Aaii8iffi89W	YQWWr*Qw/0!4	ud;
 	aii8iffi89Y	[QWWr*Qw/0!4T!GOO"4":":"<"E"EFGI	K 9 9s   "IIc                0   [        5       nUR                  [        R                  " S5      S5        [        R
                  " 5       nUR                  S[        R                  " S5      5        UR                  [        R                  " SSS95        UR                  [        R                  " SS	S95        UR                  [        R                  " S
S	S95        UR                  SU5        U R                  [        UR                  5       R                  5      S5        U R                  [        UR                   Vs/ s H  o3R                   PM     sn5      S5        U R                  [        UR#                  [        R                  5      5      S5        UR%                  SSS9  U R                  [        UR                  5       R                  5      S5        U R                  [        UR                   Vs/ s H  o3R                   PM     sn5      S5        U R                  [        UR#                  [        R                  5      5      S5        UR%                  SSS9  U R                  [        UR                  5       R                  5      S5        U R                  [        UR                   Vs/ s H  o3R                   PM     sn5      S5        U R                  [        UR#                  [        R                  5      5      S5        gs  snf s  snf s  snf )z-
test replacing 1 note with a 3-note variant
r   r  r   ffr  r   rZ  r  r   r  r3   r  Tr  r;  zI['D', 'D', 'D', 'D', 'D', 'G#', 'A#', 'C#', 'D', 'D', 'D', 'D', 'D', 'D']r5   N)r   r   r   r<   r&   r  r@   r   r  rX   r   r   r  r   r   r~  r   rt  r  r  s       rH   testActivateVariantsBySpanA Test.testActivateVariantsBySpanA   s3    H	tyy+OO	H$$T*+	545	556	556	A 	QYY[../4aii8iffi89W	YQ11(2B2BCDaH	tT:QYY[../4+A+,W	Y 	Q11(2B2BCDaH	tT:QYY[../4aii8iffi89W	Y
 	Q11(2B2BCDaH% 9 , 9s   ;L	5L/Lc                j   [        5       nUR                  [        R                  " S5      S5        UR	                  SS9  [
        R                  " 5       n[        5       nUR                  [        R                  " S5      S5        [        R                  " S5      Ul
        UR                  U5        UR                  R                  S5        UR                  S	U5        U R                  [        UR!                  5       R"                  5      S5        U R                  [        UR%                  [        5      5      S	5        U R                  ['        UR(                   Vs/ s H  oDR*                  PM     sn5      S
5        UR-                  SSS9  U R                  [        UR!                  5       R"                  5      S5        U R                  [        UR%                  [        5      5      S5        U R                  UR(                   Vs/ s H  oDR*                  PM     sn/ SQ5        UR-                  SSSS9  U R                  [        UR%                  [        5      5      S	5        U R                  ['        UR(                   Vs/ s H  oDR*                  PM     sn5      S
5        gs  snf s  snf s  snf )z6
test replacing 2 measures by a longer single measure
r   r   Tr  r  r   z8/4r  rq   zP['D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D']r  r7   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  defaultN)r   r   r   r<   r  r&   r  r   r   r;   r   rX   r  r@   r   r   r  r   rt  r   r~  r   r  r  s        rH   testActivateVariantsBySpanB Test.testActivateVariantsBySpanB   s     H	tyy+	t$__	499U+Q/#11%8
		%
		  	
BQYY[../4Q11':;Q?+A+,^	`
 	
tT:QYY[../4Q11':;Q?!))4)Q&&)4.	/ 	
9$EQ11':;Q?+A+,^	` , 5 ,s   J&J+J0c                   [         R                  " S5      nUR                  S   nUR                  SSS9nU HF  n[	        U[
        5      (       a  U R                  [        U5      S5        M5  U R                  S5        MH     UR                  SS[        R                  1S9nSnSnUR                  SS	9 H~  nU R                  U[
        [        R                  [        R                  45        [	        U[        R                  5      (       a  SnM[  [	        U[        R                  5      (       d  M|  SnM     U R                  US
5        U R                  US5        g )Nr  r7   FT)fillWithRests	removeAllr   z&remove all was supposed to remove all!)r  r  exemptFromRemover  z/No TimeSignature was found even though exemptedz+No Rest found even though fillWithRest=True)r   r   r   templater  r   r   r   failr   r;   r  rm  r   r  r   )rB   rE   r  	bassEmptyr   
bassEmpty2foundTimeSignature	foundRests           rH   testTemplateAllTest.testTemplateAll   s$   LL#wwqzMMMF	A!W%%  Q+		BC	  ]]-15:5H5H4I # K
 #	##T#:A!!!gtyy%:M:M%NO!U0011%)"Atyy)) 	 ; 	*,]^	#PQrK   c                   [        5       nUR                  [        R                  " SSS95        UR                  [        R                  " SSS95        UR                  [        R                  " SSS95        UR                  [        R                  " SSS95        UR                  S   nUR                  [        UR                  5      S-     nUR                  S	   n[        R                  " X#5      n[        R                  " X45      nUR                  U5        UR                  U5        [        5       nXl	        U H3  nU R                  UR                  U5      UR                  U5      5        M5     g )
Nr  r  r1   r  r  r	  r   r6   rQ   )r   rX   r   r<   r   r   r   
DiminuendorP  r\   r   r  )	rB   r   r
  r  r  sp1sp2rl   r`  s	            rH   testSetElementsTest.testSetElements   s   H	3V,-	3V,-	3V,-	3V,-WWQZWWS\Q&'WWR[!!")  (		XBR//3//24 rK   c                   [         R                  " S5      n[         R                  " S5      nSUl        [         R                  " S5      nSUl        [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S	5      n[        5       n	U	R	                  XX4/5        [        5       n
U
R	                  XVXx/5        [        [        U	R                  5      S
-
  5       HG  nU	R                  U   nU	R                  US/5      nU
R                  U5      nU
R                  U5      nMI     g )Nr  B3firstBsecondBrg   r  r  r  zA-5r5   r<   )
r   r<   r   r   rX   rW   r   r   r  r  )rB   r
  r  r  r  r0  r1  r  r  r  r  rb   note1note2unused_note3unused_note4s                   rH   testGetElementAfterElementTest.testGetElementAfterElement!  s   YYt_YYt_YYt_YYt_YYt_YYt_YYt_YYuxRR$%h

BB#$s4::*+AJJqME//x@E2259L2259L	 ,rK   c                N   [         R                  " 5       n[        5       nU R                  [        5         [        X/5        S S S 5        U R                  [        5         [        US UR                  5       /5        S S S 5        g ! , (       d  f       NI= f! , (       d  f       g = fr  )r   r<   r   r   r   r.  r  s      rH   testCoreGuardBeforeAddElement"Test.testCoreGuardBeforeAddElement !  sk    IIKH/A6N 0/AtQVVX&' 0/ 0///s   BB
B
B$c                t    U  Vs/ s H&  n[        U[        5      (       d  M  UR                  PM(     sn$ s  snf )zL
Helper function to return beam list for all notes and rests in the stream.
)r  r   r^  )srcListr   s     rH   get_beams_from_streamTest.get_beams_from_stream?!  s+    
 ")GAJq+,FGGGs   55c                   [        5       n[        R                  " S5      Ul        UR	                  [
        R                  " SS9S5        UR                  5       nU R                  U5      nU R                  [        R                  " 5       [        R                  " 5       [        R                  " 5       [        R                  " 5       /U5        g)z>
Test that for a measure full of quarters, there are no beams
r   r5   rZ  rq   N)r   r   r;   r   r   r   r<   r   r  r   r   Beams)rB   r   r1  r^  s       rH   test_makeBeams__all_quarters!Test.test_makeBeams__all_quartersF!  s     I--e4	tyyq115[[]**2.$**,

djjlDJJLQSXYrK   c                   [        5       n[        R                  " S5      Ul        UR	                  [
        R                  " SS9S5        UR                  5       nU R                  U5      n[        R                  " 5       nUR                  S5        [        R                  " 5       nUR                  S5        U R                  XCS   5        U R                  XSS   5        U R                  XCS	   5        U R                  XSS
   5        U R                  XCS   5        U R                  XSS   5        U R                  XCS   5        U R                  XSS   5        g)zE
Test a full measure full of eighth is grouped by beams into couples
r   r   rZ  r   rO   rP   r   r5   r6   r7   rq   r3   r   r+  Nr   r   r;   r   r   r   r<   r   r  r   r  rX   r   )rB   r   r1  r^  first_note_beamssecond_note_beamss         rH   test_makeBeams__all_eighths Test.test_makeBeams__all_eighthsS!  s    I--e4	tyys3Q7[[]**2.  ::<( JJL  ( 	)84*!H5)84*!H5)84*!H5)84*!H5rK   c                   [        5       n[        R                  " S5      Ul        [	        S5       HI  nUR                  [        R                  " SS95        UR                  [        R                  " SS95        MK     UR                  5       nU R                  U5      nU R                  [        R                  " 5       /S-  U5        g)z6
Test a full measure of 8th rest followed by 8th note
r   rq   r   rZ  r   N)r   r   r;   r   rW   rX   r   r  r<   r   r  r   r   r  )rB   r   rb   r1  r^  s        rH   'test_makeBeams__eighth_rests_and_eighth,Test.test_makeBeams__eighth_rests_and_eighthr!  s     I--e4qAHHTYYS12HHTYYS12  [[]**2.$**,)A-u5rK   c                   [        5       n[        R                  " S5      Ul        [	        S5       Hl  nUR                  [        R                  " SS95        UR                  [        R                  " SS95        UR                  [        R                  " SS95        Mn     UR                  5       nU R                  U5      n[        R                  " 5       nUR                  S5        UR                  SS5        [        R                  " 5       nUR                  S	5        [        R                  " 5       nUR                  S
5        UR                  SS5        U R                  XTS   5        U R                  XdS   5        U R                  XtS   5        U R                  XTS   5        U R                  XdS   5        U R                  XtS   5        g)z
Test that the pattern of "1 e a" repeated more than once has correct beams.

Note: proper beams repr: https://share.getcloudapp.com/12uE7eBA
rh   r6   r   rZ  r   rO   partialrightr$  rP   leftr   r5   r7   rq   r3   N)r   r   r;   r   rW   rX   r   r<   r   r  r   r  r   )rB   r   rb   r1  r^  r  r  third_note_beamss           rH   test_makeBeams__repeated_1_e_a#Test.test_makeBeams__repeated_1_e_a!  sk    I--e4qAHHTYYT23HHTYYT23HHTYYT23 
 [[]**2.  ::<(	73 JJL  ,::<'	62 	)84*!H5)84)84*!H5)84rK   c                0   [        5       n[        R                  " S5      Ul        UR	                  [
        R                  " SS9S5        UR                  5       nU R                  U5      n[        R                  " 5       nUR                  S5        UR                  S5        [        R                  " 5       nUR                  S5        UR                  S5        [        R                  " 5       nUR                  S5        UR                  S5        [        R                  " 5       nUR                  S5        UR                  S5        U R                  XCS   5        U R                  XSS	   5        U R                  XcS
   5        U R                  XsS   5        g)z;
Test that 4 16th notes have proper beams across them all.
r|  r   rZ  rq   rO   r$  rP   r   r5   r6   r7   Nr  )rB   r   r1  r^  r  r  r  fourth_note_beamss           rH   test_makeBeams__1_e_n_aTest.test_makeBeams__1_e_n_a!  s?    I--e4	tyyt4a8[[]**2.  ::<(( JJL  ,  ,::<
+
+ JJL  (  ( 	)84*!H5)84*!H5rK   c                   [        5       n[        R                  " S5      Ul        UR	                  [
        R                  " SS95        UR	                  [
        R                  " SS95        UR	                  [
        R                  " SS95        UR	                  [
        R                  " SS95        UR	                  [
        R                  " SS95        UR                  5       nU R                  U5      n[        R                  " 5       nUR	                  S5        UR	                  SS5        U R                  XCS	   5        g
)zB
Test that a 16th+8th notes after a 16th notes have proper beams.
rh   r   rZ  r   r-  rO   r  r  r7   N)r   r   r;   r   rX   r   r<   r   r  r   r  r   )rB   r   r1  r^  r 	  s        rH   $test_makeBeams__1_e__after_16th_note)Test.test_makeBeams__1_e__after_16th_note!  s     I--e4	./	./	./	./	./[[]**2. !JJL  )  G4 	*!H5rK   c                   [        5       n[        R                  " S5      Ul        SUl        UR                  [        R                  " SS9S5        UR                  SS9  U R                  U5      n[        R                  " 5       nUR                  S5        [        R                  " 5       nUR                  S	5        [        R                  " 5       nUR                  S
5        U R                  US   [        R                  " 5       5        U R                  US   U5        U R                  US   U5        U R                  US   U5        U R                  US   U5        g )Nru  r   rN   r1   r3   Tr  rO   r$  rP   r   r5   r6   r7   rq   )r   r   r;   r   rw  r   r   r<   r   r  r   r  rX   r   )rB   r   r^  
start_beamcontinue_beam	stop_beams         rH   test_makeBeams__paddingLeft_2_2$Test.test_makeBeams__paddingLeft_2_2!  s   I--e4	tyyh/3	D!**1-ZZ\
'"

Z(JJL	 q4::<0q:.q=1q=1q9-rK   c                   [        5       n[        R                  " S5      Ul        SUl        UR                  [        R                  " SS95        UR                  [        R                  " SS95        UR                  [        R                  " SS95        UR                  SS9  U R                  U5      n[        R                  " 5       n[        R                  " 5       nUR                  S5        [        R                  " 5       nUR                  S	5        U R                  X#X3/5        S
Ul        UR                  [        R                  " SS95        UR                  SS9  U R                  U5      nU R                  X#X4U/5        g )Nr  r   r0   r1   rN   Tr  rO   rP   r   )r   r   r;   r   paddingRightrX   r   r<   r   r  r   r  r   )rB   r   r^  no_beamr	  r		  s         rH   test_makeBeams__paddingRight!Test.test_makeBeams__paddingRight!  s   I--e4		*+	)*	)*	D!**1-**,ZZ\
'"JJL	 ' ;<	)*	D!**1-'y IJrK   c                   [        [        R                  " 5       /5      n[        R	                  SS9n[        R	                  SS9n[        R	                  5       nUR                  5       nUR                  US9nUR                  US9nUR                  [        U5      S9nUR                  [        U5      S9n	UR                  US9n
U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  U	R                  S5        U R                  U
R                  S5        U R                  [        U5      [        U5      5        U R                  [        U5      [        U	5      5        XRX4U
4 H  n[        R                  " U5        M     g )Nmusicxmlsuffixxmlr6  z	.musicxmlz.xml)r   r   r<   r  getTempFilewriter   r   r	  osrb  )rB   r   tmpMusicxmltmpXmltmpNoSuffixout1out2out3out4out5out6r6  s               rH   	testWriteTest.testWrite"  ss   DIIK=!"..j.A)))7"..0 wwyww+w&ww&w!ww#k*w+ww#f+w&ww+w&k2k2f-k2f-k2TCI.TCI.f4@BIIbM ArK   c                2   [        5       n[        5       n[        5       n[        R                  " S5      n[        R                  " S5      nUR	                  U5        UR	                  U5        UR	                  X#/5        UR                  5       n[        U5      R                  SS5      nU R                  U5        [        R                  " U5        [        R                  " U5        UR                  5       n[        U5      R                  SS5      nU R                  [        U5      R                  S5      5        U R                  [        R                  R                  U5      5        [        R                  " U5        [        R                  " U5        [        R!                  SS9nUR                  US9n[        U5      R                  SS5      nU R                  [        U5      R                  S	5      5        U R                  [        R                  R                  U5      5        [        R                  " U5        [        R                  " U5        [        R                  " U5        UR                  S
S9n[        U5      R                  SS5      nU R                  [        U5      R                  S5      5        U R                  [        R                  R                  U5      5        [        R                  " U5        [        R                  " U5        g )NztinyNotation: 4/4 e1ztinyNotation: 4/4 f1z-2z-1z-2.musicxmlr	  r	  r	  z-2.xmlr.  )fmtz-2.mid)r   r	   r   r   rX   r	  r   r  rF  r	  rb  r   endswithpathexistsr  r	  )	rB   r   rk   rl   r  r  out	otherFiletmps	            rH   testOpusWriteTest.testOpusWrite3"  s   FWW__34__34
		"
		"	"ggiH$$T40	S!
		#
		) ggiH$$T40	C))-89y12
		#
		) &&e&4gggoH$$T40	C))(34y12
		#
		#
		) gg&g!H$$T40	C))(34y12
		#
		)rK   c                   [         R                  " 5       n[        U/5      n[        U/5      nU R                  UR                  U5        U R                  UR                  5        U R                  UR                  U5        g r  )r   r<   r   r  r  r   r   )rB   r   rk   rl   s       rH    testActiveSiteAfterBoolIteration%Test.testActiveSiteAfterBoolIteration]"  sW    IIKQC[QC[allB'!allB'rK   )r  N(	  r   r   r   r   r   r   r   r  r  r"  r&  r5  rD  rK  rO  rU  r^  rb  rj  rn  rq  ry  r  r  r  r  r  r  r  r  r  r  r
  r  r!  r'  r3  r@  rI  rL  rW  ra  rf  rn  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r*  r/  r5  r9  r=  rD  rY  r_  rf  rk  rn  ru  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r:  rA  rF  rN  rS  rl  rv  r  r  r  r  r  r  r  r  r  r  r  r
  r  r+  r8  rP  rh  rq  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r'  r.  r4  r@  rE  rH  re  rp  rs  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r'  r+  r1  r6  r<  rB  rH  rN  r[  rb  re  ri  rm  rq  rt  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r'  r,  r1  r6  r>  rA  rE  rH  rL  rX  rc  rg  rj  rn  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  staticmethodr  r  r  r  r  r	  r	  r
	  r	  r#	  r-	  r0	  r   r   rK   rH   r   r   =  s   #9
V&P& P8
0DdL,3 
$D+C(N8''R,*\39 "1H1$3B D@>,"	,HWT:6(
.5`9<C0-0#*J4(;2>
"; ";Fz<@7Z
xQ.(7\99z1Nf"EH(1T1$109'v&3^)3Vn6d*>,1`84O4
/	='KR(BT2(4* 848>)<.8->)!V(!T&9PB&--^RP2`:?^:Xb>?@FD028092C4un!=F(7T/8!1H;L55n5:1Ef1*.X1*JNlIVB@D3()7V"GJi^X*R\P8<$O6O:O:>,>4AF:0dlF\;D0d+
ZGB&l)\4C<c@KJZF<)GVF(HB6.3.E5<5RnQF.BO8G4$
I32BJ%1N-9`NBPD5AtYn88t>JDS8%* 2H,S^#(X92GHR197 - T4+4Z.j4W$	]6N,Y	568
.G 4Q.G2E"'5*nM&F*=,a&0Jd!?F; _DI&I(TTrLh="<H2#6JF]P+KZD$2<-4`=$8AtG0./.
0(T58t!(F.
5'3T0R0?>,B\=0C55@0Cd"5H5HK@"IL%`PR64&:4(> H HZ6>6#5J 6D62.,K6B(T( (rK   r   __main__verbose):
__future__r   rY   r	  r   unittestr   r  r   music21.stream.baser   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r%   r&   music21.baser'   r(   r  r)   r  r*   r   Environmentr  TestCaser,   r   r   mainTestr   rK   rH   <module>r<	     s    #  	    $ / & % ' % $ $                           6 % 3&&~6v8$$ vtfD(8 fD(TI zT9% rK   