def _get_stage_measure_index(self, current_stage):
     index = 0
     for stage in self._time_signatures[0:current_stage]:
         stage = flatten_list(stage)
         for measure in stage:
             index += 1
     return index
 def _get_stage_measure_index(self, current_stage):
     index = 0
     for stage in self._time_signatures[0:current_stage]:
         stage = flatten_list(stage)
         for measure in stage:
             index += 1
     return index
Example #3
0
def make_conductor_part():
    """Renders a conductor part as PDF"""
    flat = flatten_list(time_signatures)
    measures = make_spacer_skip_measures(flat)
    for i, tempo in tempo_map:
        abjad.attach(tempo, measures[i])
    stage_indices = []
    total = 0
    for n in measures_per_stage:
        stage_indices.append(total)
        total += n
    for letter_number, i in enumerate(stage_indices):
        rehearsal_mark = abjad.indicatortools.RehearsalMark(
            number=letter_number + 1)
        abjad.attach(rehearsal_mark, measures[i][0])
    staff = abjad.Staff(measures, context_name='RhythmicStaff')
    score = abjad.Score([staff])
    scheme = abjad.schemetools.Scheme('format-mark-box-alphabet')
    abjad.setting(score).markFormatter = scheme
    stylesheet_path = os.path.join(
        '..',
        'stylesheets',
        'stylesheet_conductor.ily',
    )
    lilypond_file = abjad.LilyPondFile.new(score,
                                           default_paper_size=('letter',
                                                               'portrait'),
                                           global_staff_size=16,
                                           includes=[stylesheet_path],
                                           use_relative_includes=True)
    return lilypond_file
def make_conductor_part():
    """Renders a conductor part as PDF"""
    flat = flatten_list(time_signatures)
    measures = make_spacer_skip_measures(flat)
    for i, tempo in tempo_map:
        abjad.attach(tempo, measures[i])
    stage_indices = []
    total = 0
    for n in measures_per_stage:
        stage_indices.append(total)
        total += n
    for letter_number, i in enumerate(stage_indices):
        rehearsal_mark = abjad.indicatortools.RehearsalMark(
            number=letter_number + 1
        )
        abjad.attach(rehearsal_mark, measures[i][0])
    staff = abjad.Staff(measures, context_name='RhythmicStaff')
    score = abjad.Score([staff])
    scheme = abjad.schemetools.Scheme('format-mark-box-alphabet')
    abjad.setting(score).markFormatter = scheme
    stylesheet_path = os.path.join(
        '..',
        'stylesheets',
        'stylesheet_conductor.ily',
    )
    lilypond_file = abjad.LilyPondFile.new(
        score,
        default_paper_size=('letter', 'portrait'),
        global_staff_size=16,
        includes=[stylesheet_path],
        use_relative_includes=True
    )
    return lilypond_file
 def _make_skips(self, current_stage):
     time_signatures = flatten_list(self._time_signatures[current_stage])
     voice = abjad.Voice()
     skip_maker = abjad.LeafMaker(skips_instead_of_rests=True)
     for time_signature in time_signatures:
         skips = skip_maker(None, [time_signature])
         voice.extend(skips)
     return voice
Example #6
0
    def measure_count(self):
        r"""Gets measure count.

        Returns nonnegative integer.
        """
        time_signatures = flatten_list(
            self.time_signatures[0:number_of_stages]
        )
        return len(time_signatures)
 def _make_skips(self, current_stage):
     time_signatures = flatten_list(
         self._time_signatures[current_stage]
     )
     voice = abjad.Voice()
     skip_maker = abjad.LeafMaker(skips_instead_of_rests=True)
     for time_signature in time_signatures:
         skips = skip_maker(None, [time_signature])
         voice.extend(skips)
     return voice
 def test_with_Duration(self):
     X = [
         abjad.Duration(1, 4), [abjad.Duration(1, 4),
                                abjad.Duration(1, 4)]
     ]
     new_X = flatten_list(X)
     test = [
         abjad.Duration(1, 4),
         abjad.Duration(1, 4),
         abjad.Duration(1, 4)
     ]
     self.assertEqual(new_X, test)
 def test_with_Duration(self):
     X = [
         abjad.Duration(1, 4),
         [abjad.Duration(1, 4), abjad.Duration(1, 4)]
     ]
     new_X = flatten_list(X)
     test = [
         abjad.Duration(1, 4),
         abjad.Duration(1, 4),
         abjad.Duration(1, 4)
     ]
     self.assertEqual(new_X, test)
