EvenDivisionRhythmMaker

digraph InheritanceGraph { graph [bgcolor=transparent, color=lightsteelblue2, fontname=Arial, fontsize=10, outputorder=edgesfirst, overlap=prism, penwidth=2, rankdir=LR, splines=spline, style="dashed, rounded", truecolor=true]; node [colorscheme=pastel19, fontname=Arial, fontsize=10, height=0, penwidth=2, shape=box, style="filled, rounded", width=0]; edge [color=lightslategrey, penwidth=1]; subgraph "cluster_abjad.system" { graph [label="abjad.system"]; node [color=1]; "abjad.system.AbjadObject.AbjadObject" [URL="../api/abjadext/rmakers/../../abjad/system/AbjadObject.html#abjad.system.AbjadObject.AbjadObject", label="Abjad\nObject", target=_top]; "abjad.system.AbjadValueObject.AbjadValueObject" [URL="../api/abjadext/rmakers/../../abjad/system/AbjadValueObject.html#abjad.system.AbjadValueObject.AbjadValueObject", label="Abjad\nValue\nObject", target=_top]; "abjad.system.AbjadObject.AbjadObject" -> "abjad.system.AbjadValueObject.AbjadValueObject"; } subgraph "cluster_abjadext.rmakers" { graph [label="abjadext.rmakers"]; node [color=2]; "abjadext.rmakers.EvenDivisionRhythmMaker.EvenDivisionRhythmMaker" [URL="../api/abjadext/rmakers/EvenDivisionRhythmMaker.html#abjadext.rmakers.EvenDivisionRhythmMaker.EvenDivisionRhythmMaker", color=black, fontcolor=white, label="Even\nDivision\nRhythm\nMaker", target=_top]; "abjadext.rmakers.RhythmMaker.RhythmMaker" [URL="../api/abjadext/rmakers/RhythmMaker.html#abjadext.rmakers.RhythmMaker.RhythmMaker", label="Rhythm\nMaker", target=_top]; "abjadext.rmakers.RhythmMaker.RhythmMaker" -> "abjadext.rmakers.EvenDivisionRhythmMaker.EvenDivisionRhythmMaker"; } subgraph cluster_builtins { graph [label=builtins]; node [color=3]; "builtins.object" [URL="https://docs.python.org/3.6/library/functions.html#object", label=object, target=_top]; } "abjad.system.AbjadValueObject.AbjadValueObject" -> "abjadext.rmakers.RhythmMaker.RhythmMaker"; "builtins.object" -> "abjad.system.AbjadObject.AbjadObject"; }

class abjadext.rmakers.EvenDivisionRhythmMaker.EvenDivisionRhythmMaker(*, beam_specifier=None, burnish_specifier=None, denominator='from_counts', denominators=[8], division_masks=None, duration_specifier=None, extra_counts_per_division=None, logical_tie_masks=None, tie_specifier=None, tuplet_specifier=None)

Even division rhythm-maker.

Object model of a partially evaluated function that accepts a (possibly empty) list of divisions as input and returns a list of selections as output (structured one selection per input division).


Attributes Summary

__call__ Calls even division rhythm-maker on divisions.
burnish_specifier Gets burnish specifier.
denominator Gets preferred denominator.
denominators Gets denominators.
division_masks Gets division masks.
extra_counts_per_division Gets extra counts per division.
logical_tie_masks Gets logical tie masks.
tuplet_specifier Gets tuplet specifier.

Special methods

__call__(divisions, previous_state=None)

Calls even division rhythm-maker on divisions.

