§
    ƒØjW$  ã                  ó
  — d Z ddlmZ ddlmZ ddlZddlZddlZddl	m
Z
 ddlmZmZ ddlmZ ddl	mZ dd	l	mZ dd
l	mZ ej        rddl	mZ ddlmZmZ  ej        d¦  «        Z	 	 d*ddœd+d„Z	 	 d,d-d"„Zd.d%„Zd/d&„Zd0d)„ZdS )1z‰
This module contains music21 Jupyter Notebook external converters, which
used to be in the main music21.converter.subConverters module.
é    )Úannotations)ÚSequenceN)Úcommon)ÚrunningInJupyterOrColabÚrunningInMarimo)Ú	museScore)Údefaults)Úenvironment)Ústream)Úbase)ÚSubConverterÚConverterMidizipython21.convertersÚmusicxml©ÚpngF)ÚmultipageWidgetÚobjúbase.Music21ObjectÚsubConverterr   ÚfmtÚstrÚ
subformatsúSequence[str]r   Úboolc          	     ó2  ‡‡‡— ddl mŠmŠm} t	          t
          d         ¦  «                             d¦  «        r.d}t          j        |¦  «        } ‰ ‰|d¬¦  «        ¦  «         d S t          j
        }	t          j        }
dt          _
        dt          _        t          | t          j        ¦  «        r| j        D ]}t!          |f||||d	œ|¤Ž Œd S  |j        | |f|| d
œ|¤Ž}|d         dk    rd S t%          j        |¦  «        }t%          j        ||¦  «        \  }}i Št	          |¦  «        d t	          |¦  «                             d¦  «        …         }t-          d|dz   ¦  «        D ]F}|dz   t	          |¦  «                             |¦  «        z   dz   }t1          j        |¦  «        }|‰|<   ŒG|dk    r) ‰ ‰|                     ¦   «         d¬¦  «        ¦  «         nŸ|syt-          d|dz   ¦  «        D ]d}‰|                              ¦   «         rH ‰ ‰‰|                              ¦   «         d¬¦  «        ¦  «         ||k     r ‰ |d¦  «        ¦  «         Œen$ddlm}  |d|f¬¦  «        dˆˆˆfd„	¦   «         }|S |	t          _
        |
t          _        d S )Nr   )ÚImageÚdisplayÚHTMLÚmusescoreDirectPNGPathz/skips\   iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVQYV2P4DwABAQEAWk1v8QAAAABJRU5ErkJggg==T©ÚdataÚretinaÚ )r   r   r   r   )r   Ú	trimEdgesr   ú-é   z.pngz'<p style="padding-top: 20px">&nbsp;</p>)Úinteract)Úpagec                óº   •— ‰|          }|                      ¦   «         r* ‰ ‰|                     ¦   «         d¬¦  «        ¦  «         d S t          d| › d�¦  «         d S )NTr    zNo file for page ú.)ÚexistsÚ
read_bytesÚprint)r(   Úinner_page_fpr   r   Úpagess     €€€ú‘/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/music21/ipython21/converters.pyÚpage_displayz/showImageThroughMuseScore.<locals>.page_displayp   sq   ø€ à! $œKˆMØ×#Ò#Ñ%Ô%ð 3Ø�˜˜ =×#;Ò#;Ñ#=Ô#=ÀdÐKÑKÔKÑLÔLÐLÐLÐLåÐ1¨$Ð1Ð1Ð1Ñ2Ô2Ð2Ð2Ð2ó    )r&   )ÚIPython.displayr   r   r   r   ÚenvironLocalÚ
startswithÚbase64Ú	b64decoder	   ÚtitleÚauthorÚ
isinstancer   ÚOpusÚscoresÚshowImageThroughMuseScoreÚwriter   ÚfindLastPNGPathÚfindPNGRangeÚrfindÚrangeÚzfillÚpathlibÚPathr,   r+   Ú
ipywidgetsr'   )r   r   r   r   r   Úkeywordsr   Ú	pngData64ÚpngDataÚsavedDefaultTitleÚsavedDefaultAuthorÚsÚfpÚlast_pngÚlast_numberÚ
num_digitsÚstemÚpgÚpage_strÚpage_fpr'   r1   r   r   r/   s                         @@@r0   r=   r=   "   sO  øøø€ ð 5Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4å
�<Ð0Ô1Ñ2Ô2×=Ò=¸gÑFÔFð ðPˆ	åÔ" 9Ñ-Ô-ˆàˆ��˜7¨4Ð0Ñ0Ô0Ñ1Ô1Ð1Øˆtõ !œÐÝ!œÐØ…H„NØ…H„Oå�#•v”{Ñ#Ô#ð 
Ø”ð 	ð 	ˆAÝ%Øðà)ØØ%Ø /ðð ð ðð ð ð ð ˆtà	ˆÔ	ØØð
ð Ø%Ð%ð	
ð 
ð
 ð