Example #10
0
 def _make_rhythm(self, current_stage):
     if self._divisions:
         rhythm = self._rhythm_makers[current_stage](
             self._divisions[current_stage])
     else:
         time_signatures = self._time_signatures[current_stage]
         time_signatures = flatten_list(time_signatures)
         rhythm = self._rhythm_makers[current_stage](time_signatures)
         self._hide_full_measure_rests(rhythm)
     voice = abjad.Voice()
     voice.extend(rhythm)
     return voice
Example #11
0
    def _make_skip_filled_measures(self):
        r""" Creates measures with measure-length skips for time signature
        context.

        Returns list of measures.
        """
        time_signatures = []
        for stage in self.time_signatures[0:self.number_of_stages]:
            flattened_list = flatten_list(stage)
            time_signatures.extend(flattened_list)
        measures = make_spacer_skip_measures(time_signatures)
        return measures
Example #12
0
 def _make_rhythm(self, current_stage):
     if self._divisions:
         rhythm = self._rhythm_makers[current_stage](
             self._divisions[current_stage]
         )
     else:
         time_signatures = self._time_signatures[current_stage]
         time_signatures = flatten_list(time_signatures)
         rhythm = self._rhythm_makers[current_stage](time_signatures)
         self._hide_full_measure_rests(rhythm)
     voice = abjad.Voice()
     voice.extend(rhythm)
     return voice
def bifurcate_duration(
    duration,
    maximum_denominator=8,
    allowable_leafs=(
        abjad.Duration(3, 8),
        abjad.Duration(5, 16),
        abjad.Duration(2, 4),
        abjad.Duration(7, 16),
        abjad.Duration(5, 8),
        abjad.Duration(3, 4)),
    minimum_duration=abjad.Duration(3, 8),
    even='disallowed',
    bigger='left'
):

    assert(isinstance(duration, abjad.Duration))
    assert(duration.has_power_of_two_denominator)

    """ Force  `duration` denominator to `maximum denominator` and convert to a
    `NonreducedFraction`."""
    if duration.denominator < maximum_denominator:
        multiplier = int(maximum_denominator / duration.denominator)
        duration = abjad.mathtools.NonreducedFraction(
            duration.numerator * multiplier,
            duration.denominator * multiplier
        )
    else:
        duration = abjad.mathtools.NonreducedFraction(duration)

    """ Subdivide if long enough and convert back to `abjad.Duration` from
    `NonreducedFraction`."""
    if (duration < minimum_duration or duration.reduce() in allowable_leafs):
        return abjad.Duration(duration)
    else:
        numerators = partition_integer_into_halves(
            duration.numerator, even=even, bigger=bigger)
        pair = [
            abjad.Duration(numerators[0], duration.denominator),
            abjad.Duration(numerators[1], duration.denominator)
        ]
        new_pair = []
        for duration in pair:
            divisions = bifurcate_duration(
                duration,
                maximum_denominator=maximum_denominator,
                allowable_leafs=allowable_leafs,
                minimum_duration=minimum_duration
            )
            new_pair.append(divisions)
        flat = flatten_list(new_pair)
        return flat
