§
    „ØjØm  ã                  ó¬   — 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m	Z	m
Z
  G d„ dej        ¦  «        Zedk    rd dlZ ej        e¦  «         dS dS )	é    )ÚannotationsN)Úcommon)Úscale)ÚTerminusÚ	DirectionÚIntervalNetworkc                  ó\   — 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d„ ZdS )ÚTestc                ó€   — d}|D ]}|t          |¦  «        dz   z  }Œ|r|dt          |¦  «        dz
  …         }|dz  }|S )Nú[ú, r   é   ú])ÚstrÚlen)ÚselfÚlistInÚoutÚps       ú—/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/music21/scale/test_intervalNetwork.pyÚpitchOutzTest.pitchOut   sZ   € ØˆØð 	!ð 	!ˆAØ•3�q‘6”6˜D‘=Ñ ˆCˆCØð 	&Ø�a�˜C™œ 1™�nÔ%ˆCØˆs‰
ˆØˆ
ó    c                óŠ   — d}||                       |d         ¦  «        z  }|dz  }|t          |d         ¦  «        z  }|dz  }|S )Nú(r   r   é   ú))r   r   )r   Ú
pitchTupler   s      r   ÚrealizePitchOutzTest.realizePitchOut    sN   € ØˆØˆt�}Š}˜Z¨œ]Ñ+Ô+Ñ+ˆØˆt‰ˆØ�s�:˜a”=Ñ!Ô!Ñ!ˆØˆs‰
ˆØˆ
r   c                ó  — g d¢}t          |¦  «        }|                     dd¦  «        }|                      |                      |¦  «        d¦  «         |                     dddd¦  «        }|                      |                      |¦  «        d¦  «         |                      |                     d	dd
¦  «        d¦  «         |                      |                     ddd¦  «        d¦  «         |                      |                     ddd¦  «        d¦  «         g d¢}t          |¦  «        }|                     dd¦  «        }|                      |                      |¦  «        d¦  «         |                     dddd¦  «        }|                      |                      |¦  «        d¦  «         |                      |                     ddd¦  «        d¦  «         g d¢}t          |¦  «        }|                     ddd¦  «        \  }}|                      |                      |¦  «        d¦  «         |                     ddg d¢¦  «        \  }}|                      |                      |¦  «        d¦  «         |                      |                      |¦  «        d¦  «         |                     g d¢¦  «        }|                      t          |¦  «        d¦  «         |                     g d¢¦  «        }|                      t          |¦  «        d¦  «         d S )N©ÚM2r!   Úm2r!   r!   r!   r"   úc#é   z#[A3, B3, C#4, D4, E4, F#4, G#4, A4]é   Úc8Úc9ú[C#8, D8, E8, F#8, G8, A8, B8]ÚbÚc2r   Úd2é   )ÚP5r-   r-   Úc4z[C4, G4, D5, A5]Úc11z=[C4, G4, D5, A5, E6, B6, F#7, C#8, G#8, D#9, A#9, E#10, B#10]ze#10ze-Úfz[F])úb-zd-r0   z[B-, F]z[D-])ÚgÚar)   Údúf#zx[(5, <music21.pitch.Pitch G>), (5, <music21.pitch.Pitch D>), (4, <music21.pitch.Pitch A>), (4, <music21.pitch.Pitch C>)])r2   r3   r)   r#   r4   r5   zx[(6, <music21.pitch.Pitch D>), (5, <music21.pitch.Pitch A>), (5, <music21.pitch.Pitch G>), (4, <music21.pitch.Pitch E>)])r   ÚrealizePitchÚassertEqualr   ÚgetRelativeNodeDegreeÚmatchÚfindr   )r   ÚedgeListÚnetr9   ÚmatchedÚunused_noMatchÚnoMatchÚresultss           r   ÚtestScaleModelzTest.testScaleModel(   s   € à=Ð=Ð=ˆÝ˜hÑ'Ô'ˆð × Ò   qÑ)Ô)ˆØ×Ò˜Ÿš uÑ-Ô-Ð/TÑUÔUÐUð × Ò   q¨$°Ñ5Ô5ˆØ×Ò˜Ÿš uÑ-Ô-Ð/OÑPÔPÐPð 	×Ò˜×2Ò2°3¸¸4Ñ@Ô@À!ÑDÔDÐDð 	×Ò˜×2Ò2°4¸¸DÑAÔAÀ1ÑEÔEÐEà×Ò˜×2Ò2°4¸¸DÑAÔAÀ1ÑEÔEÐEð &Ð%Ð%ˆÝ˜hÑ'Ô'ˆØ× Ò   qÑ)Ô)ˆØ×Ò˜Ÿš uÑ-Ô-Ð/AÑBÔBÐBØ× Ò   q¨$°Ñ6Ô6ˆØ×Ò˜Ÿš uÑ-Ô-ØXñ	Zô 	Zð 	Zð
 	×Ò˜×2Ò2°4¸¸FÑCÔCÀQÑGÔGÐGð >Ð=Ð=ˆÝ˜hÑ'Ô'ˆð
 #&§)¢)¨D°!°SÑ"9Ô"9Ñˆ�Ø×Ò˜Ÿš wÑ/Ô/°Ñ7Ô7Ð7ð Ÿ9š9 T¨1Ð.?Ð.?Ð.?Ñ@Ô@Ñˆ�Ø×Ò˜Ÿš wÑ/Ô/°Ñ;Ô;Ð;Ø×Ò˜Ÿš wÑ/Ô/°Ñ8Ô8Ð8ð —(’(Ð5Ð5Ð5Ñ6Ô6ˆØ×Ò�˜W™œðYñ	Zô 	Zð 	Zð
 —(’(Ð;Ð;Ð;Ñ<Ô<ˆØ×Ò�˜W™œðYñ	Zô 	Zð 	Zð 	Zð 	Zr   c                ó²  — g d¢}t          |¦  «        }|                     dd¦  «        }|                      |                      |¦  «        d¦  «         |                     dd¦  «        }|                      |                      |¦  «        d¦  «         |                     dddd	¦  «        }|                      |                      |¦  «        d
