componenttools.copy_components_and_remove_all_spanners

abjad.tools.componenttools.copy_components_and_remove_all_spanners.copy_components_and_remove_all_spanners(components, n=1)[source]

New in version 1.1.

Clone components and remove all spanners.

The components must be thread-contiguous.

The steps taken by this function are as follows. Withdraw all components at any level in components from spanners. Deep copy unspanned components in components. Reapply spanners to all components at any level in components.

abjad> voice = Voice(Measure((2, 8), notetools.make_repeated_notes(2)) * 3)
abjad> pitchtools.set_ascending_named_diatonic_pitches_on_nontied_pitched_components_in_expr(voice)
abjad> beam = spannertools.BeamSpanner(voice.leaves[:4])
abjad> f(voice)
\new Voice {
    {
        \time 2/8
        c'8 [
        d'8
    }
    {
        \time 2/8
        e'8
        f'8 ]
    }
    {
        \time 2/8
        g'8
        a'8
    }
}
abjad> result = componenttools.copy_components_and_remove_all_spanners(voice.leaves[2:4])
abjad> result
(Note("e'8"), Note("f'8"))
abjad> new_voice = Voice(result)
abjad> f(new_voice)
\new Voice {
    e'8
    f'8
}
abjad> voice.leaves[2] is new_voice.leaves[0]
False

Clone components a total of n times.

abjad> result = componenttools.copy_components_and_remove_all_spanners(voice.leaves[2:4], n = 3)
abjad> result
(Note("e'8"), Note("f'8"), Note("e'8"), Note("f'8"), Note("e'8"), Note("f'8"))
abjad> new_voice = Voice(result)
abjad> f(new_voice)
\new Voice {
    e'8
    f'8
    e'8
    f'8
    e'8
    f'8
}

Changed in version 2.0: renamed clone.unspan() to componenttools.copy_components_and_remove_all_spanners().

Changed in version 2.0: renamed componenttools.clone_components_and_remove_all_spanners() to componenttools.copy_components_and_remove_all_spanners().

This Page