§
    ƒØjÅ  ã                  óØ   — d 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  ej	        d¦  «        Z
 G d	„ d
ej        j        ¦  «        Zedk    rddlZ ej        ¦   «          dS dS )aÛ  
This is an example of how converter.subConverters.SubConverter
can be subclassed in order to parse and write an unsupported format
in this case, the format, .qm, consists of a line of letters separated
by spaces:

    C E G D F

and turns each of them into a quarter note in octave 4 in 4/4.

Consult the code to see how it works.  To use, call
`converter.registerSubConverter(converter.qmConverter.QMConverter)`
then `myStream = converter.parse('quarterMusic: C E G D F')`
é    )Úannotations)Ú	converter)Úenvironment)Úmeter)Únote)Ústreamzconverter.qmConverterc                  ó2   — e Zd ZdZdZdZdd„Zdd„Zd	d„ZdS )
ÚQMConverter)ÚqmÚquarterMusic)r   Nc                óN  — |                      ¦   «         }t          j        ¦   «         }t          j        d¦  «        }|                     d|¦  «         |D ]7}t          j        |¦  «        }d|j        _	        | 
                    |¦  «         Œ8|                     ¦   «         | _        dS )aÕ  
        Parse the data.  The number attribute is not used.

        >>> from music21.converter.qmConverter import QMConverter
        >>> qmc = QMConverter()
        >>> qmc.parseData('C D E G C')
        >>> q_stream = qmc.stream
        >>> q_stream.show('text')
        {0.0} <music21.stream.Measure 1 offset=0.0>
            {0.0} <music21.clef.TrebleClef>
            {0.0} <music21.meter.TimeSignature 4/4>
            {0.0} <music21.note.Note C>
            {1.0} <music21.note.Note D>
            {2.0} <music21.note.Note E>
            {3.0} <music21.note.Note G>
        {4.0} <music21.stream.Measure 2 offset=4.0>
            {0.0} <music21.note.Note C>
            {1.0} <music21.bar.Barline type=final>
        z4/4r   é   N)Úsplitr   ÚPartr   ÚTimeSignatureÚinsertr   ÚNoteÚdurationÚquarterLengthÚappendÚmakeMeasures)ÚselfÚstrDataÚnumberÚstrDataListÚsÚmÚbeatÚnObjs           ú’/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/music21/converter/qmConverter.pyÚ	parseDatazQMConverter.parseData(   s‰   € ð( —m’m‘o”oˆÝŒK‰MŒMˆÝÔ Ñ&Ô&ˆØ	�Š��A‰Œˆàð 	ð 	ˆDÝ”9˜T‘?”?ˆDØ*+ˆDŒMÔ'Ø�HŠH�T‰NŒNˆNˆNà—n’nÑ&Ô&ˆŒˆˆó    c                óª   — t          |dd¬¦  «        5 }|                      |                     ¦   «         ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )aï  
        parse a file from disk.  If QMConverter is registered, then any
        file ending in .qm will automatically be parsed.

        >>> import os
        >>> parserPath = common.getSourceFilePath() / 'converter'
        >>> testPath = parserPath / 'quarterMusicTestIn.qm'

        >>> from music21.converter.qmConverter import QMConverter
        >>> qmc = QMConverter()
        >>> qmc.parseFile(testPath)
        >>> s = qmc.stream
        >>> s.show('text')
        {0.0} <music21.stream.Measure 1 offset=0.0>
            {0.0} <music21.clef.TrebleClef>
            {0.0} <music21.meter.TimeSignature 4/4>
            {0.0} <music21.note.Note C>
            {1.0} <music21.note.Note E>
            {2.0} <music21.note.Note G>
            {3.0} <music21.note.Note F>
        {4.0} <music21.stream.Measure 2 offset=4.0>
            {0.0} <music21.note.Note E>
            {1.0} <music21.note.Note D>
            {2.0} <music21.note.Note C>
            {3.0} <music21.bar.Barline type=final>
        Úrúutf-8©ÚencodingN)Úopenr!   Úread)r   ÚfilePathr   ÚkeywordsÚfs        r    Ú	parseFilezQMConverter.parseFileH   s”   € õ6 �(˜C¨'Ð2Ñ2Ô2ð 	%°aØ�NŠN˜1Ÿ6š6™8œ8Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%s   “(AÁAÁA© c                ó  — d}|€t                                d¦  «        }|                     ¦   «         j        D ]}||j        z   dz   }Œ|dz  }t          |dd¬¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   |S )NÚ z.qmú ú
Úwr%   r&   )ÚenvironLocalÚgetTempFileÚflattenÚnotesÚnamer(   Úwrite)	r   ÚobjÚfmtÚfpÚ
subformatsr+   ÚmusicÚnr,   s	            r    r9   zQMConverter.writef   sÑ   € ØˆØˆ:Ý×)Ò)¨%Ñ0Ô0ˆBà—’‘”Ô$ð 	)ð 	)ˆAØ˜AœF‘N SÑ(ˆEˆEØ�‰ˆå�"�c GÐ,Ñ,Ô,ð 	°Ø�GŠG�E‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ˆ	s   ÁBÂBÂB)N)Nr.   )	Ú__name__Ú
__module__Ú__qualname__ÚregisterFormatsÚregisterInputExtensionsÚregisterOutputExtensionsr!   r-   r9   r.   r"   r    r
   r
   #   sb   € € € € € Ø,€OØ%ÐØ&Ðð'ð 'ð 'ð 'ð@%ð %ð %ð %ð<ð ð ð ð ð r"   r
   Ú__main__N)Ú__doc__Ú
__future__r   Úmusic21r   r   r   r   r   ÚEnvironmentr4   ÚsubConvertersÚSubConverterr
   r@   ÚmainTestr.   r"   r    ú<module>rN      sþ   ððð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à&ˆ{Ô&Ð'>Ñ?Ô?€ðOð Oð Oð Oð O�)Ô)Ô6ñ Oô Oð Oðd ˆzÒÐØ€N€N€NØ€GÔÑÔÐÐÐð Ðr"   