¦  «         |                     ddddg¦  «        \  }}|                      |                      |¦  «        d¦  «         |                     g d¢¦  «        }|                      t          |¦  «        d¦  «         |                     ddg¦  «        }|                      t          |¦  «        d¦  «         g d¢}t          |¦  «        }|                     dd¦  «        }|                      |                      |¦  «        d¦  «         |                     dd¦  «        }|                      |                      |¦  «        d¦  «         |                     g d¢¦  «        }|                      t          |¦  «        d¦  «         d S )N)ÚM3Úm3ÚP4úg#r   z[G#4, B#4, D#5, G#5]r$   z[C#4, E#4, G#4, C#5]r   r*   Úc5z'[E2, G#2, B2, E3, G#3, B3, E4, G#4, B4]Úe2Úb6z[E2, B6])ÚcÚer2   zy[(3, <music21.pitch.Pitch C>), (1, <music21.pitch.Pitch A>), (1, <music21.pitch.Pitch G#>), (1, <music21.pitch.Pitch G>)]rK   zz[(2, <music21.pitch.Pitch E>), (1, <music21.pitch.Pitch A>), (1, <music21.pitch.Pitch G#>), (1, <music21.pitch.Pitch D->)])rC   rD   rC   rD   Úm7r.   z[C4, E4, G4, B4, D5, C6]é   z[B-2, D3, F3, A3, C4, B-4])rK   rF   r)   úd#zy[(3, <music21.pitch.Pitch E>), (2, <music21.pitch.Pitch C>), (1, <music21.pitch.Pitch B>), (1, <music21.pitch.Pitch G#>)])r   r6   r7   r   r9   r:   r   )r   r;   r<   r9   r=   r>   r@   s          r   ÚtestHarmonyModelzTest.testHarmonyModelk   sk  € ð
 &Ð%Ð%ˆÝ˜hÑ'Ô'ˆð × Ò   qÑ)Ô)ˆØ×Ò˜Ÿš uÑ-Ô-Ð/EÑFÔFÐFð × Ò   qÑ)Ô)ˆØ×Ò˜Ÿš uÑ-Ô-Ð/EÑFÔFÐFð × Ò   q¨$°Ñ5Ô5ˆØ×Ò˜Ÿš uÑ-Ô-Ð/XÑYÔYÐYð #&§)¢)¨D°!°d¸D°\Ñ"BÔ"BÑˆ�Ø×Ò˜Ÿš wÑ/Ô/°Ñ<Ô<Ð<ð —(’(˜?˜?˜?Ñ+Ô+ˆØ×Ò�˜W™œðZñ	[ô 	[ð 	[ð
 —(’(˜C ˜;Ñ'Ô'ˆØ×Ò�˜W™œð[ñ	\ô 	\ð 	\ð 2Ð1Ð1ˆÝ˜hÑ'Ô'ˆØ× Ò   qÑ)Ô)ˆØ×Ò˜Ÿš uÑ-Ô-Ð/IÑJÔJÐJð × Ò   qÑ)Ô)ˆØ×Ò˜Ÿš uÑ-Ô-Ð/KÑLÔLÐLð —(’(Ð1Ð1Ð1Ñ2Ô2ˆØ×Ò�˜W™œðZñ	[ô 	[ð 	[ð 	[ð 	[r   c                ó¾  — g d¢}t          |¦  «        }g d¢}t          |¦  «        }|                     dd¦  «        }|                      |                      |¦  «        d¦  «         |                     |                     dd¦  «        ¦  «        }|                      t          |¦  «        d¦  «         |                      |                     ddd¦  «        d	¦  «         d S )
Nr    )rD   rD   rC   r!   Úb4r   z[B4, D5, F5, A5, B5]r#   zx[(5, <music21.pitch.Pitch D>), (4, <music21.pitch.Pitch B>), (4, <music21.pitch.Pitch A>), (4, <music21.pitch.Pitch E>)]r4   r%   )r   r6   r7   r   r:   r   r8   )r   r;   ÚnetScaleÚ
netHarmonyr9   r@   s         r   ÚtestScaleAndHarmonyzTest.testScaleAndHarmony¤   sè   € à=Ð=Ð=ˆÝ" 8Ñ,Ô,ˆð ,Ð+Ð+ˆÝ$ XÑ.Ô.ˆ
Ø×'Ò'¨¨aÑ0Ô0ˆØ×Ò˜Ÿš uÑ-Ô-Ð/EÑFÔFÐFð —-’- 
× 7Ò 7¸¸aÑ @Ô @ÑAÔAˆà×Ò�˜W™œðYñ	Zô 	Zð 	Zð 	×Ò˜×7Ò7¸¸QÀÑEÔEÀqÑIÔIÐIÐIÐIr   c           
     ó  — g d¢}t          ¦   «         }|                     |¦  «         |                      t          t	          |j                             ¦   «         ¦  «        ¦  «        g d¢¦  «         |                      t          d„ |j                             ¦   «         D ¦   «         ¦  «        g d¢¦  «         |                      t          |j        d         ¦  «        d¦  «         |                      t          |j        t          j
                 ¦  «        d¦  «         |                      t          |j        d         ¦  «        d¦  «         |                      t          |j        d	         ¦  «        d
