§
    ƒØjU6  ã                   óÄ  — d dl Z d dl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mZmZmZmZ d dlmZmZ d dlmZmZmZmZmZmZmZm Z   ee!¦  «        Z" G d„ d	e j#        ¦  «        Z$ G d
„ de j#        ¦  «        Z% G d„ de j#        ¦  «        Z& G d„ d¦  «        Z' G d„ d¦  «        Z( G d„ d¦  «        Z) G d„ d¦  «        Z*d5d„Z+d5d„Z,d„ Z-d6d„Z.d„ Z/d„ Z0d„ Z1d „ Z2d!„ Z3d"„ Z4d5d#„Z5d7d%„Z6d&„ Z7e!d'k    rã e
j8        d(¦  «        Z9 e
j8        d)¦  «        Z: e
j8        d*¦  «        Z; e
j8        d+¦  «        Z< e
j8        d,¦  «        Z= ej>        e=j?        d-z   ¦  «        d.z  Z@ ejA        e:d k    ¦  «        ZBd e@eBd          eBd/         f<    e5¦   «         \  ZCZDZEZF e6eDe;¦  «        ZG e6eFeGd0¬1¦  «        ZH e6eEeHd2¬1¦  «        ZI ed3„ eCD ¦   «         eId4¬1¦  «        ZJdS dS )8é    N)Úlayers)Ú
exceptions)Úpredict)Úget_global_unit_sizeÚslope_to_degreeÚget_unit_sizeÚ
get_loggerÚfind_closest_staffs)Úfilter_out_of_range_bboxÚfilter_out_small_area)Úmerge_nearby_bboxÚrm_merge_overlap_bboxÚ
find_linesÚ
draw_linesÚdraw_bounding_boxesÚget_bboxÚ
get_centerÚ
to_rgb_imgc                   ó   — e Zd ZdZdZdS )ÚClefTypeé   é   N)Ú__name__Ú
__module__Ú__qualname__ÚG_CLEFÚF_CLEF© ó    úŒ/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/oemer/symbol_extraction.pyr   r      s   € € € € € Ø€FØ€F€F€Fr   r   c                   ó   — e Zd ZdZdZdZdS )ÚSfnTyper   r   é   N)r   r   r   ÚFLATÚSHARPÚNATURALr   r   r    r"   r"   "   s   € € € € € Ø€DØ€EØ€G€G€Gr   r"   c                   ó.   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
ÚRestTyper   r   r#   é   é   é   é   é   N)r   r   r   Ú
WHOLE_HALFÚQUARTERÚEIGHTHÚ	SIXTEENTHÚTHIRTY_SECONDÚSIXTY_FOURTHÚWHOLEÚHALFr   r   r    r(   r(   (   s6   € € € € € Ø€JØ€GØ€FØ€IØ€MØ€LØ€EØ€D€D€Dr   r(   c                   óf   — e Zd Zd„ Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zd„ ZdS )ÚClefc                 ó>   — d | _         d | _        d | _        d | _        d S ©N)ÚbboxÚtrackÚgroupÚ_label©Úselfs    r    Ú__init__zClef.__init__4   s"   € Ø#ˆŒ	ØˆŒ
ØˆŒ
Ø $ˆŒˆˆr   c                 ó   — | j         S r9   ©r=   r>   s    r    Úlabelz
Clef.label:   ó
   € àŒ{Ðr   c                 óB   — t          |t          ¦  «        sJ ‚|| _        d S r9   )Ú
isinstancer   r=   ©r?   Úvals     r    rC   z
Clef.label>   ó#   € å˜#�xÑ(Ô(Ð(Ð(Ð(ØˆŒˆˆr   c                 ó>   — | j         d         | j         d         z   dz  S ©Nr   r   ©r:   r>   s    r    Úx_centerzClef.x_centerC   ó   € à”	˜!”˜tœy¨œ|Ñ+¨qÑ0Ð0r   c                 ó@   — d| j         j        › d| j        › d| j        › �S )NzClef: ú
 / Track: ú
 / Group: )rC   Únamer;   r<   r>   s    r    Ú__repr__zClef.__repr__G   s(   € ØU˜œ
œÐUÐU°4´:ÐUÐUÈÌÐUÐUÐUr   N©	r   r   r   r@   ÚpropertyrC   ÚsetterrM   rS   r   r   r    r7   r7   3   sŠ   € € € € € ð%ð %ð %ð ðð ñ „Xðð „\ðð ñ „\ðð ð1ð 1ñ „Xð1ðVð Vð Vð Vð Vr   r7   c                   óf   — e Zd Zd„ Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zd„ ZdS )ÚSfnc                 óZ   — d | _         d | _        d | _        d | _        d | _        d | _        d S r9   )r:   Únote_idÚis_keyr;   r<   r=   r>   s    r    r@   zSfn.__init__L   s0   € Ø#ˆŒ	Ø ˆŒØ ˆŒØˆŒ
ØˆŒ
Ø#ˆŒˆˆr   c                 ó   — | j         S r9   rB   r>   s    r    rC   z	Sfn.labelT   rD   r   c                 óB   — t          |t          ¦  «        sJ ‚|| _        d S r9   )rF   r"   r=   rG   s     r    rC   z	Sfn.labelX   s#   € å˜#�wÑ'Ô'Ð'Ð'Ð'ØˆŒˆˆr   c                 ó>   — | j         d         | j         d         z   dz  S rK   rL   r>   s    r    rM   zSfn.x_center]   rN   r   c           
      ó`   — d| j         j        › d| j        › d| j        › d| j        › d| j        › �
S )NzSFN: z / Note ID: z / Is key: rP   rQ   )rC   rR   rZ   r[   r;   r<   r>   s    r    rS   zSfn.__repr__a   sV   € ð<�t”z”ð <ð <°D´Lð <ð <ÈTÌ[ð <ð <Øœð<ð <Ø/3¬zð<ð <ð 	<r   NrT   r   r   r    rX   rX   K   s…   € € € € € ð$ð $ð $ð ðð ñ „Xðð „\ðð ñ „\ðð ð1ð 1ñ „Xð1ð<ð <ð <ð <ð <r   rX   c                   óf   — e Zd Zd„ Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zd„ ZdS )ÚRestc                 óL   — d | _         d | _        d | _        d | _        d | _        d S r9   )r:   Úhas_dotr;   r<   r=   r>   s    r    r@   zRest.__init__g   s)   € Ø#ˆŒ	Ø!ˆŒØˆŒ
ØˆŒ
Ø $ˆŒˆˆr   c                 ó   — | j         S r9   rB   r>   s    r    rC   z
Rest.labeln   rD   r   c                 óB   — t          |t          ¦  «        sJ ‚|| _        d S r9   )rF   r(   r=   rG   s     r    rC   z
Rest.labelr   rI   r   c                 ó>   — | j         d         | j         d         z   dz  S rK   rL   r>   s    r    rM   zRest.x_centerw   rN   r   c                 óP   — d| j         j        › d| j        › d| j        › d| j        › �S )NzRest: z / Has dot: rP   rQ   )rC   rR   rc   r;   r<   r>   s    r    rS   zRest.__repr__{   sG   € ð&˜œ
œð &ð &°T´\ð &ð &ÈTÌZð &ð &Øœð&ð &ð 	&r   NrT   r   r   r    ra   ra   f   s…   € € € € € ð%ð %ð %ð ðð ñ „Xðð „\ðð ñ „\ðð ð1ð 1ñ „Xð1ð&ð &ð &ð &ð &r   ra   c                   ó0   — e Zd Zd„ Zed„ ¦   «         Zd„ ZdS )ÚBarlinec                 ó"   — d | _         d | _        d S r9   )r:   r<   r>   s    r    r@   zBarline.__init__�   s   € Ø#ˆŒ	ØˆŒ
ˆ
ˆ
r   c                 ó>   — | j         d         | j         d         z   dz  S rK   rL   r>   s    r    rM   zBarline.x_center…   rN   r   c                 ó   — d| j         › �S )NzBarline / Group: )r<   r>   s    r    rS   zBarline.__repr__‰   s   € Ø/ 4¤:Ð/Ð/Ð/r   N)r   r   r   r@   rU   rM   rS   r   r   r    ri   ri   €   sM   € € € € € ðð ð ð ð1ð 1ñ „Xð1ð0ð 0ð 0ð 0ð 0r   ri   ç      @c                 ó˜  — t          | ¦  «        } t          | dd¬¦  «        } g }| D ]^}|\  }}}}t          t          |¦  «        Ž }t	          ||z
  ||z
  ¦  «        }	t          |	¦  «        dk     rŒI|                     |¦  «         Œ_t          j        |¦  «        }t          j	        |d         ¦  «        }
t          j	        |d         ¦  «        }t          j
        |dz   |
dz   df¦  «        }t          ||d	¬
¦  «        }t          |d         ¦  «        }g }|D ]+}|\  }}}}||z
  ||z  k     rŒ|                     |¦  «         Œ,t          |d„ ¬¦  «        }d„ |D ¦   «         }t          j        |dd …         ¦  «        }t          j        |¦  «        |z  }t          j        |dk    ¦  «        d         }t          j        |¦  «        |         }|S )NÚmerger   ©ÚmodeÚoverlap_ratioéK   ).r   ).r#   é
   r#   r   )Úwidth).r   c                 ó$   — | d         | d         z
  S )Nr#   r   r   )Úboxs    r    ú<lambda>z!filter_barlines.<locals>.<lambda>±   s   € °°Q´¸¸A¼±€ r   )Úkeyc                 ó0   — g | ]}|d          |d         z
  ‘ŒS )r#   r   r   ©Ú.0Úbs     r    ú
<listcomp>z#filter_barlines.<locals>.<listcomp>²   s$   € Ð.Ð.Ð.˜qˆq�Œt�a˜”d‰{Ð.Ð.Ð.r   éûÿÿÿç      à?)r   r   r   r   r   ÚabsÚappendÚnpÚarrayÚmaxÚzerosr   r   ÚsortedÚmeanÚwhere)ÚlinesÚmin_height_unit_ratioÚvalid_linesÚlineÚx1Úy1Úx2Úy2Ú	unit_sizeÚdegÚmax_xÚmax_yÚdataÚboxesÚ	valid_boxrw   Ú_ÚheightsÚtop_5ÚnormÚidxs                        r    Úfilter_barlinesrž   �   sð  € Ý$ UÑ+Ô+€Eå! %¨gÀQÐGÑGÔG€Eð €KØð 	!ð 	!ˆØ‰ˆˆB��BÝ!¥:¨dÑ#3Ô#3Ð4ˆ	õ ˜b ™e R¨¡UÑ+Ô+ˆÝˆs‰8Œ8�bŠ=ˆ=Øà×Ò˜4Ñ Ô Ð Ð õ ”(˜;Ñ'Ô'€KÝŒF�;˜vÔ&Ñ'Ô'€EÝŒF�;˜vÔ&Ñ'Ô'€EÝŒ8�U˜2‘X˜u R™x¨Ð+Ñ,Ô,€DÝ�k 4¨qÐ1Ñ1Ô1€DÝ�T˜&”\Ñ"Ô"€EØ€IØð ð ˆØ‰ˆˆ2ˆq�"ð �‰G�yÐ#8Ñ8Ò8Ð8Ø
à×Ò˜ÑÔÐÐõ �yÐ&>Ð&>Ð?Ñ?Ô?€IØ.Ð. IÐ.Ñ.Ô.€GÝŒG�G˜B˜C˜C”LÑ!Ô!€EÝŒ8�GÑÔ˜uÑ$€DÝ
Œ(�4˜#’:Ñ
Ô
˜qÔ
!€CÝ”˜Ñ#Ô# CÔ(€IàÐr   c                 óÈ  — t          j        || z
  dk    dd¦  «        }t          j        || z
  dk    dd¦  «        }t          j                             |¦  «        \  }}t          j                             |¦  «        \  }}	t          j        |¦  «        }
t          d|dz   ¦  «        D ]k}||k    }||         }t          t          j        |¦  «        ¦  «        }d|v r| 	                    d¦  «         |D ]}||k    }|
|xx         ||         z  cc<   ŒŒld|
|
dk    <   t          |
¦  «        }t          ||¦  «        }t                               dt          |¦  «        ¦  «         |S )Nr   r   zDetected barlines: %d)rƒ   r‰   ÚscipyÚndimagerC   Ú
zeros_likeÚrangeÚsetÚuniqueÚremover   rž   ÚloggerÚdebugÚlen)Ú	group_mapÚstems_restsÚsymbolsr‹   Úbarline_candÚno_noteÚ	bar_labelÚbnumÚ	sym_labelr™   Úsym_barline_mapÚir�   ÚregionÚlabelsrC   Úsym_idxrŠ   Úline_boxs                      r    Úparse_barlinesr¸   »   st  € å”8˜K¨	Ñ1°!Ò3°Q¸Ñ:Ô:€Lõ Œh�w˜yÑ(¨Ò*¨A¨qÑ1Ô1€Gõ ”m×)Ò)¨,Ñ7Ô7�O€IˆtÝ”=×&Ò& wÑ/Ô/�L€Iˆqõ ”m GÑ,Ô,€OÝ�1�d˜1‘fÑÔð 9ð 9ˆØ˜AŠ~ˆØ˜3”ˆÝ•R”Y˜vÑ&Ô&Ñ'Ô'ˆØ�ˆ;ˆ;Ø�MŠM˜!ÑÔÐØð 	9ð 	9ˆEØ  EÒ)ˆGØ˜GÐ$Ð$Ô$¨°Ô(8Ñ8Ð$Ð$Ñ$Ð$ð	9ð *+€O�O AÒ%Ñ&å�Ñ'Ô'€EÝ˜uÐ&;Ñ<Ô<€HÝ
‡L‚LÐ(­#¨h©-¬-Ñ8Ô8Ð8à€Or   c                 ó@  — g }| D ]˜}|d         |d         z
  }|d         |d         z
  }t          |¦  «        \  }}t          ||¦  «        }||dz  k     s	||dz  k     rŒYt          ||¦  «        \  }}	||j        k     s||j        k    rŒƒ|                     |¦  «         Œ™|S )Nr   r   r#   r   g      ø?)r   r   r
   Úy_upperÚy_lowerr‚   )
Úbboxesr˜   rw   ÚwÚhÚcen_xÚcen_yr’   Ústaffr™   s
             r    Úfilter_clef_boxrÂ   Ú   sÆ   € Ø€IØð ð ˆØ�ŒF�S˜”V‰OˆØ�ŒF�S˜”V‰OˆÝ! #‘”‰ˆˆuÝ! %¨Ñ/Ô/ˆ	ð ˆy˜‰}ÒÐ  I¨c¡MÒ 1Ð 1Øõ ' u¨eÑ4Ô4‰ˆˆqØ�5”=Ò Ð  E¨E¬MÒ$9Ð$9Øà×Ò˜ÑÔÐÐØÐr   ç      @çÍÌÌÌÌÌÜ?c                 óÌ  ‡ — t          ‰ ¦  «        at          j        t          j        |dz  ¦  «        dft          j        ¬¦  «        }t          j        t          j        ‰  	                    t          j        ¦  «        |¦  «        |¦  «        Š t          ‰ ¦  «        }t          |¦  «        }t          |dd¬¦  «        }t          |d„ ¬¦  «        }t          ||d	z  ¦  «        }g }g }|D ]Ë}|d         |d
         z
  }	|d         |d         z
  }
‰ |d         |d         …|d
         |d         …f         }t          t!          |¦  «        Ž }|	|
z  |dz  z  }||d
k             j        |	|
z  z  }||k    r||k     r|                     |¦  «         Œ¤|	|dz  k    r|
|dz  k    r|                     |¦  «         ŒÌt'          |¦  «        }ˆ fd„} ||d¦  «        } ||d¦  «        }||||fS )Nr   r   )Údtypero   g333333Ó?rp   c                 ó   — | dz  S )Nr   r   ©Úusizes    r    rx   z"parse_clefs_keys.<locals>.<lambda>ø   s
   € ÈÈqÉ€ r   ©Úarea_size_funcç333333ó?r   r#   c                 óª   •— g }| D ]L\  }}}}t          j        ‰	||…||…f         ¦  «        }t          ||¦  «        }|                     |¦  «         ŒM|S r9   )rƒ   Úcopyr   r‚   )
r¼   Ú
model_namerC   rŽ   r�   r�   r‘   r´   ÚllÚ
clefs_keyss
            €r    Úpred_symbolsz&parse_clefs_keys.<locals>.pred_symbols  sh   ø€ ØˆØ$ð 	ð 	‰NˆB��B˜Ý”W˜Z¨¨2¨¨r°"¨u¨Ô5Ñ6Ô6ˆFÝ˜ Ñ,Ô,ˆBØ�LŠL˜ÑÔÐÐàˆr   ÚclefÚsfn)r   Úcs_imgrƒ   ÚonesÚintÚuint8Úcv2ÚerodeÚdilateÚastyper   r   r   r   r   r   r   Úsizer‚   rÂ   )rÑ   r’   Úclef_size_ratioÚmax_clef_tp_ratioÚkerr¼   Úkey_boxÚclef_boxrw   r½   r¾   r´   rÉ   Úarea_size_ratioÚarea_tp_ratiorÒ   Ú
clef_labelÚ	key_labels   `                 r    Úparse_clefs_keysrç   ï   s  ø€ å˜
Ñ#Ô#€Få
Œ'•2”6˜) Q™,Ñ'Ô'¨Ð+µ2´8Ð
<Ñ
<Ô
<€CÝ”�3œ: j×&7Ò&7½¼Ñ&AÔ&AÀ3ÑGÔGÈÑMÔM€JÝ�jÑ!Ô!€FÝ% fÑ-Ô-€FÝ" 6°ÀsÐKÑKÔK€FÝ" 6Ð:PÐ:PÐQÑQÔQ€FÝ˜v y°¡}Ñ5Ô5€Fà€GØ€HØð  ð  ˆØ�ŒF�S˜”V‰OˆØ�ŒF�S˜”V‰OˆØ˜C œF 3 q¤6˜M¨3¨q¬6°#°a´&¨=Ð8Ô9ˆÝ�z¨#™œÐ/ˆØ˜a™% %¨¡(Ñ*ˆØ˜v ašxÔ(Ô-°°Q±Ñ7ˆð ˜_Ò,Ð,Ø!Ð$5Ò5Ð5Ø�OŠO˜CÑ Ô Ð Ð Ø��q‘Š[ˆ[˜Q  q¡š[˜[Ø�NŠN˜3ÑÔÐøå˜xÑ(Ô(€Hðð ð ð ð ð �˜h¨Ñ/Ô/€JØ�˜W eÑ,Ô,€Ià�W˜j¨)Ð3Ð3r   c                 óT  — t          j        d¦  «        }t          j        d¦  «        }t          j        |dk    dd¦  «        }t          j        |¦  «        }| D ]\  }}}}	d|||	…||…f<   Œ||z
  |z
  }
