Files
product-vamp/tests/test_six_parts.py
T
khodowany 82349cf897
ci / checks (push) Failing after 23m37s
Playback
2026-10-05 23:41:11 -05:00

48 lines
2.1 KiB
Python

import copy
import dataclasses
import fractions
import unittest
import generator.arrange.generate
import generator.arrange.form
import generator.model
import generator.parts
import generator.solo.arrangement
import generator.solo.analysis
import generator.solo.profiles
import generator.solo.placement
import generator.solo.types
import generator.solo.harmonic
import tests.solo_fixtures
import tests.solo_fixtures
import tests.solo_fixtures
def events(measure):
return tuple((generator.model.fraction(n['onset']), generator.model.fraction(n['duration']),
tuple((p['letter'], p['alter']['numerator'], p['octave'], p['tablature']['string'], p['tablature']['fret']) for p in n['pitches']))
for v in measure['voices'] for n in v['notes'])
class SoloInstrumentAndIdentity(unittest.TestCase):
def test_role_ranges_and_no_open_strings(self):
acoustic = generator.solo.profiles.for_part('acoustic')
electric = generator.solo.profiles.for_part('electric')
self.assertEqual(acoustic.register, (41, 76))
self.assertEqual(electric.register, (41, 76))
self.assertTrue(acoustic.permits(41))
self.assertTrue(electric.permits(50))
self.assertTrue(acoustic.permits(72))
for profile in (acoustic, electric):
for midi in range(40, 78):
for p in generator.solo.placement.positions(midi, profile):
self.assertIn(p.string_number, profile.strings)
self.assertTrue(1 <= p.fret <= 12)
self.assertTrue(any(p.string_number == 1 for p in generator.solo.placement.positions(65, electric)))
self.assertTrue(any(p.string_number == 1 for p in generator.solo.placement.positions(65, acoustic)))
def test_soft_overlapping_registers_do_not_inherit_a_mandatory_octave(self):
source = generator.solo.analysis.analyze(generator.parts.prepare_document(tests.solo_fixtures.song(count=4, chords=('CM7',))))
acoustic = generator.solo.profiles.for_part('acoustic', source)
electric = generator.solo.profiles.for_part('electric', source)
self.assertIsNone(electric.reference)
self.assertIsNone(acoustic.reference)
self.assertEqual(acoustic.melody_range, electric.melody_range)