def split_by_durations(durations): durations = [durationtools.Duration(_) for _ in durations] expression = sequence() expression = expression.flatten() expression = expression.sum() expression = expression.sequence() expression = expression.split(durations, cyclic=True, overhang=True) expression = expression.flatten() return expression
def make_viola_ob_rhythm_specifier(rotation=None): durations = [(1, 4), (1, 4), (3, 8), (1, 4), (3, 8)] durations = [durationtools.Duration(_) for _ in durations] durations = sequence(durations) durations = durations.rotate(n=rotation) division_expression = baca.rhythm.split_by_durations(durations) return baca.tools.RhythmSpecifier( division_expression=division_expression, rhythm_maker=rhythmmakertools.NoteRhythmMaker( division_masks=rhythmmakertools.silence([0, -1]), ), split_at_measure_boundaries=True, )
def make_harmonic_glissando_pitch_specifier( start_pitch, direction=Up, rotation=None, ): start_pitch = pitchtools.NumberedPitch(start_pitch) start_pitch = start_pitch.pitch_number pitch_numbers = akasha.materials.getato_intervals pitch_numbers = [3 * _ for _ in pitch_numbers] if direction is Down: pitch_numbers = [-_ for _ in pitch_numbers] pitch_numbers = [_ + start_pitch for _ in pitch_numbers] pitch_numbers = sequence(pitch_numbers).rotate(n=rotation) return baca.tools.PitchSpecifier(source=pitch_numbers)
def make_fused_tuplet_monad_rhythm_specifier(tuplet_ratio=None): if tuplet_ratio is None: tuplet_ratios = [(1,)] else: tuplet_ratios = [tuplet_ratio] return baca.tools.RhythmSpecifier( division_expression=sequence() .sum() .sequence() , rhythm_maker=rhythmmakertools.TupletRhythmMaker( tie_specifier=rhythmmakertools.TieSpecifier( use_messiaen_style_ties=True, ), tuplet_ratios=tuplet_ratios, ), )
def make_repeated_duration_rhythm_specifier(durations): if isinstance(durations, durationtools.Duration): durations = [durations] elif isinstance(durations, tuple): assert len(durations) == 2 durations = [durationtools.Duration(durations)] return baca.tools.RhythmSpecifier( division_expression=sequence() .sum() .sequence() .split(durations, cyclic=True, overhang=True) .flatten() , rewrite_meter=True, rhythm_maker=rhythmmakertools.NoteRhythmMaker( tie_specifier=rhythmmakertools.TieSpecifier( use_messiaen_style_ties=True, ), ), )