d|
|
dk     <   t          j        |
¦  «        at          |
¦  «        }t          |¦  «        }t          ||dz  ¦  «        }t          |¦  «        }t          |d„ ¬¦  «        }t          |t          ¦  «        ag }g }|D ]§}|d	         |d         z
  |d
z  k    s|d         |d         z
  |dz  k     rŒ3|
|d         |d	         …|d         |d         …f         }t          |d¦  «        }d|v rt          |d¦  «        }|                     |¦  «         |                     |¦  «         Œ¨||fS )NÚstems_rests_predrª   éÿÿÿÿr   r   rÌ   c                 ó   — | dz  dz  S )Nr   gffffffæ?r   rÈ   s    r    rx   zparse_rests.<locals>.<lambda>1  s   € ÈÈqÉÐSVÉ€ r   rÊ   r#   rÃ   r   r€   ÚrestsÚ8thÚrests_above8)r   Ú	get_layerrƒ   r‰   r¢   rÎ   Útempr   r   r   r   r   r   r   r‚   )r·   r’   r«   rª   Úg_mapr–   rŽ   r�   r�   r‘   rì   r¼   rC   r˜   rw   r´   Úpreds                    r    Úparse_restsró     sÕ  € ÝÔ"Ð#5Ñ6Ô6€KÝÔ  Ñ-Ô-€IåŒH�Y˜r’\ 1 aÑ(Ô(€EåŒ=˜Ñ#Ô#€DØ"ð ð ‰ˆˆB��BØˆˆR�ˆU�B�r�Eˆ\ÑÐà˜%Ñ $Ñ&€EØ€Eˆ%�Š'�Nõ Œ7�5‰>Œ>€Då�e‰_Œ_€FÝ% fÑ-Ô-€FÝ˜v y°¡}Ñ5Ô5€FÝ" 6Ñ*Ô*€FÝ" 6Ð:VÐ:VÐWÑWÔW€FÝ˜v¥tÑ,Ô,€Dà€EØ€IØð ð ˆàˆqŒ6�C˜”F‰?˜Y¨™_Ò,Ð,Ø�q”6˜C œF‘? Y°¡_Ò4Ð4Øà�s˜1”v˜c !œf�} c¨!¤f¨S°¬V mÐ3Ô4ˆÝ�v˜wÑ'Ô'ˆØ�Dˆ=ˆ=Ý˜6 >Ñ2Ô2ˆDØ×Ò˜ÑÔÐØ�Š�TÑÔÐÐà�eÐÐr   c                 ó²   — g }| D ]Q}t          t          |¦  «        Ž \  }}t          ¦   «         }||_        |j        |_        |                     |¦  «         ŒR|S r9   )r
   r   ri   r:   r<   r‚   )r¼   Úbarlinesrw   Úst1r™   r}   s         r    Úgen_barlinesr÷   F  s]   € Ø€HØð ð ˆÝ$¥j°¡o¤oÐ6‰ˆˆQÝ‰IŒIˆØˆŒØ”)ˆŒØ�Š˜ÑÔÐÐØ€Or   c                 ó8  — t           j        t           j        dœ}g }t          | |¦  «        D ]m\  }}t	          t          |¦  «        Ž \  }}t          ¦   «         }||_        ||         |_        |j	        |_	        |j
        |_
        |                     |¦  «         Œn|S )N)ÚgclefÚfclef)r   r   r   Úzipr
   r   r7   r:   rC   r;   r<   r‚   )	r¼   rµ   Úname_type_mapÚclefsrw   rC   rö   r™   Úccs	            r    Ú	gen_clefsrÿ   Q  s˜   € å”Ý”ðð €Mð €EÝ˜& &Ñ)Ô)ð ð ‰
