
    3jN/                        d dl mZ d dlZd dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ  G d dej"                        Zedk(  rd dlZ ej(                  e       yy)    )annotationsN)articulations)corpus)DurationTuple)expressions)LilypondConverter)meter)note)stream)tie)volumec                  T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)Testc                .   t        j                         }| j                  t        |      d       d|_        | j                  t        |      d       d|_        | j                  t        |      d       d |_        | j                  t        |      d       y )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     C/DATA/.local/lib/python3.12/site-packages/music21/test/test_note.pytestLyricReprzTest.testLyricRepr   sv    ZZ\b#BCb#LMb#_`b#UV    c                h   t        j                         }|j                  j                          t	        ddd      }t	        ddd      }|j                  j                  |       |j                  j                  |       | j                  |j                  j                  d       | j                  |j                  j                  d      d       | j                  |j                  j                  d      d	       | j                  |j                  j                  d
      d	       |j                  j                  d       d}t               }|j                  |       t        |j                        j                  dd      j                         }| j                  ||       d}|j!                         D ]{  }|j#                  d      |   }	t               }|j                  |       t        |j                        j                  dd      j                         }| j                  |	|       |d	z  }} y )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   testComplexz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;6*..0H~~d+A.H$&D))(3&..sB7==?FXv.FA 1r   c                4   t        j                         }| j                  |j                         t        j                         }d|j
                  _        | j                  |j
                  j                  j                  d       | j                  |j
                  j                  d       t        j                         }d|_        d|_
        | j                  |j
                  j                  d       | j                  |j
                  j                  d       y )NzB-flat
   A   g     @	   )r
   Rest
assertTrueisRestr*   pitchnamer   
accidental
pitchClassoctaveassertAlmostEqual	frequency)r   note2note3a5s       r   testNotezTest.testNote8   s    		%		 	//44f=//4YY[	rxx1159,,a0r   c                    t        j                         }d|_        d|_        t	        j
                  |      }| j                  |j                  |j                         y )N      @D)r
   r*   r.   rL   copydeepcopyr   )r   abs      r   testCopyNotezTest.testCopyNoteH   sA    IIKMM!(r   c                    t        j                  d      }g }|j                         j                  D ]?  }|j                  D ].  }t        |t        j                        s|j                  |       0 A | j                  t        |      d       y )Nzbach/bwv5.7   )
r   parseflattennotesAndRestsr   
isinstanceFermataappendr   len)r   r[   foundnobjs        r   testMusicXMLFermatazTest.testMusicXMLFermataO   sk    LL'**A}}c;#6#67LL% % + 	UR(r   c                ,   dddg ddgdz  gdddg ddgdz  gd	ddg dd
gdz  gdddg ddgdz  gdddg ddgdz  gdddg ddgdz  gdddg ddgdz  gdddg ddgdz  gdddg dg dgg	}|D ]N  \  }}}}}t        j                         }||_        t        j                         }t        j                  |      |_        |j                  ||       | j                  t        |      |dz          t        |      D 	cg c]  }	|j                  |	   j                   }
}	t        t        |            D ]  }	| j                  |
|	   ||	   d        t        |      D 	cg c]%  }	|j                  |	   j                  j                  ' }
}	t        t        |            D ]  }	| j                  |
|	   ||	   d        Q |D ]  \  }}}}}t        j                          }t        j                         }||_        t        j                         }t        j                  |      |_        |j#                  |       t        j                         }|j                  ||       | j                  t        |      |       | j                  t        |j                        |       |j#                  |       t        |      D 	cg c]  }	|j                  |	   j                   }
}	t        t        |            D ]  }	| j                  |
|	   ||	   d        t        |      D 	cg c]%  }	|j                  |	   j                  j                  ' }
}	t        t        |            D ]  }	| j                  |
|	   ||	   d         y c c}	w c c}	w c c}	w c c}	w )N3/4      ?   )r!         ?       @      @      @rW   r!         ?   )r!   g      ?ro   g      ?rp   g      @rq   g      @z3/2rp   6/8)r!   g|a2U?g_?rp   g0@gRTU@ro   z9/8z12/8z6/16g      ?z5/4r%   rF   )r!   rp   rr   r   r"   z2/8+3/8+2/8)r!   ro   rp   g4F먪@g/iQU@rr   )r!   r!   ro   ro   ro   r!   r$   )r
   r*   r.   r   Measurer	   TimeSignaturetimeSignaturerepeatAppendr   rf   rangerb   beatrP   beatDurationPartre   )r   datatsStrnQLnCount	matchBeatmatchBeatDurrh   mr>   postpm1m2s                 r   testNoteBeatPropertyzTest.testNoteBeatPropertyX   s   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 <@7E3	<		A!AO A#11%8AONN1f%SVVaZ0 6;6]C]AOOA&++]DC3y>*&&tAw	!a@ + LQQW=Y=aAOOA&33AA=DY3y>*&&tAwQC +# <@* <@7E3	<A		A!AO !B$2259BHHRL !BOOAv&SWf-S!1!12F;HHRL 7<FmDmB$$Q',,mDD3y>*&&tAw	!a@ + MRRXMZMqB$$Q'44BBMDZ3y>*&&tAwQC +1 <@ D
 Z2 E [s   ? N *N? N *Nc                p   dg dgdg dgg}|D ]  \  }}t        j                  |      }g }|j                  d   j                         j                  D ].  }|j
                  |_        |j                  |j                         0 t        t        |            D ]  }| j                  ||   ||            y )Nzbach/bwv255)r   r!   rq   rr   r   r&   r!   ro   zbach/bwv153.9)	r!   rp   rr   r!   rp   rr   r!   rr   r!   r#   )r   r`   partsra   rb   beatStrlyricre   r{   rz   rf   r   )r   r~   workmatchsrg   rh   r>   s           r   testNoteBeatPropertyCorpuszTest.testNoteBeatPropertyCorpus   s     HI "OP  KD%T"AEWWQZ'')77))QVV$ 8 3u:&  q584 '  r   c                   t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }| j                  ||       | j                  ||       | j                  ||       dD ])  \  }}}||_        ||_        | j                  ||k(  |       + dD ])  \  }}}||_        ||_        | j                  ||k(  |       + d|_        d|_        dD ]=  \  }}}||j
                  _        ||j
                  _        | j                  ||k(  |       ? d|j
                  _        d|j
                  _        t        j                         }t        j                         }	|d d	f||	d
