def test_spannertools_DuratedComplexBeam___eq___01():
    r'''Spanner is strict comparator.
    '''

    spanner_1 = abjad.DuratedComplexBeam()
    spanner_2 = abjad.DuratedComplexBeam()

    assert not spanner_1 == spanner_2
Exemple #2
0
def test_spannertools_DuratedComplexBeam_direction_01():

    container = abjad.Container("c'16 d'16 e'16 f'16")

    beam = abjad.DuratedComplexBeam(
        durations=[(1, 8), (1, 8)],
        span_beam_count=1,
        direction=abjad.Up,
    )

    abjad.attach(beam, container[:])

    assert format(container) == abjad.String.normalize(r'''
        {
            \set stemLeftBeamCount = 0
            \set stemRightBeamCount = 2
            c'16
            ^ [
            \set stemLeftBeamCount = 2
            \set stemRightBeamCount = 1
            d'16
            \set stemLeftBeamCount = 1
            \set stemRightBeamCount = 2
            e'16
            \set stemLeftBeamCount = 2
            \set stemRightBeamCount = 0
            f'16
            ]
        }
        ''')

    assert abjad.inspect(container).is_well_formed()
def test_spannertools_DuratedComplexBeam___copy___01():

    staff = abjad.Staff([
        abjad.Container("c'32 d'32 e'32"),
        abjad.Container("f'32 g'32 a'32"),
        abjad.Container("b'32 c'32")
    ])
    durations = [abjad.inspect(x).get_duration() for x in staff]

    beam = abjad.DuratedComplexBeam(
        durations=durations,
        span_beam_count=2,
        direction=abjad.Down,
    )
    leaves = abjad.select(staff).leaves()
    abjad.attach(beam, leaves)

    new_staff = abjad.mutate(staff).copy()
    new_leaves = abjad.select(new_staff).leaves()
    new_beam = abjad.inspect(new_leaves[0]).get_spanner(abjad.Beam)

    assert format(staff) == format(new_staff)
    assert new_beam.durations == beam.durations
    assert new_beam.span_beam_count == beam.span_beam_count
    assert new_beam.isolated_nib_direction == beam.isolated_nib_direction
    assert new_beam.direction == beam.direction
Exemple #4
0
 def _make_music(self, divisions):
     import abjad
     selections = []
     for division in divisions:
         prototype = abjad.NonreducedFraction
         assert isinstance(division, prototype), division
     for division in divisions:
         container = self._make_container(division)
         selection = abjad.select(container)
         selections.append(selection)
     beam_specifier = self._get_beam_specifier()
     if beam_specifier.beam_divisions_together:
         durations = []
         for selection in selections:
             duration = selection.get_duration()
             durations.append(duration)
         beam = abjad.DuratedComplexBeam(
             durations=durations,
             span_beam_count=1,
             nibs_towards_nonbeamable_components=False,
             )
         components = []
         for selection in selections:
             components.extend(selection)
         leaves = abjad.select(components).leaves()
         abjad.attach(beam, leaves)
     elif beam_specifier.beam_each_division:
         for selection in selections:
             beam = abjad.MultipartBeam()
             leaves = abjad.select(selection).leaves()
             abjad.attach(beam, leaves)
     return selections
Exemple #5
0
def test_spannertools_DuratedComplexBeam_span_beam_count_02():
    r'''2-beam span between adjacent groups of 1/16th notes.
    '''

    container = abjad.Container("c'16 d'16 e'16 f'16")
    beam = abjad.DuratedComplexBeam(
        durations=[(1, 8), (1, 8)],
        span_beam_count=2,
        )
    abjad.attach(beam, container[:])

    assert format(container) == abjad.String.normalize(
        r'''
        {
            \set stemLeftBeamCount = 0
            \set stemRightBeamCount = 2
            c'16
            [
            \set stemLeftBeamCount = 2
            \set stemRightBeamCount = 2
            d'16
            \set stemLeftBeamCount = 2
            \set stemRightBeamCount = 2
            e'16
            \set stemLeftBeamCount = 2
            \set stemRightBeamCount = 0
            f'16
            ]
        }
        '''
        )

    assert abjad.inspect(container).is_well_formed()