ˆˆUÝ$¥j°¡o¤oÐ6‰ˆˆQÝ‰VŒVˆØˆŒØ  Ô'ˆŒØ”9ˆŒØ”9ˆŒØ�Š�RÑÔÐÐØ€Lr   c                 óú   — t          | ¦  «        \  }}t          t          t          ||¦  «        ¦  «        ¦  «        }d }t	          | d         | d         |z   ¦  «        D ]}|||f         dk    r|||f         } nŒ|S )Nr   rê   )r   r×   Úroundr   r£   )rw   Únote_id_mapr¿   rÀ   r’   ÚnidÚxs          r    Úget_nearby_note_idr  b  sŽ   € Ý˜c‘?”?�L€Eˆ5Ý•E�-¨¨uÑ5Ô5Ñ6Ô6Ñ7Ô7€IØ
€CÝ�3�q”6˜3˜qœ6 )Ñ+Ñ,Ô,ð ð ˆØ�u˜a�xÔ  BÒ&Ð&Ø˜e Q˜hÔ'ˆCØˆEð 'ð €Jr   c                 óØ  — t          j        d¦  «        }t          j        d¦  «        }t          j        t          j        t          j        dœ}g }t          | |¦  «        D �]	\  }}t          t          |¦  «        Ž \  }}	t          ¦   «         }
||
_
        ||         |