ffD ])  \  }}}||_        ||_        | j                  ||k(  |       + ||||fD ]	  }
d|
_         t        j                         }t        j                         }	||d	f||d	f||d	f||d
ffD ])  \  }}}||_        |	|_        | j                  ||k(  |       + t        j                         g}t        j                         t        j                         g}t        j                         t        j                         g}t        j                         t        j                         t        j                         g}t        j                         t        j                         t        j                         g}||||d
f||||d	f||||d	f||||d
f||||d
f||||d	f||||d	ffD ]+  \  }}}}}||_	        ||_	        | j                  ||k(  |       - y )NzA#GzA-))r%   r%   Tr%   rm   Fr%   r#   Fr%   ro   F))r%   r%   Fr   r   r   r!   ))r$   r$   T)   r$   F)r#   r$   Fr$   FT)r
   r*   assertNotEqualr   r.   rK   rO   r   Tier   AccentStrongAccentTenuto)r   n1n2n3n4xyr   t1t2rh   r[   r\   a1a2a3a4rT   cds                       r   testNoteEqualityzTest.testNoteEquality   sW   YYt_YYs^YYt_YYt_B#B#R 
KAq%  !B BR2Xu-
<KAq% B BR2Xu-	< GKAq%BHHOBHHOR2Xu- H WWYWWYu-B~>KAq%BFBFR2Xu- ? b"b!A!AO "WWYWWYUOb"e_UOb"d^=KAq%AEAEQ!VU+	= ""$%""$m&@&@&BC((*M,@,@,BC((*M,@,@,B""$&""$m&:&:&<((*, $&r2r4"8')2r2u&=BBPU?V#%r2r4"82r2r4:P#%r2r5"9BBE;R"$Aq!Q  AOAOQ!VU+"$r   c                   dddg dfdddg dfdddg d	fd
ddg dfdddg dfdddg dfdddg dfg}|D ]  \  }}}}t        j                         }t        j                  |      |_        t        j                         }||_        |j                  ||       | j                  |j                  D cg c]  }|j                   c}|        y c c}w )Nz4/4rt   rm   )r!         ?rs   r   rm   r   rs   r   rl   rn   )r!   rs   rm   rs   rm   rs   ru   )r!   rs   rs   rm   rs   rs   z12/32   r   )r!   r   r   rs   r   r   rm   r   r   rs   r   r   z5/8rD   rs   )
r!   rs   rm   rs   rm   rs   rm   rs   rm   rs      )r!         ?r   r   rs   r   r   r   rm   r   r   r   rs   r   r   r       ) r!   r   r   r   r   r   r   r   rs   r   r   r   r   r   r   r   rm   r   r   r   r   r   r   r   rs   r   r   r   r   r   r   r   )r   rv   r	   rw   rx   r
   r*   r.   ry   r   rb   beatStrength)r   r~   r   r   durr   r   rh   s           r   testMetricalAccentzTest.testMetricalAccent  s    AsNOAs=>As>?b% "I J BUV B X YB  ] ^
& *.%E63 A#11%8AO		A!AONN1f%aooFoannoFN *. Gs   2C
c                   t        j                         }t        j                         |_        d|j                  _        t        j                         }t        j                         |_        d|j                  _        t        j                         }t        j                         |_        d|j                  _        t        j                         }|j                  |||g       y )Nstartcontinuestop)r
   r*   r   r   typer   Streamre   )r   r   r   r   r   s        r   testTieContinuezTest.testTieContinue   s    YY[YY[ YY[MMO	"b"r   c                |   t        j                         }t        j                         }t        j                         }||_         | j	                  |j                   |       | j	                  |j                   j
                  |       | j                  |j                   |       | j                  |j                          y )N)r   Volumer
   r*   r   clientassertIsNotassertIsNotNone)r   v1r   r   s       r   testVolumeAzTest.testVolumeA4  s    ]]_YY[YY[	B'))2. 	B'RYY'r   c                   t        j                         }d|j                  _        | j	                  |j                  j                  d       | j	                  |j                  j
                  |       t        j                  |      }| j	                  |j                  j                  d       | j	                  |j                  j
                  |       y )Nd   )r
   r*   r   velocityr   r   rY   rZ   )r   r   n1Copys      r   testVolumeBzTest.testVolumeBB  s    YY[ 		++S1))2.r"//5--v6r   N)__name__
__module____qualname__r   rA   rU   r]   rj   r   r   r   r   r   r   r    r   r   r   r      sE    W81 ))JDX5$K,ZO:((
7r   r   __main__)
__future__r   rY   unittestmusic21r   r   music21.durationr   r   music21.lily.translater   r	   r
   r   r   r   TestCaser   r   mainTestr   r   r   <module>r      sc    "   !  *  4     {78 {7|	 zGT r   