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()
Пример #3
0
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
Пример #4
0
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)