def populate_bellows_interpolation_voice(
    voice, 
    leaf_durations, 
    leaf_indicators, 
    accent_string,
    ):
    #assert len(leaf_durations) == len(leaf_indicators) == 2231
    assert len(leaf_durations) == len(leaf_indicators) == 2230
    count_to_counter = {1: 'single', 2: 'double', 3: 'triple'}
    leaves = []
    for leaf_duration, leaf_indicator in zip(leaf_durations, leaf_indicators):
        if leaf_indicator == 0:
            leaf = abjad.Skip(abjad.Duration(1, 1))
            multiplier = abjad.Multiplier(leaf_duration)
            abjad.attach(multiplier, leaf)
        else:
            dynamics_string, reiteration_count = leaf_indicator
            pitch_number = dynamics_string_to_chromatic_pitch_number(
                dynamics_string)
            #leaf = abjad.Note(pitch_number, Fraction(1, 4), 4 * leaf_duration)
            multiplier = abjad.Multiplier(4 * leaf_duration)
            leaf = abjad.Note(pitch_number, abjad.Duration(1, 4))
            abjad.attach(multiplier, leaf)
            counter = count_to_counter[reiteration_count]
            #abjad.LilyPondCommand('%s%s' % (counter, 
            #    accent_string.capitalize()))(leaf)
            string = '{}{}'.format(counter, accent_string.capitalize())
            command = abjad.LilyPondCommand(string)
            abjad.attach(command, leaf)
        leaves.append(leaf)
    voice.extend(leaves)
def populate_one_dynamics_voice(
    dynamics_voice, 
    nv_durations, 
    dd, 
    is_first, 
    nv_gliss,
    ):
    leaves = abjad.scoretools.make_notes_with_multiplied_durations(
        0, abjad.Duration(1, 16), nv_durations)
    leaves = list(leaves)
    for i in range(len(leaves)):
        d = dd[i]
        if d == 's':
            leaves[i] = abjad.Skip(leaves[i])
        else:
            pitch_number = dynamics_string_to_chromatic_pitch_number(d)
            leaves[i].written_pitch = pitch_number
    dynamics_voice.extend(leaves)
    if is_first:
        voice_modulus = 0
    else:
        voice_modulus = 1
    for i in range(len(dynamics_voice) - 1):
        if i % 2 == voice_modulus:
            current_leaf = dynamics_voice[i]
            if isinstance(current_leaf, abjad.Note):
                next_leaf = dynamics_voice[i+1]
                if not isinstance(next_leaf, abjad.Note):
                    next_leaf = abjad.Note(
                        current_leaf.written_pitch, 
                        next_leaf.written_duration, 
                        #next_leaf.lilypond_duration_multiplier,
                        )
                    if abjad.inspect_(next_leaf).has_indicator(
                        abjad.Multiplier):
                        inspector = multiplier = abjad.inspect_(next_leaf)
                        multiplier = inspector.get_indicator(abjad.Multiplier)
                        abjad.attach(multiplier, next_leaf)
                    dynamics_voice[i+1] = next_leaf
                #abjad.Glissando([current_leaf, next_leaf])
                abjad.attach(abjad.Glissando(), [current_leaf, next_leaf])
                gliss_indicator = nv_gliss[i]
                # flat glissando indicating subito dynamic change 
                # at following event
                if gliss_indicator == 0:
                    next_leaf.written_pitch = current_leaf.written_pitch