_        t          ||¦  «        |
_        |j        |
_        |j        |
_        |
j        �||
j                 }|
j        |j        k    rt!          j        d|
› d|› �¦  «        ‚|
j        |j        k    rt!          j        d|
› d|› �¦  «        ‚|
j        ||
j                 _        d|
_        |                     |
¦  «         �Œ|S )NrZ   Únotes)ÚsharpÚflatÚnaturalz$Track of sfn and note not mismatch: ú
z$Group of sfn and note not mismatch: F)r   rï   r"   r%   r$   r&   rû   r
   r   rX   r:   rC   r  rZ   r;   r<   ÚEÚSfnNoteTrackMismatchÚSfnNoteGroupMismatchrÔ   r[   r‚   )r¼   rµ   r  r  rü   Úsfnsrw   rC   rö   r™   ÚssÚnotes               r    Úgen_sfnsr  m  s^  € ÝÔ" 9Ñ-Ô-€KÝÔ˜WÑ%Ô%€Eõ ”Ý”Ý”?ðð €Mð
 €DÝ˜& &Ñ)Ô)ð ñ ‰
ˆˆUÝ$¥j°¡o¤oÐ6‰ˆˆQÝ‰UŒUˆØˆŒØ  Ô'ˆŒÝ'¨¨[Ñ9Ô9ˆŒ
Ø”9ˆŒØ”9ˆŒàŒ:Ð!Ø˜œÔ$ˆDØŒx˜4œ:Ò%Ð%ÝÔ,Ð-`ÐTVÐ-`Ð-`ÐZ^Ð-`Ð-`ÑaÔaÐaØŒx˜4œ:Ò%Ð%ÝÔ,Ð-`ÐTVÐ-`Ð-`ÐZ^Ð-`Ð-`ÑaÔaÐaØ$&¤HˆE�"”*ÔÔ!ØˆBŒIà�Š�B‰Œˆ‰Ø€Kr   c           
      óî  — t          j        d¦  «        }t          j        t          j        t          j        t          j        t          j        t          j        dœ}g }t          | |¦  «        D �]\  }}t          t          |¦  «        Ž \  }}t          ¦   «         }	||	_        ||         |	_        |j        |	_        |j        |	_        t#          t%          t'          t          |¦  «        Ž ¦  «        ¦  «        }
