
    rhN/                        S SK J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\R"                  5      r\S:X  a  S SKr\R(                  " \5        gg)    )annotationsN)articulations)corpus)DurationTuple)expressions)LilypondConverter)meter)note)stream)tie)volumec                  \    \ 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)Test   c                0   [         R                  " 5       nU R                  [        U5      S5        SUl        U R                  [        U5      S5        SUl        U R                  [        U5      S5        S Ul        U R                  [        U5      S5        g )Nz<music21.note.Lyric number=1>hiz'<music21.note.Lyric number=1 text='hi'>versez:<music21.note.Lyric number=1 identifier='verse' text='hi'>z0<music21.note.Lyric number=1 identifier='verse'>)r
   LyricassertEqualreprtext
identifier)selflys     P/home/james-whalen/.local/lib/python3.13/site-packages/music21/test/test_note.pytestLyricReprTest.testLyricRepr   sv    ZZ\b#BCb#LMb#_`b#UV    c                j   [         R                  " 5       nUR                  R                  5         [	        SSS5      n[	        SSS5      nUR                  R                  U5        UR                  R                  U5        U R                  UR                  R                  S5        U R                  UR                  R                  S5      S5        U R                  UR                  R                  S5      S	5        U R                  UR                  R                  S
5      S	5        UR                  R                  S5        Sn[        5       nUR                  U5        [        UR                  5      R                  SS5      R                  5       nU R                  XF5        SnUR!                  5        H{  nUR#                  S5      U   n	[        5       nUR                  U5        [        UR                  5      R                  SS5      R                  5       nU R                  X5        US	-  nM}     g )Nwholer         @quarter      ?      @               @zc'4~
c'2.~
c'4  
)r
   Notedurationclearr   addDurationTupler   quarterLengthcomponentIndexAtQtrPositionsliceComponentAtPositionr   appendM21ObjectToContextstrcontextreplacestripsplitAtDurationssplit)
r   note1d1d2matchStrconvoutStrithisNotematchSubs
             r   testComplexTest.testComplex   s   		7As+9a-''+''+55s;CCAFJCCAFJCCCH!L//4% "%%e,T\\"**3399;*..0H~~d+A.H$&D))(3&..sB7==?FX.FA 1r   c                :   [         R                  " 5       nU R                  UR                  5        [         R                  " 5       nSUR
                  l        U R                  UR
                  R                  R                  S5        U R                  UR
                  R                  S5        [         R                  " 5       nSUl        SUl
        U R                  UR
                  R                  S5        U R                  UR
                  R                  S5        g )NzB-flat
   A   g     @	   )r
   Rest
