Bracket

class abjad.Bracket(music=None)

Bases: abjad.text.spanner.Text

Structural bracket to group any Abjad components at composition-time. Defaults to red.

abjad> t = Staff(construct.scale(4))
abjad> Bracket(t[:])
Bracket(c'8, d'8, e'8, f'8)

abjad> print t.format
\new Staff {
        \override TextSpanner #'dash-fraction = #1
        \override TextSpanner #'bound-details #'left #'text = #(markup #:draw-line '(0 . -1))
        \override TextSpanner #'staff-padding = #2
        \override TextSpanner #'color = #red
        \override TextSpanner #'thickness = #1.5
        \override TextSpanner #'bound-details #'right #'text = #(markup #:draw-line '(0 . -1))
        \override TextSpanner #'bound-details #'right-broken #'text = ##f
        \override TextSpanner #'bound-details #'left-broken #'text = ##f
        c'8 \startTextSpan
        d'8
        e'8
        f'8 \stopTextSpan
        \revert TextSpanner #'dash-fraction
        \revert TextSpanner #'bound-details #'left #'text
        \revert TextSpanner #'staff-padding
        \revert TextSpanner #'color
        \revert TextSpanner #'thickness
        \revert TextSpanner #'bound-details #'right #'text
        \revert TextSpanner #'bound-details #'right-broken #'text
        \revert TextSpanner #'bound-details #'left-broken #'text
}

Note

The Abjad Bracket formats as a LillyPond TextSpanner. The large number of overrides and reverts shown above are necessary to draw a 1.5-unit thick solid red spanner with nibs at the beginning and end but with no nibs at line breaks. These values may all be override after creating the bracket.

append(component)

Add component to right of spanner.

abjad> voice = Voice(construct.scale(4))
abjad> spanner = Spanner(voice[:2])
abjad> spanner
Spanner(c'8, d'8)
abjad> spanner.append(voice[2])
abjad> spanner
Spanner(c'8, d'8, e'8)
append_left(component)

Add component to left of spanner.

abjad> voice = Voice(construct.scale(4))
abjad> spanner = Spanner(voice[2:])
abjad> spanner
Spanner(e'8, f'8)
abjad> spanner.append_left(voice[1])
abjad> spanner
Spanner(d'8, e'8, f'8)
clear()

Remove all components from spanner.

abjad> voice = Voice(construct.scale(4))
abjad> spanner = Spanner(voice[:])
abjad> spanner
Spanner(c'8, d'8, e'8, f'8)
abjad> spanner.clear( )
abjad> spanner
Spanner( )
components

Return read-only tuple of components in spanner.

abjad> voice = Voice(construct.scale(4))
abjad> spanner = Spanner(voice[:2])
abjad> spanner.components
(Note(c', 8), Note(d', 8))

Changed in version 1.1.1: Now returns an (immutable) tuple instead of a (mutable) list.

duration

Return read-only reference to spanner duration interface.

Spanner duration interface implements written, preprolated and prolated attributes.

abjad> voice = Voice(construct.scale(4))
abjad> spanner = Spanner(voice[:2])
abjad> spanner
Spanner(c'8, d'8, e'8, f'8)
abjad> spanner.duration.written
Rational(1, 2)
abjad> spanner.duration.preprolated
Rational(1, 2)
abjad> spanner.duration.prolated
Rational(1, 2)

Spanner duration interface also implements seconds attribute.

abjad> Tempo(voice[:], TempoIndication(Rational(1, 8), 48))
abjad> spanner.duration.seconds
Rational(5, 1)
extend(components)

Add iterable components to right of spanner.

abjad> voice = Voice(construct.scale(4))
abjad> spanner = Spanner(voice([:2])
abjad> spanner
Spanner(c'8, d'8)
abjad> spanner.extend(voice[2:])
abjad> spanner
Spanner(c'8, d'8, e'8, f'8)
extend_left(components)

Add iterable components to left of spanner.

abjad> voice = Voice(construct.scale(4))
abjad> spanner = Spanner(voice([2:])
abjad> spanner
Spanner(e'8, f'8)
abjad> spanner.extend_left(voice[:2])
abjad> spanner
Spanner(c'8, d'8, e'8, f'8)
fracture(i, direction='both')

Fracture spanner at direction of component at index i.

Valid values for direction are 'left', 'right' and 'both'.

Return original, left and right spanners.

abjad> voice = Voice(construct.scale(4))
abjad> beam = Beam(voice[:])
abjad> beam
Beam(c'8, d'8, e'8, f'8)
abjad> beam.fracture(1, direction = 'left')
(Beam(c'8, d'8, e'8, f'8), Beam(c'8), Beam(d'8, e'8, f'8))
abjad> print voice.format
\new Voice {
        c'8 [ ]
        d'8 [
        e'8
        f'8 ]
}
fuse(spanner)

Fuse contiguous spanners.

Return new spanner.

abjad> voice = Voice(construct.scale(4))
abjad> left_beam = Beam(t[:2])
abjad> right_beam = Beam(t[2:])
abjad> print voice.format
\new Voice {
        c'8 [
        d'8 ]
        e'8 [
        f'8 ]
}
abjad> left_beam.fuse(right_beam)
[(Beam(c'8, d'8), Beam(e'8, f'8), Beam(c'8, d'8, e'8, f'8))]
abjad> print voice.format 
\new Voice {
        c'8 [
        d'8
        e'8
        f'8 ]
}

Todo

Return (immutable) tuple instead of (mutable) list.

index(component)

Return nonnegative integer index of component in spanner.

abjad> voice = Voice(construct.scale(4))
abjad> spanner = Spanner(voice[2:])
abjad> spanner
Spanner(e'8, f'8)
abjad> spanner.index(t[-2])
0
leaves

Return read-only tuple of leaves in spanner.

abjad> voice = Voice(construct.scale(4))
abjad> spanner = Spanner(voice[:2])
abjad> spanner.leaves
(Note(c', 8), Note(d', 8))

Changed in version 1.1.1: Now returns an (immutable) tuple instead of a (mutable) list.

offset

New in version 1.1.1.

Return read-only reference to spanner offset interface.

Spanner offset interface implements start and stop attributes.

abjad> voice = Voice(construct.scale(4))
abjad> spanner = Spanner(voice[2:])
abjad> spanner
Spanner(e'8, f'8)
abjad> spanner.offset.start
Rational(1, 4)
abjad> spanner.offset.stop
Rational(1, 2)
pop()

Remove and return rightmost component in spanner.

abjad> voice = Voice(construct.scale(4))
abjad> spanner = Spanner(voice[:])
abjad> spanner
Spanner(c'8, d'8, e'8, f'8)
abjad> spanner.pop( )
f'8
abjad> spanner
Spanner(c'8, d'8, e'8)
pop_left()

Remove and return leftmost component in spanner.

abjad> voice = Voice(construct.scale(4))
abjad> spanner = Spanner(voice[:])
abjad> spanner
Spanner(c'8, d'8, e'8, f'8)
abjad> spanner.pop_left( )
c'8
abjad> spanner
Spanner(d'8, e'8, f'8)
position

Previous topic

BeamComplexMeasured

Next topic

Crescendo

This Page