t)          |d         dz   |d         |
z   ¦  «        }||d         |d         …|f         }dt+          j        |¦  «        cxk     r|
dz  dz  k     r
n nd|	_        |                     |	¦  «         �Œ	|S )	NÚsymbols_pred)Ú
rest_wholeÚrest_quarterÚrest_8thÚ	rest_16thÚ	rest_32ndÚ	rest_64thr   r   r#   r   r,   T)r   rï   r(   r.   r/   r0   r1   r2   r3   rû   r
   r   ra   r:   rC   r;   r<   r×   r  r   r£   rƒ   Úsumrc   r‚   )r¼   rµ   r¬   rü   rì   rw   rC   rö   r™   Úrrr’   Ú	dot_rangeÚ
dot_regions                r    Ú	gen_restsr  �  sZ  € ÝÔ˜~Ñ.Ô.€Gõ Ô)Ý Ô(Ý”OÝÔ'ÝÔ+ÝÔ+ðð €Mð €EÝ˜& &Ñ)Ô)ð ñ ‰
ˆˆUÝ$¥j°¡o¤oÐ6‰ˆˆQÝ‰VŒVˆØˆŒØ  Ô'ˆŒØ”9ˆŒØ”9ˆŒå��m­Z¸©_¬_Ð=Ñ>Ô>Ñ?Ô?ˆ	Ý˜#˜aœ& ™( C¨¤F¨9Ñ$4Ñ5Ô5ˆ	Ø˜S œV C¨¤F˜]¨IÐ5Ô6ˆ
Ø�rŒv�jÑ!Ô!Ð4Ð4Ò4Ð4 I¨q¡L°1Ñ$4Ò4Ð4Ð4Ð4Ð4ØˆBŒJà�Š�RÑÔÐÑØ€Lr   c                 ó¾  — t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }t          |||| ¬¦  «        }t          |¦  «        }t	          ¦   «         }t          ||¦  «        \  }}	}
}t          ||
¦  «        }t          |	|¦  «        }t          ||¦  «        \  }}t          ||¦  «        }||||fS )Nr  ré   Úclefs_keys_predrª   )r‹   )
r   rï   r¸   r÷   r   rç   rÿ   r  ró   r  )Úmin_barline_h_unit_ratior¬   r«   rÑ   rª   r·   rõ   r’   râ   rá   rå   ræ   rý   r  Úrest_boxÚ
rest_labelrì   s                    r    Úextractr%  «  sÛ   € åÔ˜~Ñ.Ô.€GÝÔ"Ð#5Ñ6Ô6€KÝÔ!Ð"3Ñ4Ô4€JÝÔ  Ñ-Ô-€Iå˜i¨°gÐUmÐnÑnÔn€HÝ˜HÑ%Ô%€Hå$Ñ&Ô&€IÝ/?À
ÈIÑ/VÔ/VÑ,€Hˆg�z 9Ý�h 
Ñ+Ô+€EÝ�G˜YÑ'Ô'€Då& x°Ñ;Ô;Ñ€HˆjÝ�h 
Ñ+Ô+€Eà�U˜D %Ð'Ð'r   ©éë   é@   é4   c           
      ó8  — d„ | D ¦   «         }d„ | D ¦   «         }t          j        |¦  «        }t          ||¦  «        D ]\\  \  }}}}	}