¦  «         |                      t          |j        d         ¦  «        d¦  «         |                      t          |j        d                              t          j        ¦  «        ¦  «        d¦  «         |                      t          |j        d                              t          j        ¦  «        ¦  «        d¦  «         |                      t          |j        d                              t          j        ¦  «        ¦  «        d¦  «         |                      |                     |j        t          j
                 t          j        ¦  «        |j        d         g|j        d         gf¦  «         |                      |                     |j        t          j
                 t          j        ¦  «        |j        d         g|j        d         gf¦  «         |                      |                      |                     dd¦  «        ¦  «        d¦  «         |                      |                      |                     ddd¬¦  «        ¦  «        d¦  «         |                      |                      |                     ddd¬¦  «        ¦  «        d¦  «         |                      |                      |                     dddd¬¦  «        ¦  «        d¦  «         |                      |                      |                     dddd¬¦  «        ¦  «        d¦  «         |                      |                      |                     dd¦  «        ¦  «        d ¦  «         |                      |                      |                     d!dd"d#¦  «        ¦  «        d$¦  «         |                      |                      |                     dd¦  «        ¦  «        d%¦  «         |                      |                      |                     d&d¦  «        ¦  «        d'¦  «         d S )(Nr    ©r   r   r   r$   r,   rM   é   c                ó,   — g | ]}t          |¦  «        ‘ŒS © ©r   ©Ú.0Úxs     r   ú