Fills divisions with alternating eighth and sixteenth notes:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[8, 16],
...     )
>>> divisions = [(3, 8), (3, 8), (3, 8), (3, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Adds extra counts per division according to a pattern of three elements:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[0, 1, 2],
...     )
>>> divisions = [(3, 8), (3, 8), (3, 8), (3, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 
Return type:List[Selection]
(AbjadValueObject).__copy__(*arguments)

Copies Abjad value object.

Returns new Abjad value object.

(AbjadValueObject).__eq__(argument)

Is true when all initialization values of Abjad value object equal the initialization values of argument.

Returns true or false.

(AbjadObject).__format__(format_specification='')

Formats Abjad object.

Set format_specification to '' or 'storage'. Interprets '' equal to 'storage'.

Returns string.

(AbjadValueObject).__hash__()

Hashes Abjad value object.

Returns integer.

(RhythmMaker).__illustrate__(divisions=((3, 8), (4, 8), (3, 16), (4, 16)))

Illustrates rhythm-maker.

Returns LilyPond file.

(AbjadObject).__repr__()

Gets interpreter representation of Abjad object.

Returns string.


Read-only properties

(RhythmMaker).beam_specifier

Gets beam specifier.

Return type:Optional[BeamSpecifier]
burnish_specifier

Gets burnish specifier.

Forces the first leaf and the last two leaves to be rests:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     burnish_specifier=abjadext.rmakers.BurnishSpecifier(
...         left_classes=[abjad.Rest],
...         left_counts=[1],
...         right_classes=[abjad.Rest],
...         right_counts=[2],
...         outer_divisions_only=True,
...         ),
...     )
>>> divisions = [(3, 8), (4, 8), (3, 8), (4, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Burnishing outer divisions also works when given a single division:

>>> divisions = [(7, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Forces the first leaf of every division to be a rest:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     burnish_specifier=abjadext.rmakers.BurnishSpecifier(
...         left_classes=[abjad.Rest],
...         left_counts=[1],
...         ),
...     )
>>> divisions = [(3, 8), (4, 8), (3, 8), (4, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 
Return type:Optional[BurnishSpecifier]
denominator

Gets preferred denominator.

No preferred denominator:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[4],
...     denominator=None,
...     )
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Expresses tuplet ratios in the usual way with numerator and denominator relatively prime.

Preferred denominator equal to 4:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[4],
...     denominator=4,
...     )
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Preferred denominator equal to 8:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[4],
...     denominator=8,
...     )
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Preferred denominator equal to 16:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[4],
...     denominator=16,
...     )
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Preferred denominator taken from count of elements in tuplet:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[4],
...     denominator='from_counts',
...     )
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 
Return type:Union[str, int]
denominators

Gets denominators.

Fills divisions with 16th notes:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     )
>>> divisions = [(3, 16), (3, 8), (3, 4)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Fills divisions with 8th notes:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[8],
...     )
>>> divisions = [(3, 16), (3, 8), (3, 4)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Fills divisions less than twice the duration of an eighth note with a single attack.

Fills divisions with quarter notes:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[4],
...     )
>>> divisions = [(3, 16), (3, 8), (3, 4)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Divisions less than twice the duration of a quarter note are filled with a single attack.

Fills divisions with half notes:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[2],
...     )
>>> divisions = [(3, 16), (3, 8), (3, 4)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Fills divisions less than twice the duration of a half note with a single attack.

Return type:Optional[List[int]]
division_masks

Gets division masks.

No division masks:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker()
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Silences every other division:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     division_masks=[
...         abjadext.rmakers.silence([0], 2),
...         ],
...     )
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Sustains every other division:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     division_masks=[
...         abjadext.rmakers.sustain([0], 2),
...         ],
...     )
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Silences every output division:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     division_masks=abjadext.rmakers.silence([0], 1),
...     )
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 
Return type:Optional[PatternTuple]
(RhythmMaker).duration_specifier

Gets duration specifier.

Return type:Optional[DurationSpecifier]
extra_counts_per_division

Gets extra counts per division.

Treats overly large and overly small values of extra_counts_per_division modularly. Denote by unprolated_note_count the number of unprolated notes included in any division (as though extra_counts_per_division were set to zero). Then the actual number of extra counts included per division is given by two formulas:

  • The actual number of extra counts included per division is given by extra_counts_per_division % unprolated_note_count when extra_counts_per_division is positive.
  • The actual number of extra counts included per division is given by the formula extra_counts_per_division % ceiling(unprolated_note_count / 2) when extra_counts_per_division is negative.

These formulas ensure that:

  • even very large and very small values of extra_counts_per_division produce valid output, and that
  • the values given as the rhythm-maker’s denominators are always respected. A very large value of extra_counts_per_division, for example, never causes a 16-denominated division to result 32nd or 64th note rhythms; 16-denominated divisions always produce 16th note rhythms.