t          j        |||f||	f|d¦  «         t          j        |t          |
¦  «        |dz   |	ft          j        d|d¦  «         Œ]|S )Nc                 ó   — g | ]	}|j         ‘Œ
S r   rL   ©r|   Úsyms     r    r~   z draw_symbols.<locals>.<listcomp>Á  s   € Ð*Ð*Ð*˜3ˆcŒhÐ*Ð*Ð*r   c                 ó&   — g | ]}|j         j        ‘ŒS r   )rC   rR   r,  s     r    r~   z draw_symbols.<locals>.<listcomp>Â  s   € Ð0Ð0Ð0 ˆcŒiŒnÐ0Ð0Ð0r   r   gš™™™™™é?)rƒ   rÎ   rû   rÙ   Ú	rectangleÚputTextÚstrÚFONT_HERSHEY_SIMPLEX)r¬   Úori_imgrµ   Úcolorr¼   ÚoutrŽ   r�   r�   r‘   rC   s              r    Údraw_symbolsr6  À  s·   € Ø*Ð* 'Ð*Ñ*Ô*€FØ0Ð0¨Ð0Ñ0Ô0€FÝ
Œ'�'Ñ
Ô
€CÝ#& v¨vÑ#6Ô#6ð Zð ZÑÑˆˆR��R˜%ÝŒ�c˜B ˜8 b¨" X¨u°aÑ8Ô8Ð8ÝŒ�C�˜U™œ b¨¡d¨B ZµÔ1IÈ3ÐPUÐWXÑYÔYÐYÐYØ€Jr   c                 óX   — t          j        | d¬¦  «         t          j        ¦   «          d S )NÚauto)Úaspect)ÚpltÚimshowÚshow)r–   s    r    r<  r<  Ê  s&   € Ý„Jˆt˜FÐ#Ñ#Ô#Ð#Ý„H�J„J€J€J€Jr   Ú__main__r  ré   Úoriginal_imager!  rª   )r#   éÿ   r   )é   é£   r   )r4  )é5   r   é¨   c                 ó   — g | ]	}|j         ‘Œ
S r   rL   r{   s     r    r~   r~   ß  s   € Ð7Ð7Ð7¨˜aœfÐ7Ð7Ð7r   )éú   r   éÈ   )rm   )rÃ   rÄ   )Nr&  )KÚenumrÙ   Únumpyrƒ   Úscipy.ndimager    Úmatplotlib.pyplotÚpyplotr:  Úoemerr   r   r  Úoemer.inferencer   Úoemer.utilsr   r   r   r	   r
   Úoemer.general_filtering_rulesr   r   Ú
