def _make_music(self, divisions, seeds): from abjad.tools import rhythmmakertools selections = [] duration_specifier = self.duration_spelling_specifier if duration_specifier is None: duration_specifier = rhythmmakertools.DurationSpellingSpecifier() tuplet_specifier = self.tuplet_spelling_specifier if tuplet_specifier is None: tuplet_specifier = rhythmmakertools.TupletSpellingSpecifier() for division in divisions: if (duration_specifier.spell_metrically == True or (duration_specifier.spell_metrically == 'unassignable' and not mathtools.is_assignable_integer(division.numerator))): meter = metertools.Meter(division) rhythm_tree_container = meter.root_node durations = [_.duration for _ in rhythm_tree_container] else: durations = [division] selection = scoretools.make_leaves( pitches=0, durations=durations, decrease_durations_monotonically=\ duration_specifier.decrease_durations_monotonically, forbidden_written_duration=\ duration_specifier.forbidden_written_duration, is_diminution=tuplet_specifier.is_diminution, ) selections.append(selection) selections = self._apply_burnish_specifier(selections) self._apply_beam_specifier(selections) selections = self._apply_output_masks(selections) return selections
def test_systemtools_StorageFormatAgent_get_import_statements_04(): subject = rhythmmakertools.IncisedRhythmMaker( incise_specifier=rhythmmakertools.InciseSpecifier( prefix_talea=(1, ), prefix_counts=(0, ), suffix_talea=(1, ), suffix_counts=(1, ), talea_denominator=16, body_ratio=mathtools.Ratio((1, )), outer_divisions_only=True, ), beam_specifier=rhythmmakertools.BeamSpecifier( beam_each_division=False, beam_divisions_together=False, ), duration_spelling_specifier=rhythmmakertools.DurationSpellingSpecifier( decrease_durations_monotonically=True, forbidden_written_duration=durationtools.Duration(1, 2), ), tuplet_spelling_specifier=rhythmmakertools.TupletSpellingSpecifier( avoid_dots=True, is_diminution=True, simplify_redundant_tuplets=True, ), ) agent = systemtools.StorageFormatAgent(subject) assert agent.get_import_statements() == ( 'from abjad.tools import durationtools', 'from abjad.tools import mathtools', 'from abjad.tools import rhythmmakertools', )
def _simplify_tuplets(self, selections): from abjad.tools import rhythmmakertools tuplet_spelling_specifier = self.tuplet_spelling_specifier if tuplet_spelling_specifier is None: tuplet_spelling_specifier = \ rhythmmakertools.TupletSpellingSpecifier() if not tuplet_spelling_specifier.simplify_tuplets: return for tuplet in iterate(selections).by_class(scoretools.Tuplet): if tuplet.is_trivial: continue duration = tuplet._get_duration() if all(isinstance(x, scoretools.Rest) for x in tuplet): rests = scoretools.make_rests([duration]) tuplet[:] = rests elif all(isinstance(x, scoretools.Note) for x in tuplet): logical_ties = set([x._get_logical_tie() for x in tuplet]) if len(logical_ties) == 1: notes = scoretools.make_notes([0], [duration]) tuplet[:] = notes
def _get_tuplet_spelling_specifier(self): from abjad.tools import rhythmmakertools if self.tuplet_spelling_specifier is not None: return self.tuplet_spelling_specifier return rhythmmakertools.TupletSpellingSpecifier()
start_dynamic_tokens='f mf mp', stop_dynamic_tokens='p', ), percussion_staff=abbreviations.percussion_staff, text_spanner=consort.AttachmentExpression( attachments=abbreviations.make_text_spanner('shaker'), selector=selectortools.Selector().by_leaf(), ), ), color='blue', labels=['shakers'], pitch_handler=consort.AbsolutePitchHandler( pitches_are_nonsemantic=True, ), rhythm_maker=rhythmmakertools.AccelerandoRhythmMaker( beam_specifier=rhythmmakertools.BeamSpecifier( use_feather_beams=True, ), duration_spelling_specifier=rhythmmakertools.DurationSpellingSpecifier( forbid_meter_rewriting=True, ), interpolation_specifiers=rhythmmakertools.InterpolationSpecifier( start_duration=durationtools.Duration(1, 32), stop_duration=durationtools.Duration(1, 8), written_duration=durationtools.Duration(1, 32), ), tuplet_spelling_specifier=rhythmmakertools.TupletSpellingSpecifier( use_note_duration_bracket=True, ), ), )