def test_spannertools_OctavationSpanner_04(): r'''Adjacent one-note octavation changes are allowed; TODO: check for back-to-back set-octavation at format- time and compress to a single set-octavation. ''' staff = abjad.Staff([abjad.Note(n, (1, 8)) for n in range(8)]) spanner = abjad.OctavationSpanner(start=1) abjad.attach(spanner, staff[:1]) spanner = abjad.OctavationSpanner(start=2) abjad.attach(spanner, staff[1:2]) assert format(staff) == abjad.String.normalize(r''' \new Staff { \ottava #1 c'8 \ottava #0 \ottava #2 cs'8 \ottava #0 d'8 ef'8 e'8 f'8 fs'8 g'8 } ''') assert abjad.inspect(staff).is_well_formed()
def test_spannertools_OctavationSpanner_05(): r'''Overlapping octavation spanners are allowed but not well-formed. ''' staff = abjad.Staff([abjad.Note(n, (1, 8)) for n in range(8)]) spanner = abjad.OctavationSpanner(start=1) abjad.attach(spanner, staff[:4]) spanner = abjad.OctavationSpanner(start=2) abjad.attach(spanner, staff[2:6]) assert format(staff) == abjad.String.normalize(r''' \new Staff { \ottava #1 c'8 cs'8 \ottava #2 d'8 ef'8 \ottava #0 e'8 f'8 \ottava #0 fs'8 g'8 } ''') assert not abjad.inspect(staff).is_well_formed()
def test_spannertools_OctavationSpanner___eq___01(): r'''Spanner is strict comparator. ''' spanner_1 = abjad.OctavationSpanner() spanner_2 = abjad.OctavationSpanner() assert not spanner_1 == spanner_2
def test_lilypondproxytools_LilyPondGrobNameManager___setattr___30(): r'''Override LilyPond OctavationBracket grob. ''' voice = abjad.Voice("c'8 d'8 e'8 f'8") octavation_spanner = abjad.OctavationSpanner(start=1) abjad.attach(octavation_spanner, voice[:]) abjad.override(octavation_spanner).staff.ottava_bracket.staff_position = 4 assert format(voice) == abjad.String.normalize(r''' \new Voice { \ottava #1 \override Staff.OttavaBracket.staff-position = #4 c'8 d'8 e'8 \revert Staff.OttavaBracket.staff-position f'8 \ottava #0 } ''')
def test_spannertools_OctavationSpanner_adjust_automatically_01(): maker = abjad.NoteMaker() notes = maker([24, 26, 27, 29], [(1, 8)]) container = abjad.Container(notes) octavation_spanner = abjad.OctavationSpanner() abjad.attach(octavation_spanner, container[:]) octavation_spanner.adjust_automatically(ottava_breakpoint=14) assert format(container) == abjad.String.normalize(r""" { \ottava #1 c'''8 d'''8 ef'''8 f'''8 \ottava #0 } """) assert abjad.inspect(container).is_well_formed()
def test_spannertools_OctavationSpanner_03(): staff = abjad.Staff([abjad.Note(n, (1, 8)) for n in range(8)]) spanner = abjad.OctavationSpanner(start=1, stop=2) abjad.attach(spanner, staff[:4]) assert format(staff) == abjad.String.normalize(r''' \new Staff { \ottava #1 c'8 cs'8 d'8 ef'8 \ottava #2 e'8 f'8 fs'8 g'8 } ''') assert abjad.inspect(staff).is_well_formed()
def test_spannertools_OctavationSpanner_adjust_automatically_02(): note = abjad.Note(31, (1, 4)) container = abjad.Container([note]) assert container[0].written_pitch.to_staff_position() == \ abjad.StaffPosition(18) octavation_spanner = abjad.OctavationSpanner() abjad.attach(octavation_spanner, container[:]) octavation_spanner.adjust_automatically( ottava_breakpoint=15, quindecisima_breakpoint=19, ) assert format(container) == abjad.String.normalize(r""" { \ottava #1 g'''4 \ottava #0 } """) assert abjad.inspect(container).is_well_formed()
def test_spannertools_OctavationSpanner_01(): r'''Octavation has default start set to 1 and stop set to 0. ''' staff = abjad.Staff("c'8 c' c' c'") spanner = abjad.OctavationSpanner() abjad.attach(spanner, staff[:]) assert spanner.start == 1 assert spanner.stop == 0 assert format(staff) == abjad.String.normalize(r''' \new Staff { \ottava #1 c'8 c'8 c'8 c'8 \ottava #0 } ''') assert abjad.inspect(staff).is_well_formed()
def test_spannertools_OctavationSpanner___init___01(): r'''Initialize empty octavation spanner. ''' octavation = abjad.OctavationSpanner() assert isinstance(octavation, abjad.OctavationSpanner)