def _make_middle_of_numeric_map_part(self, middle): if self.fill_with_notes: if self.incise_divisions: if 0 < middle: if self.body_ratio is not None: shards = mathtools.divide_number_by_ratio( middle, self.body_ratio) return tuple(shards) else: return (middle,) else: return () elif self.incise_output: if 0 < middle: return (middle,) else: return () else: message = 'must incise divisions or output.' raise Exception(message) else: if self.incise_divisions: if 0 < middle: return (-abs(middle),) else: return () elif self.incise_output: if 0 < middle: return (-abs(middle), ) else: return () else: message = 'must incise divisions or output.' raise Exception(message)
def _make_middle_of_numeric_map_part(self, middle): incise_specifier = self._get_incise_specifier() if incise_specifier.fill_with_notes: if not incise_specifier.outer_divisions_only: if 0 < middle: if incise_specifier.body_ratio is not None: shards = mathtools.divide_number_by_ratio( middle, incise_specifier.body_ratio) return tuple(shards) else: return (middle, ) else: return () elif incise_specifier.outer_divisions_only: if 0 < middle: return (middle, ) else: return () else: message = 'must incise divisions or output.' raise Exception(message) else: if not incise_specifier.outer_divisions_only: if 0 < middle: return (-abs(middle), ) else: return () elif incise_specifier.outer_divisions_only: if 0 < middle: return (-abs(middle), ) else: return () else: message = 'must incise divisions or output.' raise Exception(message)
def _make_middle_of_numeric_map_part(self, middle): incise_specifier = self._get_incise_specifier() if incise_specifier.fill_with_notes: if not incise_specifier.outer_divisions_only: if 0 < middle: if incise_specifier.body_ratio is not None: shards = mathtools.divide_number_by_ratio(middle, incise_specifier.body_ratio) return tuple(shards) else: return (middle,) else: return () elif incise_specifier.outer_divisions_only: if 0 < middle: return (middle,) else: return () else: message = "must incise divisions or output." raise Exception(message) else: if not incise_specifier.outer_divisions_only: if 0 < middle: return (-abs(middle),) else: return () elif incise_specifier.outer_divisions_only: if 0 < middle: return (-abs(middle),) else: return () else: message = "must incise divisions or output." raise Exception(message)
def _divide_by_ratio(self, start_offset, stop_offset, ratio, the_part): original_start_offset, original_stop_offset = start_offset, stop_offset original_duration = original_stop_offset - original_start_offset duration_shards = mathtools.divide_number_by_ratio(original_duration, ratio) duration_shards_before = duration_shards[:the_part] duration_before = sum(duration_shards_before) selected_duration_shard = duration_shards[the_part] new_start_offset = original_start_offset + duration_before new_stop_offset = new_start_offset + selected_duration_shard return new_start_offset, new_stop_offset
def test_mathtools_divide_number_by_ratio_01(): r'''Divide int by ratio. ''' duration = mathtools.divide_number_by_ratio(1, [1, 1, 2]) assert len(duration) == 3 assert duration[0] == Duration(1, 4) assert duration[1] == Duration(1, 4) assert duration[2] == Duration(1, 2)
def _make_middle_of_numeric_map_part(self, middle): if 0 < middle: if self.body_ratio is not None: shards = mathtools.divide_number_by_ratio( middle, self.body_ratio) return tuple(shards) else: return (middle, ) else: return ()
def _divide_by_ratio(self, start_offset, stop_offset, ratio, the_part): original_start_offset, original_stop_offset = \ start_offset, stop_offset original_duration = \ original_stop_offset - original_start_offset duration_shards = \ mathtools.divide_number_by_ratio(original_duration, ratio) duration_shards_before = duration_shards[:the_part] duration_before = sum(duration_shards_before) selected_duration_shard = duration_shards[the_part] new_start_offset = original_start_offset + duration_before new_stop_offset = new_start_offset + selected_duration_shard return new_start_offset, new_stop_offset
def _make_middle_of_numeric_map_part(self, middle): from abjad.tools import rhythmmakertools incise_specifier = self.incise_specifier if incise_specifier is None: incise_specifier = rhythmmakertools.InciseSpecifier() if incise_specifier.fill_with_notes: if not incise_specifier.outer_divisions_only: if 0 < middle: if incise_specifier.body_ratio is not None: shards = mathtools.divide_number_by_ratio( middle, incise_specifier.body_ratio) return tuple(shards) else: return (middle,) else: return () elif incise_specifier.outer_divisions_only: if 0 < middle: return (middle,) else: return () else: message = 'must incise divisions or output.' raise Exception(message) else: if not incise_specifier.outer_divisions_only: if 0 < middle: return (-abs(middle),) else: return () elif incise_specifier.outer_divisions_only: if 0 < middle: return (-abs(middle),) else: return () else: message = 'must incise divisions or output.' raise Exception(message)
def test_mathtools_divide_number_by_ratio_04(): r'''Duration returns durations. ''' result = mathtools.divide_number_by_ratio(Duration(1, 4), [1, 1, 1]) assert result == [Duration(1, 12), Duration(1, 12), Duration(1, 12)]