Generation

This commit is contained in:
khodowany
2026-09-26 10:12:51 -05:00
parent 9fd5abd075
commit 1d5f3a9372
20 changed files with 681 additions and 155 deletions
+4 -1
View File
@@ -4,6 +4,7 @@ import pathlib
import generator.accompaniment
import generator.guitar
import generator.melody
import generator.musicxml
import generator.parts
import generator.rhythm
@@ -23,7 +24,7 @@ def _practice_document(document: dict, part_type: str, plan: generator.accompani
role = {'acoustic': 'accompaniment', 'electric': 'melody', 'vocal': 'vocal'}[part_type]
if part_type == 'acoustic' and plan is None:
raise ValueError('acoustic practice requires a rhythm plan')
measures = [generator.parts.build_measure(m, f'measure-{i + 1}', role, part_type, previous[i], m.get('section_label', ''), plan.acoustic[i] if part_type == 'acoustic' else None) for i, m in enumerate(staff['measures'])]
measures = [generator.parts.build_measure(m, f'measure-{i + 1}', role, part_type, previous[i], m.get('section_label', ''), (plan.acoustic_bass[i], plan.acoustic_upper[i]) if part_type == 'acoustic' else None) for i, m in enumerate(staff['measures'])]
for measure in measures:
for chord in measure['harmonies']:
chord.pop('chord_optional', None)
@@ -32,6 +33,8 @@ def _practice_document(document: dict, part_type: str, plan: generator.accompani
if part_type == 'vocal':
generator.scat.add_scat(result)
else:
generator.accompaniment.prepare_basses(result)
generator.melody.harmonize(result)
generator.guitar.place_guitar(result)
if generator.accompaniment.connect_continuations(result):
generator.guitar.place_guitar(result)