
    3j                        d Z ddlmZ ddlmZ ddlmZ ddlmZ  ej                  ddd      dd
       Z
 ej                  ddd      	 	 dd       ZdZedk(  rdd	lZ ej                          y	y	)z
Tools for generating new Streams from trees (fast, manipulable objects)

None of these things work acceptably yet.  This is super beta.
    )annotations)common)TreeException)timespanTreev7v8zuse chordify() insteadNc           
        ddl m} t        | t        j                        st        j
                  d      ||j                         }t        |      }|j                  |j                  j                         t        |d      r-|j                  r!|j                  d   j                  dd      }n|j                  dd      }| j                         } | j                  |       d}| j!                         t#        |      z   }t%        t'        |            }t        |j)                  |j*                              }t-        ||dd       D ]  \  }	}
|d   |	k  r|j/                  d       |dz  }|d   |	k  r| j1                  |	      }|
|	z
  }|dk  rt3        d	|d
|
dd|	d      |j5                  |      }||   j                  |        |S | j!                         }g }t-        ||dd       D ]X  \  }	}
| j1                  |	      }|
|	z
  }|dk  rt3        d	|d|
dd|	d      |j5                  |      }|j                  |       Z |j7                         }|D ]  }|j                  |        |S )a  
    DEPRECATED -- DO NOT USE.  Use stream.chordify() instead.

    Creates a score from the PitchedTimespan objects stored in this
    offset-tree.

    A "template" score may be used to provide measure and time-signature
    information.

    >>> score = corpus.parse('bwv66.6')
    >>> scoreTree = score.asTimespans()
    >>> #_DOCS_SHOW chordifiedScore = tree.toStream.chordified(scoreTree, templateStream=score)
    >>> #_DOCS_SHOW chordifiedScore.show('text')
    {0.0} <music21.instrument.Instrument 'P1: Soprano: Instrument 1'>
    {0.0} <music21.stream.Measure 0 offset=0.0>
        {0.0} <music21.clef.TrebleClef>
        {0.0} <music21.key.Key of f# minor>
        {0.0} <music21.meter.TimeSignature 4/4>
        {0.0} <music21.chord.Chord A3 E4 C#5>
        {0.5} <music21.chord.Chord G#3 B3 E4 B4>
    {1.0} <music21.stream.Measure 1 offset=1.0>
        {0.0} <music21.chord.Chord F#3 C#4 F#4 A4>
        {1.0} <music21.chord.Chord G#3 B3 E4 B4>
        {2.0} <music21.chord.Chord A3 E4 C#5>
        {3.0} <music21.chord.Chord G#3 B3 E4 E5>
    {5.0} <music21.stream.Measure 2 offset=5.0>
        {0.0} <music21.chord.Chord A3 E4 C#5>
        {0.5} <music21.chord.Chord C#3 E4 A4 C#5>
        {1.0} <music21.chord.Chord E3 E4 G#4 B4>
        {1.5} <music21.chord.Chord E3 D4 G#4 B4>
        {2.0} <music21.chord.Chord A2 C#4 E4 A4>
        {3.0} <music21.chord.Chord E#3 C#4 G#4 C#5>
    {9.0} <music21.stream.Measure 3 offset=9.0>
        {0.0} <music21.layout.SystemLayout>
    ...
    r   streamzNeeds a TimespanTree to runNpartsF)fillWithRestsretainVoices   z(Something is wrong with the verticality z its endTime fz is less than its offset z, its endTime )music21r   
isinstancer   TimespanTreeTimespanTreeExceptionmeasureOffsetMaplistappenddurationquarterLengthhasattrr   templatecopysplitAtallTimePointstuplesortedsetgetElementsByClassMeasurezippopgetVerticalityAtr   makeElementScore)	timespanstemplateStreamr   mostemplateOffsetsoutputStreammeasureIndexr   measureListoffsetendTimevertr   elementelementss                  B/DATA/.local/lib/python3.12/site-packages/music21/tree/toStream.py
chordifiedr6      s   L i!:!:;001NOO!--/s)~66DDENG,"(()//2;;%IN < PL *22UZ2[LNN$	/*!//1E/4JJs=12<::6>>JK"=-2CDOFG!!$.##A&! "!$. --f5D#f,Mq #>hmGA;6OPVWXz[  &&}5G%,,W5  E !//1"=-2CDOFG--f5D#f,Mq #>hnWQK7PQWXYPZ\  &&}5GOOG$  E ||~G(      c                    ddl m} | j                         }|j                         }|j                  D ]4  }|j                  |d      }|t        ||      }|j                  |       6 |S )z,
    DEPRECATED in v7 -- use chordify()
    r   r
   N)r   r   toPartwiseTimespanTreesr(   r   getr6   r   )tsTreer*   r   treeMappingoutputScorepartpartwiseTimespans
outputParts           r5   partwiserA   y   sm     002K,,.K$$'OOD$7$ 148
:& % r7    __main__)N)r;   z('music21.tree.timespanTree.TimespanTree'r*   z'music21.stream.Score')__doc__
__future__r   r   r   music21.exceptions21r   music21.treer   
deprecatedr6   rA   
_DOC_ORDER__name__mainTestrB   r7   r5   <module>rL      s   
 #  . % 478_ 9_B 4783 9" 
 zG r7   