def bifurcate_duration(duration,
                       maximum_denominator=8,
                       allowable_leafs=(abjad.Duration(3, 8),
                                        abjad.Duration(5, 16),
                                        abjad.Duration(2, 4),
                                        abjad.Duration(7, 16),
                                        abjad.Duration(5, 8),
                                        abjad.Duration(3, 4)),
                       minimum_duration=abjad.Duration(3, 8),
                       even='disallowed',
                       bigger='left'):

    assert (isinstance(duration, abjad.Duration))
    assert (duration.has_power_of_two_denominator)
    """ Force  `duration` denominator to `maximum denominator` and convert to a
    `NonreducedFraction`."""
    if duration.denominator < maximum_denominator:
        multiplier = int(maximum_denominator / duration.denominator)
        duration = abjad.mathtools.NonreducedFraction(
            duration.numerator * multiplier, duration.denominator * multiplier)
    else:
        duration = abjad.mathtools.NonreducedFraction(duration)
    """ Subdivide if long enough and convert back to `abjad.Duration` from
    `NonreducedFraction`."""
    if (duration < minimum_duration or duration.reduce() in allowable_leafs):
        return abjad.Duration(duration)
    else:
        numerators = partition_integer_into_halves(duration.numerator,
                                                   even=even,
                                                   bigger=bigger)
        pair = [
            abjad.Duration(numerators[0], duration.denominator),
            abjad.Duration(numerators[1], duration.denominator)
        ]
        new_pair = []
        for duration in pair:
            divisions = bifurcate_duration(
                duration,
                maximum_denominator=maximum_denominator,
                allowable_leafs=allowable_leafs,
                minimum_duration=minimum_duration)
            new_pair.append(divisions)
        flat = flatten_list(new_pair)
        return flat
Example #15
0
 def _make_repeated_note_measures(self):
     r""" Creates measures with repeated notes from time signatures for the
     time signature context.
     Returns list of measures.
     """
     time_signatures = []
     for stage in self.time_signatures[0:self.number_of_stages]:
         flattened_list = flatten_list(stage)
         time_signatures.extend(flattened_list)
     measures = []
     for time_signature in time_signatures:
         durations = [abjad.Duration(1, time_signature.denominator)] * \
             time_signature.numerator
         note_maker = abjad.NoteMaker()
         notes = note_maker([0], durations)
         measure = abjad.scoretools.Measure(time_signature, notes)
         if time_signature.denominator > 4:
             beam = abjad.spannertools.Beam()
             abjad.attach(beam, measure)
         measures.append(measure)
     return measures
Example #16
0
# -*- coding: utf-8 -*-
from surge.materials.segment_ii.bass.durations import denominators, durations
from surge.tools.utilities.flatten_list import flatten_list
from abjad import rhythmmakertools

taleas = [
    rhythmmakertools.Talea(counts=flatten_list(durations[0]),
                           denominator=denominators[0]),
    rhythmmakertools.Talea(counts=flatten_list(durations[1]),
                           denominator=denominators[1]),
    None,
    None,
    None,
    None,
    None,
]
 def test__already_flat(self):
     X = [1, 2]
     new_X = flatten_list(X)
     test = [1, 2]
     self.assertEqual(new_X, test)
 def test__deeper(self):
     X = [1, [2, [3, [4]], 5], 6]
     new_X = flatten_list(X)
     test = [1, 2, 3, 4, 5, 6]
     self.assertEqual(new_X, test)
 def test__with_tuple(self):
     X = [1, (2, 3)]
     new_X = flatten_list(X)
     test = [1, 2, 3]
     self.assertEqual(new_X, test)
 def test__simple_nested_reverse(self):
     X = [[1, 2], 3]
     new_X = flatten_list(X)
     test = [1, 2, 3]
     self.assertEqual(new_X, test)
 def test__already_flat(self):
     X = [1, 2]
     new_X = flatten_list(X)
     test = [1, 2]
     self.assertEqual(new_X, test)