assertTrueisRestr,   pitchnamer   
accidental
pitchClassoctaveassertAlmostEqual	frequency)r   note2note3a5s       r   testNoteTest.testNote8   s    		%		 	//44f=//4YY[	rxx1159,,a0r   c                    [         R                  " 5       nSUl        SUl        [        R
                  " U5      nU R                  UR                  UR                  5        g )N      @D)r
   r,   r0   rO   copydeepcopyr   )r   abs      r   testCopyNoteTest.testCopyNoteH   sA    IIKMM!(r   c                6   [         R                  " S5      n/ nUR                  5       R                   HH  nUR                   H5  n[        U[        R                  5      (       d  M$  UR                  U5        M7     MJ     U R                  [        U5      S5        g )Nzbach/bwv5.7   )
r   parseflattennotesAndRestsr   
isinstanceFermataappendr   len)r   r_   foundnobjs        r   testMusicXMLFermataTest.testMusicXMLFermataO   sn    LL'**A}}c;#6#677LL% % + 	UR(r   c                D   SSS/ SQS/S-  /SSS/ SQS/S-  /S	SS/ SQS
/S-  /SSS/ SQS/S-  /SSS/ SQS/S-  /SSS/ SQS/S-  /SSS/ SQS/S-  /SSS/ SQS/S-  /SSS/ SQ/ SQ//	nU GHR  u  p#pEn[         R                  " 5       nX7l        [        R                  " 5       n[
        R                  " U5      Ul        UR                  Xt5        U R                  [        U5      US-   5        [        U5       V	s/ s H  oR                  U	   R                  PM     n
n	[        [        U5      5       H  n	U R                  X   XY   S5        M     [        U5       V	s/ s H%  oR                  U	   R                  R                  PM'     n
n	[        [        U5      5       H  n	U R                  X   Xi   S5        M     GMU     U GH  u  p#pEn[        R                   " 5       n[         R                  " 5       nX7l        [        R                  " 5       n[
        R                  " U5      Ul        UR#                  U5        [        R                  " 5       nUR                  Xt5        U R                  [        U5      U5        U R                  [        UR                  5      U5        UR#                  U5        [        U5       V	s/ s H  oR                  U	   R                  PM     n
n	[        [        U5      5       H  n	U R                  X   XY   S5        M     [        U5       V	s/ s H%  oR                  U	   R                  R                  PM'     n
n	[        [        U5      5       H  n	U R                  X   Xi   S5        M     GM     g s  sn	f s  sn	f s  sn	f s  sn	f )N3/4      ?   )r#         ?       @      @      @r[   r#         ?   )r#   g      ?ru   g      ?rv   g      @rw   g      @z3/2rv   6/8)r#   g|a2U?g_?rv   g0@gRTU@ru   z9/8z12/8z6/16g      ?z5/4r'   rI   )r#   rv   rx   r!   r$   z2/8+3/8+2/8)r#   ru   rv   g4F먪@g/iQU@rx   )r#   r#   ru   ru   ru   r#   r&   )r
   r,   r0   r   Measurer	   TimeSignaturetimeSignaturerepeatAppendr   rk   rangerg   beatrS   beatDurationPartrj   )r   datatsStrnQLnCount	matchBeatmatchBeatDurrm   mr@   postpm1m2s                 r   testNoteBeatPropertyTest.testNoteBeatPropertyX   sh   C:UQYD!IUQYCHUQY CIUQYCIUQYS!JUQY T1KVaZ Aq3UQY C$J+-+
6 <@7E<		A!O A#11%8AONN1%SVVaZ0 6;6]C]OOA&++]DC3y>*&&tw	a@ + LQQW=Y=aOOA&33AA=DY3y>*&&twC +# <@* <@7E<A		A!O !B$2259BHHRL !BOOA&SWf-S!1!12F;HHRL 7<FmDm$$Q',,mDD3y>*&&tw	a@ + MRRXMZMq$$Q'44BBMDZ3y>*&&twC +1 <@ D
 Z2 E [s   >"N!,N"N(,Nc                x   S/ SQ/S/ SQ//nU H  u  p#[         R                  " U5      n/ nUR                  S   R                  5       R                   H/  nUR
                  Ul        UR                  UR                  5        M1     [        [        U5      5       H  nU R                  X7   XW   5        M     M     g )Nzbach/bwv255)r!   r#   rw   rx   r!   r(   r#   ru   zbach/bwv153.9)	r#   rv   rx   r#   rv   rx   r#   rx   r#   r%   )r   re   partsrf   rg   beatStrlyricrj   r   r   rk   r   )r   r   workmatchsrl   rm   r@   s           r   testNoteBeatPropertyCorpusTest.testNoteBeatPropertyCorpus   s     HI "OP  KDT"AEWWQZ'')77))QVV$ 8 3u:&  584 '  r   c                   [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      nU R                  X5        U R                  X5        U R                  X5        S H&  u  pVnXQl        Xdl        U R                  X:H  U5        M(     S H&  u  pVnXQl        Xbl        U R                  X:H  U5        M(     SUl        SUl        S H:  u  pVnXQR
                  l        XdR
                  l        U R                  X:H  U5        M<     SUR
                  l        SUR
                  l        [        R                  " 5       n[        R                  " 5       n	US S	4XS
44 H&  u  pVnXQl        Xdl        U R                  X:H  U5        M(     XX44 H
  n
SU
l        M     [        R                  " 5       n[        R                  " 5       n	XS	4XS	4X#S	4XS
44 H&  u  pnXl        Xl        U R                  X:H  U5        M(     [        R                  " 5       /n[        R                  " 5       [        R                  " 5       /n[        R                  " 5       [        R                  " 5       /n[        R                  " 5       [        R                  " 5       [        R                  " 5       /n[        R                  " 5       [        R                  " 5       [        R                  " 5       /nXXS
4XXS	4XXS	4XXS
4XUUS
4XXS	4XUUS	44 H*  u  pnnnUUl	        UUl	        U R                  X:H  U5        M,     g )NzA#GzA-))r'   r'   Tr'   rs   Fr'   r%   Fr'   ru   F))r'   r'   Fr   r   r   r#   ))r&   r&   T)   r&   F)r%   r&   Fr&   FT)r
   r,   assertNotEqualr   r0   rN   rR   r   Tier   AccentStrongAccentTenuto)r   n1n2n3n4xyr   t1t2rm   r_   r`   a1a2a3a4rW   cds                       r   testNoteEqualityTest.testNoteEquality   s   YYt_YYs^YYt_YYt_B#B# 
KA%  ! RXu-
<KA%  RXu-	< GKA%HHOHHORXu- H WWYWWYu-~>KA%FFRXu- ? "!A!AO "WWYWWYUObe_UObd^=KA%EEQVU+	= ""$%""$m&@&@&BC((*M,@,@,BC((*M,@,@,B""$&""$m&:&:&<((*, $&24"8')ru&=PU?V#%24"822r4:P#%25"9BBE;R"$A!Q  AOAOQVU+"$r   c                   SSS/ SQ4SSS/ SQ4SSS/ S	Q4S
SS/ SQ4SSS/ SQ4SSS/ SQ4SSS/ SQ4/nU H  u  p#pE[         R                  " 5       n[        R                  " U5      Ul        [
        R                  " 5       nXGl        UR                  Xs5        U R                  UR                   Vs/ s H  owR                  PM     snU5        M     g s  snf )Nz4/4rz   rs   )r#         ?ry   r   rs   r   ry   r   rr   rt   )r#   ry   rs   ry   rs   ry   r{   )r#   ry   ry   rs   ry   ry   z12/32   r   )r#   r   r   ry   r   r   rs   r   r   ry   r   r   z5/8rG   ry   )
r#   ry   rs   ry   rs   ry   rs   ry   rs   ry      )r#         ?r   r   ry   r   r   r   rs   r   r   r   ry   r   r   r       ) r#   r   r   r   r   r   r   r   ry   r   r   r   r   r   r   r   rs   r   r   r   r   r   r   r   ry   r   r   r   r   r   r   r   )r   r|   r	   r}   r~   r
   r,   r0   r   r   rg   beatStrength)r   r   r   r   durr   r   rm   s           r   testMetricalAccentTest.testMetricalAccent  s    AsNOAs=>As>?b% "I J BUV B X YB  ] ^
& *.%E3 A#11%8AO		A!ONN1%aooFonnoFN *. Gs   1C
c                   [         R                  " 5       n[        R                  " 5       Ul        SUR                  l        [         R                  " 5       n[        R                  " 5       Ul        SUR                  l        [         R                  " 5       n[        R                  " 5       Ul        SUR                  l        [
        R                  " 5       nUR                  XU/5        g )Nstartcontinuestop)r
   r,   r   r   typer   Streamrj   )r   r   r   r   r   s        r   testTieContinueTest.testTieContinue   s    YY[YY[ YY[MMO	""r   c                   [         R                  " 5       n[        R                  " 5       n[        R                  " 5       nXl         U R	                  UR                   U5        U R	                  UR                   R
                  U5        U R                  UR                   U5        U R                  UR                   5        g )N)r   Volumer
   r,   r   clientassertIsNotassertIsNotNone)r   v1r   r   s       r   testVolumeATest.testVolumeA4  s~    ]]_YY[YY[	B'))2. 	B'RYY'r   c                   [         R                  " 5       nSUR                  l        U R	                  UR                  R                  S5        U R	                  UR                  R
                  U5        [        R                  " U5      nU R	                  UR                  R                  S5        U R	                  UR                  R
                  U5        g )Nd   )r
   r,   r   velocityr   r   r]   r^   )r   r   n1Copys      r   testVolumeBTest.testVolumeBB  s    YY[ 		++S1))2.r"//5--v6r    N)__name__
__module____qualname____firstlineno__r   rC   rX   ra   ro   r   r   r   r   r   r   r   __static_attributes__r   r   r   r   r      sE    W81 ))JDX5$K,ZO:((
7r   r   __main__)
__future__r   r]   unittestmusic21r   r   music21.durationr   r   music21.lily.translater   r	   r
   r   r   r   TestCaser   r   mainTestr   r   r   <module>r      sa    "   !  *  4     {78 {7|	 zT r   