def test_systemtools_StorageFormatAgent_get_import_statements_02(): subject = selectortools.Selector().by_leaf() agent = systemtools.StorageFormatAgent(subject) assert agent.get_import_statements() == ( 'from abjad.tools import scoretools', 'from abjad.tools import selectortools', )
def select_pitched_runs(expr=None): r'''Selects first logical tie in pitched runs. .. container:: example :: >>> selector = selectortools.select_pitched_runs() >>> print(format(selector)) selectortools.Selector( callbacks=( selectortools.PrototypeSelectorCallback( prototype=scoretools.Leaf, ), selectortools.RunSelectorCallback( prototype=( scoretools.Note, scoretools.Chord, ), ), ), ) :: >>> staff = Staff() >>> staff.extend(r"c'4. d'8 ~ \times 2/3 { d'4 r4 e'4 ~ } e'8 f'4.") >>> print(format(staff)) \new Staff { c'4. d'8 ~ \times 2/3 { d'4 r4 e'4 ~ } e'8 f'4. } :: >>> for x in selector(staff): ... x ... Selection(Note("c'4."), Note("d'8"), Note("d'4")) Selection(Note("e'4"), Note("e'8"), Note("f'4.")) ''' from abjad.tools import scoretools from abjad.tools import selectortools selector = selectortools.Selector() selector = selector.by_leaves() selector = selector.by_run((scoretools.Note, scoretools.Chord)) if expr is None: return selector return selector(expr)
def select(expr=None): r'''Selects `expr`. .. container:: example **Example 1.** Returns selection when `expr` is not none: :: >>> staff = Staff("c'8 d'8 e'8 f'8") >>> select(staff[:2]) Selection(Note("c'8"), Note("d'8")) .. container:: example **Example 2.** Returns selector when `expr` is none: :: >>> select() Selector() Returns selection. ''' from abjad.tools import scoretools from abjad.tools import selectiontools from abjad.tools import selectortools from abjad.tools import spannertools if expr is None: return selectortools.Selector() Selection = selectiontools.Selection if isinstance(expr, scoretools.Component): return selectiontools.Selection(expr) elif hasattr(expr, '_music'): music = expr._music return selectiontools.Selection(music) elif isinstance(expr, spannertools.Spanner): music = expr._components return selectiontools.Selection(music) elif expr is None: return selectiontools.Selection() else: return selectiontools.Selection(expr)
# -*- encoding: utf-8 -*- import consort from abjad.tools import rhythmmakertools from abjad.tools import selectortools left_hand_dietro_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( clef_spanner=consort.AttachmentExpression( attachments=consort.ClefSpanner( clef='percussion', overrides={ 'note_head__style': 'cross', }, ), selector=selectortools.Selector().by_leaf(), ), ), pitch_handler=consort.AbsolutePitchHandler(logical_tie_expressions=( consort.ChordExpression("g b"), consort.ChordExpression("b d'"), consort.ChordExpression("d' f'"), ), ), rhythm_maker=rhythmmakertools.NoteRhythmMaker( tie_specifier=rhythmmakertools.TieSpecifier( tie_across_divisions=False, ), ), )
schemetools.Scheme('ly:text-interface::print', ), 'trill_pitch_head__text': markuptools.Markup.musicglyph( 'noteheads.s0harmonic', direction=None, ), }, ) stopped_third_trill = consort.ConsortTrillSpanner(interval='+m3', ) intermittent_trills = consort.AttachmentExpression( attachments=( harmonic_fourth_trill, harmonic_third_trill, harmonic_fourth_trill, stopped_third_trill, stopped_third_trill, ), selector=selectortools.Selector()\ .by_leaf()\ [:-1]\ .append_callback(consort.AfterGraceSelectorCallback())\ .by_counts( [-3, 2, -2, 1, -1, 2, -1, 1], cyclic=True, overhang=False, fuse_overhang=False, rotate=True, ), )
from abjad.tools import indicatortools from abjad.tools import patterntools from abjad.tools import rhythmmakertools from abjad.tools import scoretools from abjad.tools import selectortools from abjad.tools import spannertools from ersilia.materials import abbreviations import consort piano_agitato_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( accents=consort.AttachmentExpression( attachments=indicatortools.Articulation('accent'), selector=selectortools.Selector() .by_logical_tie(pitched=True) .by_duration('==', (1, 8), preprolated=True) [0], ), dynamic_expressions=consort.DynamicExpression( division_period=2, dynamic_tokens='mf mp fff', start_dynamic_tokens='f', stop_dynamic_tokens='mf', ), mordent=consort.AttachmentExpression( attachments=indicatortools.Articulation('mordent'), selector=selectortools.Selector() .by_logical_tie(pitched=True) .by_duration('>=', (1, 8), preprolated=True) .by_class(scoretools.Note) [0],
### ATTACHMENTS ### intermittent_trills = armilla.materials.intermittent_trills ### MUSIC SPECIFIERS ### rh_circular = new( armilla.materials.right_hand_circular_music_specifier, attachment_handler__stem_tremolo_spanner=consort.AttachmentExpression( attachments=( None, spannertools.StemTremoloSpanner(), ), selector=selectortools.Selector().by_leaf().by_counts( [5, 1, 4, 2, 6, 3], cyclic=True, )), ) lh_glissandi = new( armilla.materials.left_hand_glissandi_music_specifier, pitch_handler__pitch_specifier=consort.PitchSpecifier( pitch_segments=( "a c' a a c'", "c' ef' g c' c' ef'", "a' c'' a' c'' c'' g' a'", ), ratio=(1, 1, 2), ), attachment_handler__trill_spanner=intermittent_trills, )
# -*- encoding: utf-8 -*- import consort from abjad.tools import indicatortools from abjad.tools import rhythmmakertools from abjad.tools import scoretools from abjad.tools import selectortools from abjad.tools import spannertools right_hand_pizzicati_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( bow_contact_points=consort.AttachmentExpression( attachments=(indicatortools.BowContactPoint(None), ), selector=selectortools.Selector().by_leaf().flatten(), ), bow_contact_spanner=spannertools.BowContactSpanner(), dynamic_expressions=consort.DynamicExpression(dynamic_tokens='mf', ), string_contact_points=consort.AttachmentExpression( attachments=indicatortools.StringContactPoint('pizzicato'), scope=scoretools.Voice, selector=selectortools.Selector().by_leaf()[0]), string_contact_spanner=consort.StringContactSpanner(), ), rhythm_maker=rhythmmakertools.IncisedRhythmMaker( incise_specifier=rhythmmakertools.InciseSpecifier( fill_with_notes=False, prefix_counts=(1, 1, 1, 1, 2, 1), prefix_talea=(1, ), suffix_talea=(1, ), suffix_counts=(0, ), talea_denominator=16, ), ),
from abjad.tools import indicatortools from abjad.tools import rhythmmakertools from abjad.tools import scoretools from abjad.tools import selectortools from abjad.tools import spannertools guitar_continuo_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( accents=consort.AttachmentExpression( attachments=indicatortools.Articulation('accent'), selector=selectortools.Selector() .by_leaf() .by_run(scoretools.Note) .by_counts( [3, 3, 4], cyclic=True, overhang=True, fuse_overhang=True, ) [0], ), dynamic_expressions=consort.DynamicExpression( start_dynamic_tokens='p mp', only_first=True, ), slur=consort.AttachmentExpression( attachments=spannertools.Slur(), selector=selectortools.Selector() .by_leaf() .by_run(scoretools.Note) .by_counts(
indicatortools.BowContactPoint(0), indicatortools.BowContactPoint((1, 8)), indicatortools.BowContactPoint(0), indicatortools.BowContactPoint((1, 8)), indicatortools.BowContactPoint((1, 4)), indicatortools.BowContactPoint((1, 8)), indicatortools.BowContactPoint((3, 8)), indicatortools.BowContactPoint((1, 4)), indicatortools.BowContactPoint((3, 8)), indicatortools.BowContactPoint((1, 2)), indicatortools.BowContactPoint((5, 8)), indicatortools.BowContactPoint((3, 4)), indicatortools.BowContactPoint((7, 8)), indicatortools.BowContactPoint(1), ), selector=selectortools.Selector().by_leaf().flatten(), ), bow_contact_spanner=spannertools.BowContactSpanner(), dynamic_expressions=consort.DynamicExpression( dynamic_tokens='p ppp p ppp p ppp f', ), string_contact_points=consort.AttachmentExpression( attachments=( indicatortools.StringContactPoint('ordinario'), indicatortools.StringContactPoint('sul tasto'), indicatortools.StringContactPoint('molto sul tasto'), ), scope=scoretools.Voice, selector=selectortools.Selector().append_callback( consort.PhrasedSelectorCallback()).by_counts( [1, -2, 1, -2, 1, -1], cyclic=True,
from abjad.tools import rhythmmakertools from abjad.tools import selectortools from abjad.tools import spannertools string_legato_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( dynamic_expressions=consort.DynamicExpression( dynamic_tokens='p mf', start_dynamic_tokens='niente fp', stop_dynamic_tokens='niente ff'), glissando=consort.Glissando(), tenuti=consort.AttachmentExpression( attachments=indicatortools.Articulation('tenuto'), selector=selectortools.Selector().by_leaf().by_logical_tie( pitched=True).by_pattern( patterntools.Pattern( indices=[3], period=4, ), )[0]), tremolo_trill=consort.AttachmentExpression( attachments=( spannertools.ComplexTrillSpanner(interval='+m3'), spannertools.StemTremoloSpanner(), spannertools.ComplexTrillSpanner(interval='+m3'), spannertools.ComplexTrillSpanner(interval='+M2'), spannertools.StemTremoloSpanner(), ), selector=selectortools.Selector().by_leaf().by_logical_tie( pitched=True).by_pattern( patterntools.Pattern( indices=[0, 1, 2], period=4,
# -*- encoding: utf-8 -*- import consort import ersilia from abjad.tools import indicatortools from abjad.tools import patterntools from abjad.tools import pitchtools from abjad.tools import rhythmmakertools from abjad.tools import selectortools from abjad.tools import spannertools from ersilia.materials import abbreviations percussion_low_pedal_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( accents=consort.AttachmentExpression( attachments=indicatortools.Articulation('accent'), selector=selectortools.Selector().by_logical_tie().get_slice( start=1, apply_to_each=False)[0]), bass_drum_indication=consort.AttachmentExpression( attachments=consort.AttachmentExpression( attachments=abbreviations.make_text_spanner('bass drum'), selector=selectortools.select_pitched_runs(), ), selector=selectortools.Selector().by_logical_tie().by_pitch( pitches=ersilia.Percussion.BASS_DRUM).by_contiguity().by_leaf( )), tam_tam_indication=consort.AttachmentExpression( attachments=consort.AttachmentExpression( attachments=abbreviations.make_text_spanner('tam'), selector=selectortools.select_pitched_runs(), ), selector=selectortools.Selector().by_logical_tie().by_pitch( pitches=ersilia.Percussion.TAM_TAM).by_contiguity().by_leaf()),
# -*- encoding: utf-8 -*- import consort from abjad.tools import indicatortools from abjad.tools import selectortools intermittent_circular = consort.AttachmentExpression( attachments=indicatortools.BowMotionTechnique('circular'), selector=selectortools.Selector().by_leaf()[:-1].by_counts( [-3, 1, -4, 2, -1, 3, -5, 2], ).flatten(), )
percussion_marimba_agitato_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( accents=consort.AttachmentExpression( attachments=indicatortools.Articulation('accent'), selector=selectortools.select_pitched_runs()[0], ), chords=consort.AttachmentExpression( attachments=[ consort.ChordExpression(chord_expr=[0, 3]), consort.ChordExpression(chord_expr=[0, 5]), ], is_destructive=True, selector=selectortools.Selector().by_logical_tie( pitched=True).by_duration('==', (1, 16), preprolated=True).by_pattern( patterntools.Pattern( indices=[0, 3], period=7, ), ), ), clef_spanner=consort.ClefSpannerExpression(), dynamic_expressions=consort.DynamicExpression( division_period=2, dynamic_tokens='mf mp fff', start_dynamic_tokens='f', stop_dynamic_tokens='mf', ), staccati=consort.AttachmentExpression( attachments=indicatortools.Articulation('staccato'), selector=selectortools.Selector().by_logical_tie( pitched=True).by_duration('==', (1, 16), preprolated=True)[0]),
# -*- encoding: utf-8 -*- import consort from abjad.tools import indicatortools from abjad.tools import rhythmmakertools from abjad.tools import scoretools from abjad.tools import selectortools from abjad.tools import spannertools from ersilia.materials import abbreviations shaker_tremolo_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( accents=consort.AttachmentExpression( attachments=indicatortools.Articulation('accent'), selector=selectortools.Selector() .by_leaf() .by_run(scoretools.Note) [0], ), dynamic_expression=consort.DynamicExpression( dynamic_tokens='fp', ), percussion_staff=abbreviations.percussion_staff, text_spanner=consort.AttachmentExpression( attachments=abbreviations.make_text_spanner('shaker'), selector=selectortools.Selector().by_leaf(), ), tremolo_spanner=spannertools.StemTremoloSpanner(), ), color='blue', labels=['shakers'], pitch_handler=consort.AbsolutePitchHandler(
import consort from abjad.tools import indicatortools from abjad.tools import markuptools from abjad.tools import pitchtools from abjad.tools import selectortools from abjad.tools import spannertools laissez_vibrer = consort.AttachmentExpression( attachments=[ [ indicatortools.LaissezVibrer(), markuptools.Markup( 'L.V', Up).caps().tiny().pad_around(0.5).box().pad_around(0.5) ], ], selector=selectortools.Selector().by_logical_tie( pitched=True).by_contiguity().by_length('==', 1).by_leaf()[0]) black_keys_spanner = spannertools.make_solid_text_spanner_with_nib( markuptools.Markup.flat().vcenter(), ) chromatic_keys_spanner = spannertools.make_solid_text_spanner_with_nib( markuptools.Markup.concat([ markuptools.Markup.natural(), markuptools.Markup.hspace(0.1), markuptools.Markup.flat(), ]).vcenter(), ) white_keys_spanner = spannertools.make_solid_text_spanner_with_nib( markuptools.Markup.natural().vcenter(), ) percussion_staff = consort.AttachmentExpression(attachments=[
### SEGMENT MAKER ### segment_maker = armilla.ArmillaSegmentMaker( desired_duration_in_seconds=60, discard_final_silence=False, name='The Long Dune (ii)', repeat=False, tempo=indicatortools.Tempo((1, 4), 36), ) ### ATTACHMENTS ### dietro_ponticello = consort.AttachmentExpression( attachments=indicatortools.StringContactPoint('dietro ponticello'), scope=scoretools.Voice, selector=selectortools.Selector().by_leaf(), ) dynamics_a = dynamic_expressions = consort.DynamicExpression( dynamic_tokens='p mf p ppp f p ff', ) dynamics_b = dynamic_expressions = consort.DynamicExpression( dynamic_tokens='f p f mf ff p fff f fff mf fff', ) intermittent_accents = armilla.materials.intermittent_accents intermittent_circular = armilla.materials.intermittent_circular intermittent_glissandi = armilla.materials.intermittent_glissandi intermittent_tremoli = armilla.materials.intermittent_tremoli ### MUSIC SPECIFIERS ### lh_dietro = new( armilla.materials.left_hand_dietro_music_specifier, minimum_phrase_duration=durationtools.Duration(1, 4),
from abjad.tools import indicatortools from abjad.tools import patterntools from abjad.tools import rhythmmakertools from abjad.tools import selectortools from abjad.tools import spannertools from ersilia.materials import abbreviations wind_tremolo_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( outer_accents=consort.AttachmentExpression( attachments=indicatortools.Articulation('accent'), selector=selectortools.select_pitched_runs()[0], ), inner_accents=consort.AttachmentExpression( attachments=indicatortools.Articulation('accent'), selector=selectortools.Selector().by_logical_tie().by_duration( '==', (1, 8), preprolated=True).with_next_leaf()), dynamic_expressions=consort.DynamicExpression( division_period=2, dynamic_tokens='p ppp mp', start_dynamic_tokens='fp', stop_dynamic_tokens='mf ppp', ), trill_spanner=consort.AttachmentExpression( attachments=spannertools.ComplexTrillSpanner('M2'), selector=selectortools.select_pitched_runs(), ), ), color='red', labels=[], pitch_handler=consort.PitchClassPitchHandler( deviations=[0, 1],
string_agitato_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( dynamic_expressions=consort.DynamicExpression( division_period=2, dynamic_tokens='mp fff', start_dynamic_tokens='f p', stop_dynamic_tokens='p f', ), harmonics=consort.AttachmentExpression( attachments=consort.HarmonicExpression('P4'), is_destructive=True, selector=selectortools.Selector().by_logical_tie( pitched=True).by_duration('==', (1, 16), preprolated=True).by_pattern( pattern=patterntools.Pattern( indices=[2, 4], period=5, ), )), slur=consort.AttachmentExpression( attachments=spannertools.Slur(), selector=selectortools.Selector().by_logical_tie( pitched=True).by_duration( '==', (1, 16), preprolated=True).by_contiguity().by_length('>', 1).by_leaf()), staccati=consort.AttachmentExpression( attachments=indicatortools.Articulation('staccato'), selector=selectortools.Selector().by_logical_tie( pitched=True).by_duration( '==', (1, 16),
import consort from abjad.tools import indicatortools from abjad.tools import rhythmmakertools from abjad.tools import scoretools from abjad.tools import selectortools from ersilia.materials import abbreviations piano_pointillist_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( dynamic_expressions=consort.DynamicExpression( start_dynamic_tokens='ppp', only_first=True, ), mordent=consort.AttachmentExpression( attachments=indicatortools.Articulation('mordent'), selector=selectortools.Selector().by_class( scoretools.Note).by_logical_tie()[0]), tenuti=consort.AttachmentExpression( attachments=indicatortools.Articulation('tenuto'), selector=selectortools.Selector().by_logical_tie(pitched=True)[0]), ), color='darkyellow', labels=['pedaled'], pitch_handler=consort.PitchClassPitchHandler( logical_tie_expressions=( None, consort.ChordExpression([-2, 3]), consort.ChordExpression([0, 3]), None, consort.ChordExpression([-4, 5]), ), pitch_specifier=abbreviations.agitato_pitch_specifier,
# -*- encoding: utf-8 -*- import consort from abjad.tools import selectortools intermittent_glissandi = consort.AttachmentExpression( attachments=consort.Glissando( allow_repeat_pitches=False, allow_ties=False, parenthesize_repeated_pitches=True, ), selector=selectortools.Selector() .by_leaf() [:-1] .append_callback(consort.AfterGraceSelectorCallback()) .by_counts( [-3, 4, -2, 3, -1, 4], cyclic=True, overhang=True, fuse_overhang=True, rotate=True, ), )
import ersilia from abjad.tools import patterntools from abjad.tools import pitchtools from abjad.tools import rhythmmakertools from abjad.tools import selectortools from abjad.tools import indicatortools from abjad.tools import spannertools from ersilia.materials import abbreviations percussion_temple_block_fanfare_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( accent=consort.AttachmentExpression( attachments=indicatortools.Articulation('accent'), selector=selectortools.Selector() .by_logical_tie(pitched=True) .by_duration('>', (1, 16), preprolated=True) [0] ), chords=consort.AttachmentExpression( attachments=( consort.ChordExpression( chord_expr=pitchtools.PitchSegment([ ersilia.Percussion.WOOD_BLOCK_5, ersilia.Percussion.WOOD_BLOCK_4, ]), ), None, consort.ChordExpression( chord_expr=pitchtools.PitchSegment([ ersilia.Percussion.WOOD_BLOCK_4, ersilia.Percussion.WOOD_BLOCK_3,
# -*- encoding: utf-8 -*- import consort from abjad.tools import indicatortools from abjad.tools import rhythmmakertools from abjad.tools import selectortools from abjad.tools import spannertools from ersilia.materials import abbreviations percussion_marimba_ostinato_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( clef_spanner=consort.ClefSpannerExpression(), deadstroke=consort.AttachmentExpression( attachments=indicatortools.Articulation('stopped'), selector=selectortools.Selector().by_logical_tie( pitched=True).by_duration( '==', (1, 16), preprolated=True).by_contiguity().by_length( '==', 1).by_leaf()[0]), dynamic_expressions=consort.DynamicExpression(dynamic_tokens='p', ), slur=consort.AttachmentExpression( attachments=spannertools.Slur(), selector=selectortools.Selector().by_logical_tie( pitched=True).by_duration( '==', (1, 16), preprolated=True).by_contiguity().by_length('>', 1).by_leaf()), staccati=consort.AttachmentExpression( attachments=indicatortools.Articulation('staccato'), selector=selectortools.Selector().by_logical_tie( pitched=True).by_duration( '==', (1, 16), preprolated=True).by_contiguity().by_length( '>', 1).by_leaf()[-1]),
# -*- encoding: utf-8 -*- import consort from abjad.tools import durationtools from abjad.tools import rhythmmakertools from abjad.tools import selectortools left_hand_glissandi_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( glissando=consort.AttachmentExpression( attachments=consort.Glissando( allow_repeat_pitches=False, allow_ties=False, parenthesize_repeated_pitches=True, ), selector=selectortools.Selector().by_leaf().append_callback( consort.AfterGraceSelectorCallback())), ), grace_handler=consort.GraceHandler( counts=(0, 1, 2, 0, 0, 0), only_if_preceded_by_nonsilence=True, ), pitch_handler=consort.AbsolutePitchHandler( deviations=(0, 0, 0, 0, 0.5, 0), forbid_repetitions=True, grace_expressions=( consort.HarmonicExpression('P4'), consort.HarmonicExpression('M3'), consort.HarmonicExpression('P5'), ), pitch_specifier=consort.PitchSpecifier( pitch_segments=( "a c' a a c'",
# -*- encoding: utf-8 -*- import consort from abjad.tools import indicatortools from abjad.tools import markuptools from abjad.tools import patterntools from abjad.tools import rhythmmakertools from abjad.tools import selectortools from ersilia.materials import abbreviations pitch_pipe_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( accents=consort.AttachmentExpression( attachments=indicatortools.Articulation('accent'), selector=selectortools.Selector().by_logical_tie().get_slice( start=1, apply_to_each=False)[0]), dynamic_expressions=consort.DynamicExpression( division_period=2, dynamic_tokens='p ppp mf', start_dynamic_tokens='niente fp', ), inhale_exhale=consort.AttachmentExpression( attachments=[ markuptools.Markup( 'exhale', Up).italic().smaller().pad_around(0.5).box(), markuptools.Markup( 'inhale', Up).italic().smaller().pad_around(0.5).box(), markuptools.Markup( 'inhale', Up).italic().smaller().pad_around(0.5).box(), ], selector=selectortools.select_pitched_runs()[0], ),
# -*- encoding: utf-8 -*- import consort from abjad.tools import indicatortools from abjad.tools import rhythmmakertools from abjad.tools import selectortools from ersilia.materials import abbreviations string_pointillist_music_specifier = consort.MusicSpecifier( attachment_handler=consort.AttachmentHandler( mordents=consort.AttachmentExpression( attachments=indicatortools.Articulation('mordent'), selector=selectortools.Selector() .by_logical_tie(pitched=True) [0] ), dynamic_expressions=consort.DynamicExpression( start_dynamic_tokens='ppp', only_first=True, ), text_spanner=consort.AttachmentExpression( attachments=consort.AttachmentExpression( attachments=abbreviations.make_text_spanner('pizz.'), selector=selectortools.Selector().by_leaf(), ), selector=selectortools.Selector().by_leaf(), ), ), color='darkyellow', labels=[], pitch_handler=consort.PitchClassPitchHandler(
# -*- encoding: utf-8 -*- import consort from abjad.tools import selectortools from abjad.tools import spannertools intermittent_tremoli = consort.AttachmentExpression( attachments=spannertools.StemTremoloSpanner(), selector=selectortools.Selector().by_leaf()[:-1].by_counts( [-7, 2, -3, 1], ), )