@@ -9,6 +9,7 @@ import generator.harmony
|
||||
import generator.model
|
||||
import generator.musicxml
|
||||
import generator.rhythm
|
||||
import generator.score
|
||||
import tests.rhythm_fixtures
|
||||
import tests.test_musicxml
|
||||
import tests.test_parts
|
||||
@@ -187,6 +188,7 @@ class VoicingTests(unittest.TestCase):
|
||||
result = generator.arrange.generate.arrange_document(source, 'electric', rhythms=tests.rhythm_fixtures.library())
|
||||
generator.model.validate_document(result)
|
||||
section, checked = '', set()
|
||||
source_index = generator.score.body_start_measure_index(source['staves'][0]['measures'])
|
||||
for measure in result['staves'][0]['measures']:
|
||||
for voice in measure['voices']:
|
||||
for note in voice['notes']:
|
||||
@@ -198,19 +200,20 @@ class VoicingTests(unittest.TestCase):
|
||||
section = measure.get('section_label') or section
|
||||
if section != 'Guitar Melody':
|
||||
continue
|
||||
original = next(m for m in source['staves'][0]['measures'] if m['number'] == measure['number'])
|
||||
original = source['staves'][0]['measures'][source_index]
|
||||
source_index += 1
|
||||
for note in measure['voices'][0]['notes']:
|
||||
if not note['pitches']:
|
||||
continue
|
||||
onset = generator.model.fraction(note['onset'])
|
||||
authored = next(n for n in original['voices'][0]['notes'] if generator.model.fraction(n['onset']) <= onset < generator.model.fraction(n['onset']) + generator.model.fraction(n['duration']))
|
||||
self.assertEqual(generator.model.pitch_number(note['pitches'][0]), generator.model.pitch_number(authored['pitches'][0]) + 12)
|
||||
if measure['number'] not in ('4', '12', '22', '24') or len(note['pitches']) == 1:
|
||||
if original['number'] not in ('4', '12', '22', '24') or len(note['pitches']) == 1:
|
||||
continue
|
||||
expected = (3, 3, 3, 3) if measure['number'] == '22' else (3, 5, 5, 5)
|
||||
expected = (3, 3, 3, 3) if original['number'] == '22' else (3, 5, 5, 5)
|
||||
frets = tuple(p['tablature']['fret'] for p in sorted(note['pitches'], key=lambda p: -p['tablature']['string']))
|
||||
self.assertEqual(frets, expected)
|
||||
self.assertEqual(generator.model.pitch_number(note['pitches'][0]), max(generator.model.pitch_number(p) for p in note['pitches']))
|
||||
checked.add(measure['number'])
|
||||
checked.add(original['number'])
|
||||
self.assertEqual(checked, {'4', '12', '22', '24'})
|
||||
self.assertEqual(source, before)
|
||||
|
||||
Reference in New Issue
Block a user