def __init__( self, incise_specifier=None, body_ratio=None, prolation_addenda=None, secondary_divisions=None, helper_functions=None, decrease_durations_monotonically=True, forbidden_written_duration=None, beam_each_cell=False, beam_cells_together=False, fill_with_notes=True, incise_divisions=False, incise_output=False, ): from abjad.tools import rhythmmakertools RhythmMaker.__init__( self, beam_cells_together=beam_cells_together, beam_each_cell=beam_each_cell, decrease_durations_monotonically=decrease_durations_monotonically, forbidden_written_duration=forbidden_written_duration, ) incise_specifier = incise_specifier or \ rhythmmakertools.InciseSpecifier() self._incise_specifier = incise_specifier prolation_addenda = \ self._to_tuple(prolation_addenda) secondary_divisions = \ self._to_tuple(secondary_divisions) if helper_functions is not None: assert isinstance(helper_functions, dict) for name in helper_functions: function = helper_functions.get(name) assert callable(function) self._helper_functions = helper_functions assert prolation_addenda is None or \ sequencetools.all_are_nonnegative_integer_equivalent_numbers( prolation_addenda), prolation_addenda assert secondary_divisions is None or \ sequencetools.all_are_nonnegative_integer_equivalent_numbers( secondary_divisions), secondary_divisions self._prolation_addenda = prolation_addenda if body_ratio is not None: body_ratio = mathtools.Ratio(body_ratio) self._body_ratio = body_ratio self._secondary_divisions = secondary_divisions assert isinstance(fill_with_notes, bool) self._fill_with_notes = fill_with_notes assert isinstance(incise_divisions, bool) self._incise_divisions = incise_divisions assert isinstance(incise_output, bool) self._incise_output = incise_output
def _is_length_tuple(expr): if expr is None: return True if sequencetools.all_are_nonnegative_integer_equivalent_numbers( expr) and isinstance(expr, tuple): return True return False
def __init__( self, talea=(-1, 4, -2, 3), talea_denominator=16, prolation_addenda=None, burnish_specifier=None, secondary_divisions=None, helper_functions=None, beam_each_cell=False, beam_cells_together=False, decrease_durations_monotonically=True, tie_split_notes=False, burnish_divisions=False, burnish_output=False, ): from abjad.tools import rhythmmakertools RhythmMaker.__init__( self, beam_each_cell=beam_each_cell, beam_cells_together=beam_cells_together, decrease_durations_monotonically=decrease_durations_monotonically, ) prototype = (tuple, type(None)) talea = self._to_tuple(talea) assert isinstance(talea, prototype) assert sequencetools.all_are_integer_equivalent_numbers(talea) self._talea = talea helper_functions = helper_functions or {} talea_helper = helper_functions.get('talea') prolation_addenda_helper = helper_functions.get('prolation_addenda') lefts_helper = helper_functions.get('lefts') middles_helper = helper_functions.get('middles') rights_helper = helper_functions.get('rights') left_lengths_helper = helper_functions.get('left_lengths') right_lengths_helper = helper_functions.get('right_lengths') secondary_divisions_helper = helper_functions.get('secondary_divisions') assert isinstance(burnish_divisions, bool) assert isinstance(burnish_output, bool) self._burnish_divisions = burnish_divisions self._burnish_output = burnish_output prolation_addenda = self._to_tuple(prolation_addenda) burnish_specifier = burnish_specifier or \ rhythmmakertools.BurnishSpecifier() assert isinstance(burnish_specifier, rhythmmakertools.BurnishSpecifier) self._burnish_specifier = burnish_specifier secondary_divisions = self._to_tuple(secondary_divisions) talea_helper = self._none_to_trivial_helper(talea_helper) prolation_addenda_helper = self._none_to_trivial_helper( prolation_addenda_helper) lefts_helper = self._none_to_trivial_helper(lefts_helper) middles_helper = self._none_to_trivial_helper(middles_helper) rights_helper = self._none_to_trivial_helper(rights_helper) left_lengths_helper = self._none_to_trivial_helper( left_lengths_helper) right_lengths_helper = self._none_to_trivial_helper( right_lengths_helper) secondary_divisions_helper = self._none_to_trivial_helper( secondary_divisions_helper) assert mathtools.is_positive_integer_equivalent_number( talea_denominator) assert prolation_addenda is None or \ sequencetools.all_are_nonnegative_integer_equivalent_numbers( prolation_addenda) assert secondary_divisions is None or \ sequencetools.all_are_nonnegative_integer_equivalent_numbers( secondary_divisions) assert callable(talea_helper) assert callable(prolation_addenda_helper) assert callable(lefts_helper) assert callable(middles_helper) assert callable(rights_helper) assert callable(left_lengths_helper) assert callable(right_lengths_helper) assert isinstance(decrease_durations_monotonically, bool) assert isinstance(tie_split_notes, bool) self._talea_denominator = talea_denominator self._prolation_addenda = prolation_addenda self._secondary_divisions = secondary_divisions if helper_functions == {}: helper_functions = None self._helper_functions = helper_functions self._tie_split_notes = tie_split_notes
def __init__(self, talea=None, talea_denominator=None, prolation_addenda=None, lefts=None, middles=None, rights=None, left_lengths=None, right_lengths=None, secondary_divisions=None, talea_helper=None, prolation_addenda_helper=None, lefts_helper=None, middles_helper=None, rights_helper=None, left_lengths_helper=None, right_lengths_helper=None, secondary_divisions_helper=None, beam_each_cell=False, beam_cells_together=False, decrease_durations_monotonically=True, tie_split_notes=False, tie_rests=False, ): RhythmMaker.__init__(self, beam_each_cell=beam_each_cell, beam_cells_together=beam_cells_together, ) prolation_addenda = self._none_to_new_list(prolation_addenda) lefts = self._none_to_new_list(lefts) middles = self._none_to_new_list(middles) rights = self._none_to_new_list(rights) left_lengths = self._none_to_new_list(left_lengths) right_lengths = self._none_to_new_list(right_lengths) secondary_divisions = self._none_to_new_list(secondary_divisions) talea_helper = self._none_to_trivial_helper(talea_helper) prolation_addenda_helper = self._none_to_trivial_helper( prolation_addenda_helper) lefts_helper = self._none_to_trivial_helper(lefts_helper) middles_helper = self._none_to_trivial_helper(middles_helper) rights_helper = self._none_to_trivial_helper(rights_helper) left_lengths_helper = self._none_to_trivial_helper( left_lengths_helper) right_lengths_helper = self._none_to_trivial_helper( right_lengths_helper) secondary_divisions_helper = self._none_to_trivial_helper( secondary_divisions_helper) assert sequencetools.all_are_integer_equivalent_numbers(talea) assert mathtools.is_positive_integer_equivalent_number( talea_denominator) assert sequencetools.all_are_nonnegative_integer_equivalent_numbers( prolation_addenda) assert all(x in (-1, 0, 1) for x in lefts) assert all(x in (-1, 0, 1) for x in middles) assert all(x in (-1, 0, 1) for x in rights) assert sequencetools.all_are_nonnegative_integer_equivalent_numbers( left_lengths) assert sequencetools.all_are_nonnegative_integer_equivalent_numbers( right_lengths) assert sequencetools.all_are_nonnegative_integer_equivalent_numbers( secondary_divisions) assert isinstance(talea_helper, (types.FunctionType, types.MethodType)) assert isinstance(prolation_addenda_helper, (types.FunctionType, types.MethodType)) assert isinstance(lefts_helper, (types.FunctionType, types.MethodType)) assert isinstance(middles_helper, (types.FunctionType, types.MethodType)) assert isinstance(rights_helper, (types.FunctionType, types.MethodType)) assert isinstance(left_lengths_helper, (types.FunctionType, types.MethodType)) assert isinstance(right_lengths_helper, (types.FunctionType, types.MethodType)) assert isinstance(decrease_durations_monotonically, bool) assert isinstance(tie_split_notes, bool) assert isinstance(tie_rests, bool) self.talea = talea self.talea_denominator = talea_denominator self.prolation_addenda = prolation_addenda self.lefts = lefts self.middles = middles self.rights = rights self.left_lengths = left_lengths self.right_lengths = right_lengths self.secondary_divisions = secondary_divisions self.talea_helper = talea_helper self.prolation_addenda_helper = prolation_addenda_helper self.lefts_helper = lefts_helper self.middles_helper = middles_helper self.rights_helper = rights_helper self.left_lengths_helper = left_lengths_helper self.right_lengths_helper = right_lengths_helper self.secondary_divisions_helper = secondary_divisions_helper #self.beam_each_cell = beam_each_cell self.decrease_durations_monotonically = \ decrease_durations_monotonically self.tie_split_notes = tie_split_notes self.tie_rests = tie_rests
def __init__( self, prefix_talea=None, prefix_lengths=None, suffix_talea=None, suffix_lengths=None, talea_denominator=None, body_ratio=None, prolation_addenda=None, secondary_divisions=None, prefix_talea_helper=None, prefix_lengths_helper=None, suffix_talea_helper=None, suffix_lengths_helper=None, prolation_addenda_helper=None, secondary_divisions_helper=None, decrease_durations_monotonically=True, tie_rests=False, forbidden_written_duration=None, beam_each_cell=False, beam_cells_together=False, ): RhythmMaker.__init__( self, forbidden_written_duration=forbidden_written_duration, beam_each_cell=beam_each_cell, beam_cells_together=beam_cells_together, ) prolation_addenda = \ self._none_to_new_list(prolation_addenda) secondary_divisions = \ self._none_to_new_list(secondary_divisions) prefix_talea_helper = \ self._none_to_trivial_helper(prefix_talea_helper) prefix_lengths_helper = \ self._none_to_trivial_helper(prefix_lengths_helper) suffix_talea_helper = \ self._none_to_trivial_helper(suffix_talea_helper) suffix_lengths_helper = \ self._none_to_trivial_helper(suffix_lengths_helper) prolation_addenda_helper = \ self._none_to_trivial_helper(prolation_addenda_helper) secondary_divisions_helper = \ self._none_to_trivial_helper(secondary_divisions_helper) assert sequencetools.all_are_integer_equivalent_numbers( prefix_talea) assert sequencetools.all_are_nonnegative_integer_equivalent_numbers( prefix_lengths) assert sequencetools.all_are_integer_equivalent_numbers( suffix_talea) assert sequencetools.all_are_nonnegative_integer_equivalent_numbers( suffix_lengths) assert mathtools.is_positive_integer_equivalent_number( talea_denominator) assert sequencetools.all_are_nonnegative_integer_equivalent_numbers( prolation_addenda) assert sequencetools.all_are_nonnegative_integer_equivalent_numbers( secondary_divisions) assert isinstance( prefix_talea_helper, (types.FunctionType, types.MethodType)) assert isinstance( prefix_lengths_helper, (types.FunctionType, types.MethodType)) assert isinstance( suffix_talea_helper, (types.FunctionType, types.MethodType)) assert isinstance( suffix_lengths_helper, (types.FunctionType, types.MethodType)) assert isinstance( prolation_addenda_helper, (types.FunctionType, types.MethodType)) assert isinstance( secondary_divisions_helper, (types.FunctionType, types.MethodType)) assert isinstance( decrease_durations_monotonically, bool) assert isinstance( tie_rests, bool) self.prefix_talea = prefix_talea self.prefix_lengths = prefix_lengths self.suffix_talea = suffix_talea self.suffix_lengths = suffix_lengths self.prolation_addenda = prolation_addenda self.talea_denominator = talea_denominator if body_ratio is not None: body_ratio = mathtools.Ratio(body_ratio) self.body_ratio = body_ratio self.secondary_divisions = secondary_divisions self.prefix_talea_helper = \ self._none_to_trivial_helper(prefix_talea_helper) self.prefix_lengths_helper = \ self._none_to_trivial_helper(prefix_lengths_helper) self.suffix_talea_helper = \ self._none_to_trivial_helper(suffix_talea_helper) self.suffix_lengths_helper = \ self._none_to_trivial_helper(suffix_lengths_helper) self.prolation_addenda_helper = \ self._none_to_trivial_helper(prolation_addenda_helper) self.secondary_divisions_helper = \ self._none_to_trivial_helper(secondary_divisions_helper) self.decrease_durations_monotonically = \ decrease_durations_monotonically self.tie_rests = tie_rests
def test_sequencetools_all_are_nonnegative_integer_equivalent_numbers_01(): assert sequencetools.all_are_nonnegative_integer_equivalent_numbers([0, 0.0, Fraction(0)]) assert sequencetools.all_are_nonnegative_integer_equivalent_numbers([2, 3, Fraction(4)])
def test_sequencetools_all_are_nonnegative_integer_equivalent_numbers_02(): assert not sequencetools.all_are_nonnegative_integer_equivalent_numbers([-1, -2.0, Fraction(-3)])