Example #22
0
time_signatures = []
for division in divisions:
    stage = []
    for subdivision in division:
        stage_division = []
        for duration in subdivision:
            if duration.denominator < 8:
                multiplier = int(8 / duration.denominator)
                duration = mathtools.NonreducedFraction(
                    duration.numerator * multiplier,
                    duration.denominator * multiplier
                )
            time_signature = abjad.TimeSignature(duration)
            stage_division.append(time_signature)
        stage.append(stage_division)
    time_signatures.append(stage)


subsection_indices = [
    [0, 3, 5, 9, 12,16, 20, 22, 25,27,30, 32],
    [0, 4, 7, 11, 13, 16, 18, 22, 25, 27, 31, 35],
    [0, 3, 5, 9, 13, 16, 20, 22, 26, 29, 32, 34, 38, 41, 45],
    [0, 3, 5, 9, 13, 16, 20, 22, 25, 27],
    [0, 3, 5, 9, 12, 14, 17, 20, 22, 26, 30],
]

measure_indices = [
    list(range(len(flatten_list(stage)))) for stage in time_signatures
]

offsets = make_offsets(time_signatures)
 def test__simple_nested_reverse(self):
     X = [[1, 2], 3]
     new_X = flatten_list(X)
     test = [1, 2, 3]
     self.assertEqual(new_X, test)
Example #24
0
# -*- coding: utf-8 -*-
from surge.materials.segment_ii.violin.durations import denominators, durations
from surge.tools.utilities.flatten_list import flatten_list
from abjad import rhythmmakertools

taleas = [
    rhythmmakertools.Talea(
        counts=flatten_list(durations[0]),
        denominator=denominators[0]
    ),
    rhythmmakertools.Talea(
        counts=flatten_list(durations[1]),
        denominator=denominators[1]
    ),
    None,
    None,
    None,
    None,
    None,
]
 def test_simple_mixed_types(self):
     X = [1, ['a', {'z': 2}]]
     new_X = flatten_list(X)
     test = [1, 'a', {'z': 2}]
     self.assertEqual(new_X, test)
 def test__trivial(self):
     X = [1]
     new_X = flatten_list(X)
     test = [1]
     self.assertEqual(new_X, test)
 def test_return_type(self):
     X = []
     new_X = flatten_list(X)
     self.assertIsInstance(new_X, list)
 def test__simple_nested(self):
     X = [1, [2, 3]]
     new_X = flatten_list(X)
     test = [1, 2, 3]
     self.assertEqual(new_X, test)
 def test__trivial(self):
     X = [1]
     new_X = flatten_list(X)
     test = [1]
     self.assertEqual(new_X, test)
 def test__with_tuple(self):
     X = [1, (2, 3)]
     new_X = flatten_list(X)
     test = [1, 2, 3]
     self.assertEqual(new_X, test)
 def test__simple_nested(self):
     X = [1, [2, 3]]
     new_X = flatten_list(X)
     test = [1, 2, 3]
     self.assertEqual(new_X, test)
 def test__deeper(self):
     X = [1, [2, [3, [4]], 5], 6]
     new_X = flatten_list(X)
     test = [1, 2, 3, 4, 5, 6]
     self.assertEqual(new_X, test)
 def test_simple_mixed_types(self):
     X = [1, ['a', {'z': 2}]]
     new_X = flatten_list(X)
     test = [1, 'a', {'z': 2}]
     self.assertEqual(new_X, test)
 def test_return_type(self):
     X = []
     new_X = flatten_list(X)
     self.assertIsInstance(new_X, list)
Example #35
0
# -*- coding: utf-8 -*-
from surge.materials.segment_ii.cello.durations import denominators, durations
from surge.tools.utilities.flatten_list import flatten_list
from abjad import rhythmmakertools

taleas = [
    rhythmmakertools.Talea(
        counts=flatten_list(durations[0]),
        denominator=denominators[0]
    ),
    rhythmmakertools.Talea(
        counts=flatten_list(durations[1]),
        denominator=denominators[1]
    ),
    None,
    None,
    None,
    None,
    None,
]