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