def test_spannertools_DuratedComplexBeam_isolated_nib_direction_02():
    r'''Do not span isolated_nib_direction note when isolated_nib_direction
    is set to false.
    '''

    container = abjad.Container("c'8")
    beam = abjad.DuratedComplexBeam(isolated_nib_direction=False)
    abjad.attach(beam, container[:])

    assert format(container) == abjad.String.normalize(
        r'''
        {
            c'8
        }
        '''
        )

    assert abjad.inspect(container).is_well_formed()
    def make_spanner_score_03(self):
        r'''Make 200-note voice with durated complex beam spanner
        on every 100 notes.

        2.12 (r9710) initialization:        251,606 function calls
        2.12 (r9724) initialization:        249,369 function calls

        2.12 (r9703) LilyPond format:       509,752 function calls
        2.12 (r9710) LilyPond format:       510,556 function calls
        2.12 (r9724) LilyPond format:       525,463 function calls

        '''
        import abjad
        voice = abjad.Voice(200 * abjad.Note("c'16"))
        for part in abjad.sequence(voice[:]).partition_by_counts(
            [100],
                cyclic=True,
        ):
            beam = abjad.DuratedComplexBeam()
            abjad.attach(beam, part)
        return voice
    def make_spanner_score_02(self):
        r'''Make 200-note voice with durated complex beam spanner
        on every 20 notes.

        2.12 (r9710) initialization:        250,954 function calls
        2.12 (r9724) initialization:        248,717 function calls

        2.12 (r9703) LilyPond format:       495,768 function calls
        2.12 (r9710) LilyPond format:       496,572 function calls
        2.12 (r9724) LilyPond format:       511,471 function calls

        '''
        import abjad
        voice = abjad.Voice(200 * abjad.Note("c'16"))
        for part in abjad.sequence(voice[:]).partition_by_counts(
            [20],
                cyclic=True,
        ):
            beam = abjad.DuratedComplexBeam()
            abjad.attach(beam, part)
        return voice
    def make_spanner_score_01(self):
        r'''Make 200-note voice with durated complex beam spanner
        on every 4 notes.

        2.12 (r9710) initialization:        248,654 function calls
        2.12 (r9724) initialization:        248,660 function calls

        2.12 (r9703) LilyPond format:       425,848 function calls
        2.12 (r9710) LilyPond format:       426,652 function calls
        2.12 (r9724) LilyPond format:       441,884 function calls

        '''
        import abjad
        voice = abjad.Voice(200 * abjad.Note("c'16"))
        for part in abjad.sequence(voice[:]).partition_by_counts(
            [4],
                cyclic=True,
        ):
            beam = abjad.DuratedComplexBeam()
            abjad.attach(beam, part)
        return voice
def test_spannertools_DuratedComplexBeam_isolated_nib_direction_01():
    r'''Span isolated_nib_direction note when isolated_nib_direction is set to
    true.
    '''

    container = abjad.Container("c'8")
    beam = abjad.DuratedComplexBeam(isolated_nib_direction=True)
    abjad.attach(beam, container[:])

    assert format(container) == abjad.String.normalize(
        r'''
        {
            \set stemLeftBeamCount = 1
            \set stemRightBeamCount = 1
            c'8
            [
            ]
        }
        '''
        )

    assert abjad.inspect(container).is_well_formed()
def test_spannertools_DuratedComplexBeam_isolated_nib_direction_03():
    r'''Ignore isolated_nib_direction when spanner spans more than one leaf.
    '''

    container = abjad.Container("c'8 d'8")
    beam = abjad.DuratedComplexBeam(isolated_nib_direction=False)
    abjad.attach(beam, container[:])

    assert format(container) == abjad.String.normalize(
        r'''
        {
            \set stemLeftBeamCount = 0
            \set stemRightBeamCount = 1
            c'8
            [
            \set stemLeftBeamCount = 1
            \set stemRightBeamCount = 0
            d'8
            ]
        }
        '''
        )

    assert abjad.inspect(container).is_well_formed()