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
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
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
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()