Four missing counts per division:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[-4],
...     )
>>> divisions = [(1, 16), (2, 16), (3, 16), (4, 16), (5, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Three missing counts per division:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[-3],
...     )
>>> divisions = [(1, 16), (2, 16), (3, 16), (4, 16), (5, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Two missing counts per division:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[-2],
...     )
>>> divisions = [(1, 16), (2, 16), (3, 16), (4, 16), (5, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

One missing count per division:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[-1],
...     )
>>> divisions = [(1, 16), (2, 16), (3, 16), (4, 16), (5, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Neither missing nor extra counts per division:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=None,
...     )
>>> divisions = [(1, 16), (2, 16), (3, 16), (4, 16), (5, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

One extra count per division:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[1],
...     )
>>> divisions = [(1, 16), (2, 16), (3, 16), (4, 16), (5, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Two extra counts per division:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[2],
...     )
>>> divisions = [(1, 16), (2, 16), (3, 16), (4, 16), (5, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Three extra counts per division:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[3],
...     )
>>> divisions = [(1, 16), (2, 16), (3, 16), (4, 16), (5, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Four extra counts per division:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[16],
...     extra_counts_per_division=[4],
...     )
>>> divisions = [(1, 16), (2, 16), (3, 16), (4, 16), (5, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 
Return type:Optional[List[int]]
logical_tie_masks

Gets logical tie masks.

No logical tie masks:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker()
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Silences every third logical tie:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     logical_tie_masks=[
...         abjadext.rmakers.silence([0], 3),
...         ],
...     )
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Silences every logical tie except the first two and last two:

>>> pattern_1 = abjad.index_all()
>>> pattern_2 = abjad.index_first(2)
>>> pattern_3 = abjad.index_last(2)
>>> pattern = pattern_1 ^ pattern_2 ^ pattern_3
>>> mask = abjadext.rmakers.SilenceMask(pattern)
>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     logical_tie_masks=mask,
...     )
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

With ties across divisions:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     tie_specifier=abjadext.rmakers.TieSpecifier(
...         tie_across_divisions=True,
...         ),
...     )
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Silences every fourth logical tie:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     logical_tie_masks=abjadext.rmakers.silence([3], 4),
...     tie_specifier=abjadext.rmakers.TieSpecifier(
...         tie_across_divisions=True,
...         ),
...     )
>>> divisions = [(4, 8), (3, 8), (4, 8), (3, 8)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Silencing the fourth logical tie produces two rests. Silencing the eighth logical tie produces only one rest.

Return type:Optional[PatternTuple]
(RhythmMaker).previous_state

Gets previous state dictionary.

Return type:OrderedDict
(RhythmMaker).state

Gets state dictionary.

Return type:OrderedDict
(RhythmMaker).tie_specifier

Gets tie specifier.

Return type:Optional[TieSpecifier]
tuplet_specifier

Gets tuplet specifier.

No tuplet specifier:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[8],
...     extra_counts_per_division=[0, 0, 1],
...     )
>>> divisions = [(5, 16), (6, 16), (6, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Extracts trivial tuplets:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[8],
...     extra_counts_per_division=[0, 0, 1],
...     tuplet_specifier=abjadext.rmakers.TupletSpecifier(
...         extract_trivial=True,
...         ),
...     )
>>> divisions = [(5, 16), (6, 16), (6, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Extracts trivial tuplets and spells tuplets as diminutions:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[8],
...     extra_counts_per_division=[0, 0, 1],
...     tuplet_specifier=abjadext.rmakers.TupletSpecifier(
...         diminution=True,
...         extract_trivial=True,
...         ),
...     )
>>> divisions = [(5, 16), (6, 16), (6, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Extracts trivial tuplets and spells tuplets as augmentations:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[8],
...     extra_counts_per_division=[0, 0, 1],
...     tuplet_specifier=abjadext.rmakers.TupletSpecifier(
...         diminution=False,
...         extract_trivial=True,
...         ),
...     )
>>> divisions = [(5, 16), (6, 16), (6, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 

Extracts trivial tuplets and spells tuplet denominators according to division numerators:

>>> rhythm_maker = abjadext.rmakers.EvenDivisionRhythmMaker(
...     denominators=[8],
...     extra_counts_per_division=[0, 0, 1],
...     tuplet_specifier=abjadext.rmakers.TupletSpecifier(
...         denominator='divisions',
...         extract_trivial=True,
...         ),
...     )
>>> divisions = [(5, 16), (6, 16), (6, 16)]
>>> selections = rhythm_maker(divisions)
>>> lilypond_file = abjad.LilyPondFile.rhythm(
...     selections,
...     divisions,
...     )
>>> abjad.show(lilypond_file) 
Return type:Optional[TupletSpecifier]