示例#1
0
 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)
示例#2
0
 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)
示例#3
0
 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 ()
示例#7
0
 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
示例#8
0
 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)]