oemer.bboxr   r   r   r   r   r   r   r   r   r§   ÚEnumr   r"   r(   r7   rX   ra   ri   rž   r¸   rÂ   rç   ró   r÷   rÿ   r  r  r  r%  r6  r<  rï   r¬   r«   r3  rÑ   rª   rÖ   ÚshapeÚimgr‰   r�   rõ   rý   r  rì   ÚaaÚbbrþ   Úddr   r   r    ú<module>rW     so  ðØ €€€à 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø #Ð #Ð #Ð #Ð #Ð #Ø mÐ mÐ mÐ mÐ mÐ mÐ mÐ mÐ mÐ mÐ mÐ mÐ mÐ mØ YÐ YÐ YÐ YÐ YÐ YÐ YÐ Yð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 
ˆ�HÑ	Ô	€ðð ð ð ð ˆtŒyñ ô ð ð
ð ð ð ð ˆdŒiñ ô ð ðð ð ð ð ˆtŒyñ ô ð ðVð Vð Vð Vð Vñ Vô Vð Vð0<ð <ð <ð <ð <ñ <ô <ð <ð6&ð &ð &ð &ð &ñ &ô &ð &ð4
0ð 
0ð 
0ð 
0ð 
0ñ 
0ô 
0ð 
0ð+ð +ð +ð +ð\ð ð ð ð>ð ð ð*+4ð +4ð +4ð +4ð\&ð &ð &ðRð ð ðð ð ð"ð ð ðð ð ð@ð ð ð<(ð (ð (ð (ð*ð ð ð ðð ð ð
 ˆzÒÐØˆfÔ˜~Ñ.Ô.€GØ"�&Ô"Ð#5Ñ6Ô6€KØˆfÔÐ/Ñ0Ô0€GØ!�Ô!Ð"3Ñ4Ô4€JØ �Ô  Ñ-Ô-€Ià
ˆ"Œ'�)”/ $Ñ&Ñ
'Ô
'¨#Ñ
-€CØ
ˆ"Œ(�;˜q’=Ñ
!Ô
!€CØ€CˆˆAŒ��A”ˆÑà#* 7¡9¤9Ñ €Hˆe�T˜5à	ˆ�e˜WÑ	%Ô	%€BØ	ˆ�e˜R |Ð	4Ñ	4Ô	4€BØ	ˆ�d˜B lÐ	3Ñ	3Ô	3€BØ	Ð	Ð7Ð7¨hÐ7Ñ7Ô7¸À=Ð	QÑ	QÔ	Q€B€B€Bð! Ðr   