ð 
€Bð �!„}˜ÒÐØˆtåÔ(¨Ñ,Ô,€HÝ'Ô4°R¸ÑBÔBÑ€K�Ø€EÝˆr‰7Œ7Ð&•C˜‘G”G—M’M #Ñ&Ô&Ð&Ô'€DÝ�A�{ Q‘Ñ'Ô'ð ð ˆØ˜#‘:¥ B¡¤§¢¨jÑ 9Ô 9Ñ9¸FÑBˆÝ”,˜xÑ(Ô(ˆØˆˆb‰	ˆ	à�aÒÐàˆ��˜2Ÿ=š=™?œ?°4Ð8Ñ8Ô8Ñ9Ô9Ð9Ð9Øð Ý˜˜;¨™?Ñ+Ô+ð 	Mð 	MˆBØ�RŒy×ÒÑ!Ô!ð MØ�˜˜ 5¨¤9×#7Ò#7Ñ#9Ô#9À$ÐGÑGÔGÑHÔHÐHØ˜Ò#Ð#Ø�G˜D˜DÐ!JÑKÔKÑLÔLÐLøð		Mð 	(Ð'Ð'Ð'Ð'Ð'à	ˆ˜˜;Ð'Ð	(Ñ	(Ô	(ð	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ñ 
)Ô	(ð	3ð Ðà&…H„NØ(…H„OØˆ4r2   Úmidi© r   Úreturnút.Anyc                óR  —  |j         | |f|ddœ|¤Ž}t          |d¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          |¦  «        }t	          ¦   «         rt          |¦  «         d S t          ¦   «         rt          |¦  «        S t          d¦  «        ‚)NT)r   ÚaddStartDelayÚrbzECannot run displayMusic21jMIDI if not running in a supported Notebook)	r>   ÚopenÚreadÚhtmlOutputForMidir   ÚdisplayMusic21jMIDIJupyterr   ÚdisplayMusic21jMIDIMarimoÚ
ValueError)	r   r   r   r   rG   rM   ÚfÚbinaryMidiDataÚ
htmlOutputs	            r0   ÚdisplayMusic21jMIDIre   ~   s  € ð 
ˆÔ	ØØð
ð Øð	
ð 
ð
 ð