<listcomp>z#Test.testBasicA.<locals>.<listcomp>Â   s   € Ð BÐ BÐ B¨A¥ Q¡¤Ð BÐ BÐ Br   ©Ú0Ú1Ú2Ú3Ú4Ú5zTerminus.HIGHzTerminus.LOWr   z)<music21.scale.intervalNetwork.Node id=0>z4<music21.scale.intervalNetwork.Node id=Terminus.LOW>z[<music21.scale.intervalNetwork.Edge Direction.BI M2 [(Terminus.LOW, 0), (0, Terminus.LOW)]>r$   zE<music21.scale.intervalNetwork.Edge Direction.BI M2 [(2, 3), (3, 2)]>rW   z]<music21.scale.intervalNetwork.Edge Direction.BI m2 [(5, Terminus.HIGH), (Terminus.HIGH, 5)]>z[(5, Terminus.HIGH)]z[(Terminus.HIGH, 5)]z([(5, Terminus.HIGH), (Terminus.HIGH, 5)]rM   r.   r   z [C4, D4, E4, F4, G4, A4, B4, C5]Úc6©ÚmaxPitchz<[C4, D4, E4, F4, G4, A4, B4, C5, D5, E5, F5, G5, A5, B5, C6]Úc3©ÚminPitchz<[C3, D3, E3, F3, G3, A3, B3, C4, D4, E4, F4, G4, A4, B4, C5])rk   rh   zX[C3, D3, E3, F3, G3, A3, B3, C4, D4, E4, F4, G4, A4, B4, C5, D5, E5, F5, G5, A5, B5, C6]Úf4z[[C3, D3, E3, F3, G3, A3, B-3, C4, D4, E4, F4, G4, A4, B-4, C5, D5, E5, F5, G5, A5, B-5, C6]zC#r%   z"[D3, E3, F#3, G3, A3, B3, C#4, D4]zC#4r&   r'   r(   zS([C4, D4, E4, F4, G4, A4, B4, C5], [Terminus.LOW, 0, 1, 2, 3, 4, 5, Terminus.HIGH])úc#4zU([D3, E3, F#3, G3, A3, B3, C#4, D4], [Terminus.LOW, 0, 1, 2, 3, 4, 5, Terminus.HIGH]))r   ÚfillBiDirectedEdgesr7   ÚsortedÚlistÚedgesÚkeysÚnodesÚreprr   ÚLOWÚgetConnectionsr   Ú	ASCENDINGÚ
DESCENDINGÚBIÚgetNextr   r6   r   Úrealize)r   r;   r<   s      r   Ú
testBasicAzTest.testBasicA¹   sT  € Ø=Ð=Ð=ˆÝÑÔˆØ×Ò Ñ)Ô)Ð)à×Ò�¥ S¤Y§^¢^Ñ%5Ô%5Ñ 6Ô 6Ñ7Ô7Ø.Ð.Ð.ñ	0ô 	0ð 	0ð 	×Ò�Ð BÐ B°´·²Ñ1AÔ1AÐ BÑ BÔ BÑCÔCØXÐXÐXñ	Zô 	Zð 	Zð 	×Ò�˜cœi¨œlÑ+Ô+Ð-XÑYÔYÐYØ×Ò�˜cœi­¬Ô5Ñ6Ô6ØOñ	Qô 	Qð 	Qð 	×ÒÝ�”˜1”ÑÔð8ñ	
ô 	
ð 	
ð 	×ÒÝ�”˜1”ÑÔØSñ	Uô 	Uð 	Uð 	×ÒÝ�”˜1”ÑÔð:ñ	
ô 	
ð 	
ð 	×ÒÝ�”˜1”×,Ò,­YÔ-@ÑAÔAÑBÔBØ"ñ	
ô 	
ð 	
ð 	×ÒÝ�”˜1”×,Ò,­YÔ-AÑBÔBÑCÔCØ"ñ	
ô 	
ð 	
ð 	×ÒÝ�”˜1”×,Ò,­Y¬\Ñ:Ô:Ñ;Ô;Ø6ñ	
ô 	
ð 	
ð 	×ÒØ�KŠK˜œ	¥(¤,Ô/µÔ1DÑEÔEØŒi˜Œlˆ^˜cœi¨œl˜^Ð,ñ	
ô 	
ð 	
ð
 	×ÒØ�KŠK˜œ	¥(¤,Ô/µÔ1EÑFÔFØŒi˜Œlˆ^˜cœi¨œl˜^Ð,ñ	
ô 	
ð 	
ð
 	×Ò˜Ÿš s×'7Ò'7¸¸aÑ'@Ô'@ÑAÔAØ;ñ	=ô 	=ð 	=ð 	×Ò˜Ÿš s×'7Ò'7¸¸aÈ$Ð'7Ñ'OÔ'OÑPÔPØWñ	Yô 	Yð 	Yð 	×Ò˜Ÿš s×'7Ò'7¸¸aÈ$Ð'7Ñ'OÔ'OÑPÔPØWñ	Yô 	Yð 	Yð 	×Ò˜Ÿš s×'7Ò'7¸¸aÈ$ÐY]Ð'7Ñ'^Ô'^Ñ_Ô_ðMñ	Nô 	Nð 	Nð 	×Ò˜Ÿš s×'7Ò'7¸¸aÈ$ÐY]Ð'7Ñ'^Ô'^Ñ_Ô_ðOñ	Pô 	Pð 	Pð 	×Ò˜Ÿš s×'7Ò'7¸¸aÑ'@Ô'@ÑAÔAØ=ñ	?ô 	?ð 	?ð 	×Ò˜Ÿš s×'7Ò'7¸¸qÀ$ÈÑ'MÔ'MÑNÔNØ9ñ	;ô 	;ð 	;ð 	×Ò˜×-Ò-¨c¯kªk¸$ÀÑ.BÔ.BÑCÔCðNñ	Oô 	Oð 	Oð 	×Ò˜×-Ò-¨c¯kªk¸%ÀÑ.CÔ.CÑDÔDðNñ	Oô 	Oð 	Oð 	Oð 	Or   c           
     ó`  — g d¢}g d¢}t          ¦   «         }|                     ||¦  «         |                      t          |                     |j        t          j                 t          j	        ¦  «        ¦  «        d¦  «         |                      t          |                     |j        t          j                 t          j
        ¦  «        ¦  «        d¦  «         |                      t          |                     |j        t          j                 t          j	        ¦  «        ¦  «        d¦  «         |                      t          |                     |j        t          j                 t          j
        ¦  «        ¦  «        d¦  «         |                      |                      |                     dddd¦  «        ¦  «        d	¦  «         |                      |                      |                     dddd¦  «        ¦  «        d
¦  «         |                      |                      |                     dddd¦  «        ¦  «        d¦  «         |                      t!          |                     d¦  «        ¦  «        d¦  «         |                      t!          |                     d¦  «        ¦  «        d¦  «         d S )N)r!   r"   r!   r!   r!   r!   r"   )r!   r"   r!   r!   r"   r!   r!   z€([<music21.scale.intervalNetwork.Edge Direction.ASCENDING M2 [(Terminus.LOW, 0)]>], [<music21.scale.intervalNetwork.Node id=0>])z„([<music21.scale.intervalNetwork.Edge Direction.DESCENDING M2 [(Terminus.HIGH, 11)]>], [<music21.scale.intervalNetwork.Node id=11>])Úa4r   Úa3Úa5z“([A3, B3, C4, D4, E4, F4, G4, A4, B4, C5, D5, E5, F#5, G#5, A5], [Terminus.LOW, 6, 7, 8, 9, 10, 11, Terminus.LOW, 0, 1, 2, 3, 4, 5, Terminus.HIGH])z [A4, B4, C5, D5, E5, F5, G5, A5]z"[A4, B4, C5, D5, E5, F#5, G#5, A5]r$   zV[<music21.scale.intervalNetwork.Node id=1>, <music21.scale.intervalNetwork.Node id=7>]r%   zW[<music21.scale.intervalNetwork.Node id=5>, <music21.scale.intervalNetwork.Node id=11>])r   ÚfillDirectedEdgesr7   rt   rz   rs   r   ru   r   rw   rx   ÚHIGHr   r{   r   r6   r   ÚnodeNameToNodes)r   ÚascendingEdgeListÚdescendingEdgeListr<   s       r   ÚtestDirectedAzTest.testDirectedA  s�  € ð GÐFÐFÐàGÐGÐGÐåÑÔˆØ×ÒÐ/Ð1CÑDÔDÐDð 	×ÒÝ�—’˜SœY¥x¤|Ô4µiÔ6IÑJÔJÑKÔKðTñ	Uô 	Uð 	Uð
 	×ÒÝ�—’˜SœY¥x¤|Ô4µiÔ6JÑKÔKÑLÔLðWñ	Xô 	Xð 	Xð 	×ÒÝ�—’˜SœY¥x¤}Ô5µyÔ7JÑKÔKÑLÔLðTñ	Uô 	Uð 	Uð
 	×ÒÝ�—’˜SœY¥x¤|Ô4µiÔ6JÑKÔKÑLÔLðWñ	Xô 	Xð 	Xð 	×Ò˜×-Ò-¨c¯kªk¸$ÀÀ4ÈÑ.NÔ.NÑOÔOðMñ	Nô 	Nð 	Nð 	×Ò˜Ÿš s×'7Ò'7¸¸aÀÀtÑ'LÔ'LÑMÔMØ;ñ	=ô 	=ð 	=ð 	×Ò˜Ÿš s×'7Ò'7¸¸aÀÀtÑ'LÔ'LÑMÔMØ=ñ	?ô 	?ð 	?ð 	×ÒÝ�×#Ò# AÑ&Ô&Ñ'Ô'ð;ñ	<ô 	<ð 	<ð 	×ÒÝ�×#Ò# AÑ&Ô&Ñ'Ô'ð<ñ	=ô 	=ð 	=ð 	=ð 	=r   c                ó  — t          j        d¦  «        }|                      t          d„ |j        j        j                             ¦   «         D ¦   «         ¦  «        g d¢¦  «         |                      t          |j        j        j                             ¦   «         ¦  «        g d¢¦  «         t          j
        ddœdddœt          j        d	dœf}d
t          j
        dt          j        gfdœddt          j        t          j        gfdœf}t          ¦   «         }|                     ||¦  «         d}t           j        dk     rd}|                      t'          j        t+          |j        ¦  «        |¦  «        t+          |j        ¦  «        ¦  «         |                      |j        d	¦  «         |                      |j        d¦  «         |                      |                      |                     dd¦  «        ¦  «        d¦  «         d S )Nr2   c                ó,   — g | ]}t          |¦  «        ‘ŒS rY   rZ   r[   s     r   r^   z+Test.testScaleArbitrary.<locals>.<listcomp>Q  s   € Ð PÐ PÐ P¨A¥ Q¡¤Ð PÐ PÐ Pr   r_   rV   r   )ÚidÚdegreer   r   r$   r"   )ÚintervalÚconnectionsrC   a5  
            OrderedDict({0: <music21.scale.intervalNetwork.Edge Direction.BI m2
                                [(Terminus.LOW, 0), (0, Terminus.LOW)]>,
                         1: <music21.scale.intervalNetwork.Edge Direction.BI M3
                                [(0, Terminus.HIGH), (Terminus.HIGH, 0)]>}))r$   é   aI  
                OrderedDict([(0, <music21.scale.intervalNetwork.Edge Direction.BI m2
                                    [(Terminus.LOW, 0), (0, Terminus.LOW)]>),
                             (1, <music21.scale.intervalNetwork.Edge Direction.BI M3
                                    [(0, Terminus.HIGH), (Terminus.HIGH, 0)]>)])r.   z[C4, D-4, F4])r   Ú
MajorScaler7   ro   ÚabstractÚ_netrs   rr   rq   r   ru   r‚   r   ry   r   ÚfillArbitraryÚsysÚversion_infoÚ
assertTruer   ÚwhitespaceEqualr   Ú	degreeMaxÚdegreeMaxUniquer   r6   )r   Úsc1rs   rq   r<   r9   s         r   ÚtestScaleArbitraryzTest.testScaleArbitraryO  s  € ÝÔ˜sÑ#Ô#ˆØ×Ò�Ð PÐ P°´Ô1BÔ1H×1MÒ1MÑ1OÔ1OÐ PÑ PÔ PÑQÔQØXÐXÐXñ	Zô 	Zð 	Zà×Ò� ¤Ô 1Ô 7× <Ò <Ñ >Ô >Ñ?Ô?Ø.Ð.Ð.ñ	0ô 	0ð 	0õ !œ°Ð2Ð2Ø QÐ'Ð'Ý œ°Ð3Ð3ðˆð
 #å”| Q­	¬Ð5ð"ðð ð #à�(œ-­¬Ð6ð"ðð ð	ˆõ ÑÔˆØ×Ò˜% Ñ'Ô'Ð'ðOˆõ
 Ô˜gÒ%Ð%ðTˆEð 	�Š�Ô.­s°3´9©~¬~¸uÑEÔEÝ˜CœI™œñ	(ô 	(ð 	(ð 	×Ò˜œ¨Ñ*Ô*Ð*Ø×Ò˜Ô,¨aÑ0Ô0Ð0à×Ò˜Ÿš s×'7Ò'7¸¸aÑ'@Ô'@ÑAÔAÀ?ÑSÔSÐSÐSÐSr   c                óº  — g d¢}t          ¦   «         }|                     |¦  «         |                     ddd¦  «        \  }}|                      |                      |¦  «        d¦  «         |                      t          |¦  «        d¦  «         |                      |                      |                     dt          j        d¬¦  «        ¦  «        d¦  «         |                      t          |                     ddd	¬
¦  «        ¦  «        d¦  «         |  	                    t          j        |                      |                     dddd	¬
¦  «        ¦  «        d¦  «        ¦  «         |                      |                      |                     dddd	¬
¦  «        ¦  «        d¦  «         |                      |                      |                     dd¦  «        ¦  «        d¦  «         |                      |                      |                     dd¦  «        ¦  «        d¦  «         |                      |                      |                     ddd¬¦  «        ¦  «        d¦  «         d S )Nr    ri   r   r*   z[C2, D2, E2, F2, G2, A2, B2]z [Terminus.LOW, 0, 1, 2, 3, 4, 5]rj   z@([C2, D2, E2, F2, G2, A2, B2], [Terminus.LOW, 0, 1, 2, 3, 4, 5])T)ÚincludeFirstz,([<music21.pitch.Pitch C3>], [Terminus.LOW])Úg3Úg0aJ  ([G0, A0, B0, C1, D1, E1, F#1,
                     G1, A1, B1, C2, D2, E2, F#2,
                     G2, A2, B2, C3, D3, E3, F#3, G3],
                    [Terminus.LOW, 0, 1, 2, 3, 4, 5,
                     Terminus.LOW, 0, 1, 2, 3, 4, 5,
                     Terminus.LOW, 0, 1, 2, 3, 4, 5,
                     Terminus.LOW])Úd6rM   Úd4z…([D4, E4, F#4, G4, A4, B4, C5, D5, E5, F#5, G5, A5, B5, C6, D6], [3, 4, 5, Terminus.LOW, 0, 1, 2, 3, 4, 5, Terminus.LOW, 0, 1, 2, 3])zS([C3, D3, E3, F3, G3, A3, B3, C4], [Terminus.LOW, 0, 1, 2, 3, 4, 5, Terminus.HIGH])zg#2r$   z=([G#2, A2, B2, C#3, D#3, E3], [1, 2, 3, 4, 5, Terminus.HIGH])Úe4rg   z~([G#2, A2, B2, C#3, D#3, E3, F#3, G#3, A3, B3, C#4, D#4, E4], [1, 2, 3, 4, 5, Terminus.HIGH, 0, 1, 2, 3, 4, 5, Terminus.HIGH]))r   rn   ÚrealizeDescendingr7   r   r   r   r   r‚   r”   r   r•   ÚrealizeAscending)r   r;   r<   Úpitchesrs   s        r   ÚtestRealizeDescendingzTest.testRealizeDescending{  s”  € Ø=Ð=Ð=ˆÝÑÔˆØ×Ò Ñ)Ô)Ð)à×.Ò.¨t°Q¸Ñ=Ô=‰ˆ�Ø×Ò˜Ÿš wÑ/Ô/Ø7ñ	9ô 	9ð 	9à×Ò�˜U™œØ;ñ	ô 	ð 	ð 	×ÒØ× Ò  ×!6Ò!6°t½X¼]ÐUYÐ!6Ñ!ZÔ!ZÑ[Ô[ØNñ	
ô 	
ð 	
ð 	×Ò�˜S×2Ò2°4¸ÈÐ2ÑNÔNÑOÔOØGñ	Iô 	Ið 	Ið 	�ŠÝÔ"Ø×$Ò$ S×%:Ò%:¸4ÀÀDÐW[Ð%:Ñ%\Ô%\Ñ]Ô]ð'ñ	ô 	ñ	
ô 	
ð 	
ð 	×Ò˜×-Ò-Ø×!Ò! $¨¨4¸dÐ!ÑCÔCñEô EðUñ	
ô 	
ð 	
ð 	×Ò˜×-Ò-¨c×.BÒ.BÀ4ÈÑ.KÔ.KÑLÔLðNñ	Oô 	Oð 	Oð 	×Ò˜×-Ò-¨c×.BÒ.BÀ5È!Ñ.LÔ.LÑMÔMØXñ	Zô 	Zð 	Zð 	×Ò˜×-Ò-¨c×.BÒ.BÀ5È!ÐVZÐ.BÑ.[Ô.[Ñ\Ô\ð^ñ	_ô 	_ð 	_ð 	_ð 	_r   c           	     ó*  — t          ¦   «         }|                     ¦   «          |                      |                      |                     d¦  «        ¦  «        d¦  «         |                      |                      |                     ddt
          j        ¬¦  «        ¦  «        d¦  «         |                      |                      |                     dt          j        t
          j        ¬¦  «        ¦  «        d¦  «         |                      | 	                    dt          j
        d¬¦  «        g g f¦  «         |                      |                      | 	                    dt          j
        d	¬¦  «        ¦  «        d
¦  «         | 	                    dt          j
        d	d	¬¦  «        }|                      |                      |¦  «        d¦  «         | 	                    dt          j
        dd¦  «        }|                      |                      |¦  «        d
¦  «         d S )NÚg4zU([G4, A4, B-4, C5, D5, E5, F#5, G5], [Terminus.LOW, 0, 1, 2, 3, 4, 6, Terminus.HIGH])r   ©Ú	directionzT([G4, A4, B-4, C5, D5, E-5, F5, G5], [Terminus.LOW, 0, 1, 2, 3, 5, 7, Terminus.LOW])zU([G3, A3, B-3, C4, D4, E-4, F4, G4], [Terminus.LOW, 0, 1, 2, 3, 5, 7, Terminus.HIGH])F)ÚfillMinMaxIfNoneTzB([G4, A4, B-4, C5, D5, E-5, F5], [Terminus.LOW, 0, 1, 2, 3, 5, 7]))r›   r©   Úg5)r   ÚfillMelodicMinorr7   r   r{   r   rx   r   r‚   r¡   ru   )r   r<   ÚdescReals      r   Ú
testBasicBzTest.testBasicB¯  s&  € ÝÑÔˆØ×ÒÑÔÐà×Ò˜×-Ò-¨c¯kªk¸$Ñ.?Ô.?Ñ@Ô@ðNñ	Oô 	Oð 	Oð 	×ÒØ× Ò  §¢¨T°1Å	Ô@T Ñ!UÔ!UÑVÔVð@ñ	Aô 	Að 	Að 	×ÒØ× Ò  §¢¨Tµ8´=ÍIÔL` Ñ!aÔ!aÑbÔbðAñ	
ô 	
ð 	
ð 	×ÒØ×!Ò! $­¬ÀuÐ!ÑMÔMØ�ˆHñ	
ô 	
ð 	
ð
 	×ÒØ× Ò  ×!6Ò!6°t½X¼\Ð\`Ð!6Ñ!aÔ!aÑbÔbØPñ	Rô 	Rð 	Rð
 ×(Ò(¨Ý)1¬Ø6:Ø:>ð )ñ @ô @ˆð 	×Ò˜×-Ò-¨hÑ7Ô7ðMñ	Nô 	Nð 	Nð ×(Ò(¨­x¬|¸TÀ4ÑHÔHˆØ×Ò˜×-Ò-¨hÑ7Ô7Ø]ñ	_ô 	_ð 	_ð 	_ð 	_r   c           
     óª  — t          ¦   «         }|                     ¦   «          |                      t          |                     ddd¦  «        ¦  «        d¦  «         |                      t          |                     ddd¦  «        ¦  «        d¦  «         |                      t          |                     ddd¦  «        ¦  «        d¦  «         |                      t          |                     dddt
          j        ¬¦  «        ¦  «        d¦  «         |                      t          |                     dddt
          j        ¬¦  «        ¦  «        d	¦  «         d S )
Nr.   r   ÚC4rM   ÚG4rW   ÚA4r§   úA-4)r   r«   r7   r   ÚgetPitchFromNodeDegreer   rw   rx   ©r   r<   s     r   ÚtestGetPitchFromNodeStepzTest.testGetPitchFromNodeStepà  s=  € ÝÑÔˆØ×ÒÑÔÐØ×Ò�˜S×7Ò7¸¸aÀÑCÔCÑDÔDÀdÑKÔKÐKØ×Ò�˜S×7Ò7¸¸aÀÑCÔCÑDÔDÀdÑKÔKÐKð 	×Ò�˜S×7Ò7¸¸aÀÑCÔCÑDÔDÀdÑKÔKÐKà×ÒÝ�×*Ò*¨4°°AÅÔATÐ*ÑUÔUÑVÔVØñ	
ô 	
ð 	
ð 	×ÒÝ�×*Ò*¨4°°AÅÔAUÐ*ÑVÔVÑWÔWØñ	
ô 	
ð 	
ð 	
ð 	
r   c                óf  — t          ¦   «         }|                     ¦   «          |                      t          |                     dddt
          j        ¬¦  «        ¦  «        d¦  «         |                      t          |                     dddt
          j        ¬¦  «        ¦  «        d¦  «         |                      t          |                     dddt
          j        ¬¦  «        ¦  «        d	¦  «         |                      t          |                     ddd
t
          j        ¬¦  «        ¦  «        d¦  «         |                      t          |                     dddt
          j        ¬¦  «        ¦  «        d¦  «         |                      t          |                     dddt
          j        ¬¦  «        ¦  «        d¦  «         |                      t          |                     ddd
t
          j        d¬¦  «        ¦  «        d¦  «         |                      t          |                     dddt
          j        d¬¦  «        ¦  «        d	¦  «         |                      t          |                     dddt
          j        t
          j        ¬¦  «        ¦  «        d¦  «         |                      t          |                     dddt
          j        t
          j        ¬¦  «        ¦  «        d¦  «         |                      t          |                     dddt
          j        t
          j        ¬¦  «        ¦  «        d¦  «         |                      t          |                     dddt
          j        t
          j        ¬¦  «        ¦  «        d¦  «         |                      t          |                     dddt
          j        t
          j        ¬¦  «        ¦  «        d¦  «         |                      t          |                     dddt
          j        ¬¦  «        ¦  «        d¦  «         |                      |                     ddd¬¦  «        t          j
        df¦  «         |                      |                     ddd¬¦  «        d¦  «         |                      |                     ddd ¬¦  «        d!t          j
        f¦  «         |                      |                     ddd"¬¦  «        d#¦  «         |                      |                     ddd t
          j        ¬$¦  «        d%t          j        f¦  «         |                      |                     ddd"t
          j        ¬$¦  «        d%t          j        f¦  «         |                      t          |                     dddt
          j        t
          j        ¬¦  «        ¦  «        d¦  «         d S )&Nr.   r   r¦   r§   r±   r~   ÚB4rQ   ÚC5rG   úB-4zb-4r²   za-4r°   r   )r¨   ÚstepSizerm   )r¨   ÚgetNeighborzE-4ÚD4za-Úb3zB-3zc-4r¯   r#   )ÚpitchReferenceÚnodeNameÚpitchTargetr   rN   )r   r   r)   rW   r1   )r,   rW   )r¾   r¿   rÀ   r¨   r%   )r   r«   r7   r   Ú	nextPitchr   rw   rx   ÚgetNeighborNodeIdsr   r‚   ru   r´   s     r   ÚtestNextPitchzTest.testNextPitchõ  s  € ÝÑÔˆØ×ÒÑÔÐð 	×Ò�˜SŸ]š]¨4°°DÅIÔDW˜]ÑXÔXÑYÔYØñ	ô 	ð 	à×Ò�˜SŸ]š]¨4°°DÅIÔDW˜]ÑXÔXÑYÔYØñ	ô 	ð 	à×Ò�˜SŸ]š]¨4°°DÅIÔDW˜]ÑXÔXÑYÔYØñ	ô 	ð 	ð 	×Ò�˜SŸ]š]¨4°°DÅIÔDX˜]ÑYÔYÑZÔZØñ	 ô 	 ð 	 à×Ò�˜SŸ]š]¨4°°EÅYÔEY˜]ÑZÔZÑ[Ô[Øñ	 ô 	 ð 	 à×Ò�˜SŸ]š]¨4°°EÝ5>Ô5Ið +ñ Kô Kñ Lô Làñ	ô 	ð 	ð
 	×Ò�˜SŸ]š]¨4°°DÝ5>Ô5IØ45ð +ñ 7ô 7ñ 8ô 8ð ñ	 ô 	 ð 	 ð 	×Ò�˜SŸ]š]¨4°°DÝ5>Ô5HØ45ð +ñ 7ô 7ñ 8ô 8ð ñ	ô 	ð 	ð 	×ÒÝØ—’Ø˜!˜UÝ'Ô1Ý )Ô 3ð ñ ô ñô ð ñ		
ô 		
ð 		
ð 	×Ò�˜SŸ]š]¨4°°EÝ5>Ô5HÝ7@Ô7Kð +ñ Mô Mñ Nô Nð ñ	ô 	ð 	ð 	×Ò�˜SŸ]š]¨4°°DÝ5>Ô5HÝ7@Ô7Jð +ñ Lô Lñ Mô Mð ñ	ô 	ð 	ð 	×Ò�˜SŸ]š]¨4°°DÝ5>Ô5HÝ7@Ô7Kð +ñ Mô Mñ Nô Nð ñ	ô 	ð 	ð 	×Ò�˜SŸ]š]¨4°°DÝ5>Ô5IÝ7@Ô7Jð +ñ Lô Lñ Mô Mð ñ	 ô 	 ð 	 ð 	×Ò�˜SŸ]š]¨4°°EÝ5>Ô5Hð +ñ Jô Jñ Kô Kàñ	ô 	ð 	ð 	×ÒØ×"Ò"°$ÀÐPTÐ"ÑUÔUÝŒ]˜AÐñ	
ô 	
ð 	
ð
 	×ÒØ×"Ò"°$ÀÐPTÐ"ÑUÔUØñ	
ô 	
ð 	
ð
 	×ÒØ×"Ò"°$ÀÐPSÐ"ÑTÔTØ•”Ðñ	
ô 	
ð 	
ð
 	×ÒØ×"Ò"Ø#ØØ ð #ñ "ô "ð ñ	
ô 	
ð 	
ð 	×ÒØ×"Ò"Ø#ØØÝ#Ô.ð	 #ñ 0ô 0ð
 •”Ðñ	ô 	ð 	ð 	×ÒØ×"Ò"Ø#ØØ Ý#Ô.ð	 #ñ 0ô 0ð
 •”Ðñ	ô 	ð 	ð 	×ÒÝ�—’ØØØÝ#Ô.Ý%Ô0ð ñ 2ô 2ñ 3ô 3ð ñ	ô 	ð 	ð 	ð 	r   c                óÂ  — t          ¦   «         }|                     ¦   «          |                     dddd¬¦  «        \  }}|                      |d         j        d¦  «         |                      |d         j        d¦  «         |                     dddd¬¦  «        \  }}|                      |d         j        d¦  «         |                      |d         j        d¦  «         d S )	Nr¯   r¸   F)rk   rh   Úreverser   r¹   éÿÿÿÿT)r   r«   r¡   r7   ÚnameWithOctave)r   r<   Údescending_melodic_minorÚ_Ú!descending_melodic_minor_reverseds        r   Ú'test_realize_descending_reversed_cachedz,Test.test_realize_descending_reversed_cachedp  sô   € ÝÑÔˆØ×ÒÑÔÐà&)×&;Ò&;Ø˜4¨$¸ð '<ñ '?ô '?Ñ#Ð  !à×ÒÐ1°!Ô4ÔCÀUÑKÔKÐKØ×ÒÐ1°"Ô5ÔDÀdÑKÔKÐKà/2×/DÒ/DØ˜4¨$¸ð 0Eñ 0>ô 0>Ñ,Ð)¨1à×ÒÐ:¸1Ô=ÔLÈdÑSÔSÐSØ×ÒÐ:¸2Ô>ÔMÈuÑUÔUÐUÐUÐUr   N)Ú__name__Ú
__module__Ú__qualname__r   r   rA   rO   rT   r|   r†   r™   r¤   r­   rµ   rÃ   rË   rY   r   r   r
   r
      s  € € € € € ðð ð ðð ð ðAZð AZð AZðF7[ð 7[ð 7[ðrJð Jð Jð*WOð WOð WOðr:=ð :=ð :=ðz*Tð *Tð *TðX2_ð 2_ð 2_ðh/_ð /_ð /_ðb
ð 
ð 
ð*yð yð yðvVð Vð Vð Vð Vr   r
   Ú__main__)Ú
__future__r   r’   ÚunittestÚmusic21r   r   Úmusic21.scale.intervalNetworkr   r   r   ÚTestCaser
   rÌ   ÚmainTestrY   r   r   ú<module>rÖ      sâ   ðð #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ Nðg	Vð g	Vð g	Vð g	Vð g	Vˆ8Ôñ g	Vô g	Vð g	VðV ˆzÒÐØ€N€N€NØ€GÔ�TÑÔÐÐÐð Ðr   