def __call__(self, pulse_duration): r'''Generate Abjad score components: :: >>> leaf = rhythmtreetools.RhythmTreeLeaf(5) >>> leaf((1, 4)) Selection(Note("c'1"), Note("c'4")) Returns sequence of components. ''' pulse_duration = durationtools.Duration(pulse_duration) total_duration = pulse_duration * self.preprolated_duration if self.is_pitched: return notetools.make_notes(0, total_duration) return resttools.make_rests(total_duration)
def durate_pitch_contour_reservoir(pitch_contour_reservoir): instrument_names = [ 'First Violin', 'Second Violin', 'Viola', 'Cello', 'Bass', ] durated_reservoir = {} for i, instrument_name in enumerate(instrument_names): long_duration = Duration(1, 2) * pow(2, i) short_duration = long_duration / 2 rest_duration = long_duration * Multiplier(3, 2) div = rest_duration // Duration(3, 2) mod = rest_duration % Duration(3, 2) initial_rest = resttools.MultimeasureRest((3, 2)) * div if mod: initial_rest += resttools.make_rests(mod) durated_contours = [tuple(initial_rest)] pitch_contours = pitch_contour_reservoir[instrument_name] durations = [long_duration, short_duration] counter = 0 for pitch_contour in pitch_contours: contour = [] for pitch in pitch_contour: contour.extend(leaftools.make_leaves([pitch], [durations[counter]])) counter = (counter + 1) % 2 durated_contours.append(tuple(contour)) durated_reservoir[instrument_name] = tuple(durated_contours) return durated_reservoir