Training Model
This commit is contained in:
@@ -11,7 +11,6 @@ import generator.musicxml
|
||||
import generator.parts
|
||||
import generator.playback
|
||||
import generator.score
|
||||
import tests.rhythm_fixtures
|
||||
import tests.test_musicxml
|
||||
import tests.test_parts
|
||||
|
||||
@@ -26,11 +25,10 @@ class ArrangementPickupTests(unittest.TestCase):
|
||||
document = generator.musicxml.load_musicxml(path)
|
||||
before = copy.deepcopy(document)
|
||||
prepared = generator.parts.prepare_document(document)
|
||||
plans = generator.arrange.generate.plan_arrangement(prepared, tests.rhythm_fixtures.library())
|
||||
timelines = []
|
||||
for part in generator.parts.PART_TYPES:
|
||||
with self.subTest(song=path.stem, part=part):
|
||||
result = generator.arrange.generate._arrange_document(prepared, part, plans)
|
||||
result = generator.arrange.generate.arrange_document(document, part)
|
||||
generator.model.validate_document(result)
|
||||
measures = result['staves'][0]['measures']
|
||||
self.assertEqual(len(measures), 176)
|
||||
@@ -50,7 +48,7 @@ class ArrangementPickupTests(unittest.TestCase):
|
||||
def test_unmarked_leading_rests_are_not_pickups(self):
|
||||
opening = '<note><rest/><duration>1</duration><type>quarter</type></note>' + tests.test_musicxml.xml_note(duration=3, kind='half', extra='<dot/>')
|
||||
document = source(opening, implicit=False)
|
||||
result = generator.arrange.generate.arrange_document(document, 'vocal', rhythms=tests.rhythm_fixtures.library())
|
||||
result = generator.arrange.generate.arrange_document(document, 'vocal')
|
||||
self.assertEqual(len(result['staves'][0]['measures']), 14)
|
||||
self.assertEqual(generator.score.body_start_measure_index(document['staves'][0]['measures']), 0)
|
||||
def test_short_pickup_ties_and_octave_spans_survive_each_melody_entry(self):
|
||||
@@ -58,7 +56,7 @@ class ArrangementPickupTests(unittest.TestCase):
|
||||
document['staves'][0]['octave_shifts'] = [{'id': 'pickup-shift', 'start': generator.model.rational(0), 'end': generator.model.rational(1), 'octaves': -1}]
|
||||
for part, boundaries in (('vocal', (1, 5)), ('electric', (2,))):
|
||||
with self.subTest(part=part):
|
||||
result = generator.arrange.generate.arrange_document(document, part, rhythms=tests.rhythm_fixtures.library())
|
||||
result = generator.arrange.generate.arrange_document(document, part)
|
||||
generator.model.validate_document(result)
|
||||
measures = result['staves'][0]['measures']
|
||||
self.assertEqual(len(measures), 7)
|
||||
@@ -90,14 +88,12 @@ class ArrangementPickupTests(unittest.TestCase):
|
||||
def test_pickup_harmonies_are_planned_for_every_part_at_the_same_offset(self):
|
||||
document = source(tests.test_parts.xml_harmony('F') + tests.test_musicxml.xml_note('F', 1, 'quarter'))
|
||||
prepared = generator.parts.prepare_document(document)
|
||||
plans = generator.arrange.generate.plan_arrangement(prepared, tests.rhythm_fixtures.library())
|
||||
for part in generator.parts.PART_TYPES:
|
||||
result = generator.arrange.generate._arrange_document(prepared, part, plans)
|
||||
result = generator.arrange.generate.arrange_document(document, part)
|
||||
generator.model.validate_document(result)
|
||||
for index in (0, 1, 4):
|
||||
chords = result['staves'][0]['measures'][index]['harmonies']
|
||||
self.assertEqual([(generator.model.fraction(h['onset']), h['root']['letter']) for h in chords], [(0, 'c'), (3, 'f')])
|
||||
self.assertIn(fractions.Fraction(3), [event.onset for event in plans[0].acoustic_upper[0].events])
|
||||
def test_pickup_tuplets_keep_unique_identities_across_iterations(self):
|
||||
notes = ''
|
||||
for index, pitch in enumerate(('C', 'D', 'E')):
|
||||
@@ -105,7 +101,7 @@ class ArrangementPickupTests(unittest.TestCase):
|
||||
notes += tests.test_musicxml.xml_note(pitch, 1, 'eighth', extra='<time-modification><actual-notes>3</actual-notes><normal-notes>2</normal-notes><normal-type>eighth</normal-type></time-modification>' + tuplet)
|
||||
document = source(notes, divisions=3)
|
||||
for part in ('vocal', 'electric'):
|
||||
result = generator.arrange.generate.arrange_document(document, part, rhythms=tests.rhythm_fixtures.library())
|
||||
result = generator.arrange.generate.arrange_document(document, part)
|
||||
generator.model.validate_document(result)
|
||||
spans = result['staves'][0]['tuplets']
|
||||
self.assertEqual(len(spans), 2 if part == 'vocal' else 1)
|
||||
@@ -117,4 +113,4 @@ class ArrangementPickupTests(unittest.TestCase):
|
||||
def test_overlong_pickup_is_rejected_with_measure_context(self):
|
||||
document = source(tests.test_musicxml.xml_note(duration=4), '<attributes><time><beats>3</beats><beat-type>4</beat-type></time></attributes>' + tests.test_musicxml.xml_note(duration=3, kind='half', extra='<dot/>'))
|
||||
with self.assertRaisesRegex(ValueError, 'measure 2: pickup is longer'):
|
||||
generator.arrange.generate.arrange_document(document, 'vocal', rhythms=tests.rhythm_fixtures.library())
|
||||
generator.arrange.generate.arrange_document(document, 'vocal')
|
||||
|
||||
Reference in New Issue
Block a user