ð 
€Bõ 
ˆb�$‰Œð )˜1Ø !§¢¡¤ˆð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )õ # >Ñ2Ô2€JåÑ Ô ð bÝ" :Ñ.Ô.Ð.Ð.Ð.Ý	Ñ	Ô	ð bÝ(¨Ñ4Ô4Ð4åÐ`ÑaÔaÐas   £AÁAÁArd   ÚNonec                ó>   — ddl m}m}  | || ¦  «        ¦  «         d S )Nr   )r   r   )r3   r   r   )rd   r   r   s      r0   r_   r_   ™   s:   € Ø-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ø€GˆDˆD�ÑÔÑÔÐÐÐr2   c                ó*   — ddl m}  || dd¬¦  «        S )Nr   )Úiframez100%Ú80px)ÚwidthÚheight)Úmarimori   )rd   ri   s     r0   r`   r`   �   s+   € àÐÐÐÐÐØˆ6�* F°6Ð:Ñ:Ô:Ð:r2   rc   Úbytesc                óÖ   — t          j        | ¦  «        }t          j        ¦   «         }dt	           |¦   «         ¦  «        z   }|                     d¦  «        }d|z   dz   |z   dz   |z   dz   S )NÚmidiPlayerDivzutf-8z
        <div id="a.  ">
            <p class="m21-trust-warning">
                This MIDI player only runs in <em>trusted</em> notebooks.
                In JupyterLab: File &rarr; Trust Notebook, then re-run this cell.
            </p>
        </div>
        <script>
        (function() {
            const outputId = "z";
            const b64 = "a•	  ";
            const jsUrl = "https://cdn.jsdelivr.net/npm/music21j@0.23.1/releases/music21.debug.min.js";
            const cssUrl = "https://cdn.jsdelivr.net/npm/music21j@0.23.1/releases/music21j.min.css";

            const root = document.getElementById(outputId);
            const warning = root && root.querySelector(".m21-trust-warning");
            if (warning) warning.remove();

            function play(music21) {
                music21.common.urls.soundfontUrl = "https://cdn.jsdelivr.net/gh/cuthbertLab/midi-js-soundfonts@2026.05.15/FluidR3_GM/";
                music21.common.urls.midiPlayer = "https://cdn.jsdelivr.net/gh/cuthbertLab/music21j@v0.23.1/webResources/midiPlayer";
                const mp = new music21.miditools.MidiPlayer();
                mp.addPlayer("#" + outputId);
                mp.base64Load("data:audio/midi;base64," + b64);
            }

            window.m21conf = window.m21conf || { loadSoundfont: false };
            if (!document.querySelector("link[data-music21j]")) {
                const link = document.createElement("link");
                link.rel = "stylesheet";
                link.href = cssUrl;
                link.dataset.music21j = "1";
                document.head.appendChild(link);
            }

            // RequireJS / AMD route (Sphinx/nbsphinx HTML, classic Jupyter):
            // the music21j UMD bundle registers as an AMD module when define.amd
            // is present and never sets window.music21, so the script-tag/global
            // path below would fire play() with music21 undefined.
            if (typeof window.require === "function"
                    && typeof window.require.config === "function") {
                window.require.config({
                    paths: { music21: jsUrl.replace(/\.js$/, "") }
                });
                window.require(["music21"], play);
                return;
            }

            if (window.music21) {
                play(window.music21);
                return;
            }
            let script = document.querySelector("script[data-music21j]");
            if (!script) {
                script = document.createElement("script");
                script.src = jsUrl;
                script.dataset.music21j = "1";
                document.head.appendChild(script);
            }
            script.addEventListener("load", function() { play(window.music21); });
        })();
        </script>)r6   Ú	b64encoder   ÚSingletonCounterr   Údecode)rc   ÚbinaryBase64rL   ÚoutputIdÚ
utf_binarys        r0   r^   r^   ¢   s�   € ÝÔ# NÑ3Ô3€LÝÔÑ!Ô!€AØ¥ Q Q¡S¤S¡¤Ñ)€HØ"×)Ò)¨'Ñ2Ô2€JðØñ ð#"ñ	"ð %-ñ	-ð0ñ
ð  *ñ
*ð3-ñ=ð =r2   )r   r   )
r   r   r   r   r   r   r   r   r   r   )rU   rV   )
r   r   r   r   r   r   r   r   rW   rX   )rd   r   rW   rf   )rd   r   rW   rX   )rc   rn   rW   r   )Ú__doc__Ú
__future__r   Úcollections.abcr   r6   rD   ÚtypingÚtÚmusic21r   Úmusic21.common.miscr   r   Úmusic21.converterr   r	   r
   r   ÚTYPE_CHECKINGr   Úmusic21.converter.subConvertersr   r   ÚEnvironmentr4   r=   re   r_   r`   r^   rV   r2   r0   ú<module>r‚      s·  ððð ð #Ð "Ð "Ð "Ð "Ð "Ø $Ð $Ð $Ð $Ð $Ð $Ø €€€Ø €€€Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à„?ð LØÐÐÐÐÐØKÐKÐKÐKÐKÐKÐKÐKà&ˆ{Ô&Ð'=Ñ>Ô>€ð Ø (ð	Zð "ðZð Zð Zð Zð Zð Zð~ Ø "ð	bð bð bð bð bð6ð ð ð ð;ð ;ð ;ð ;ð
Cð Cð Cð Cð Cð Cr2   