Fix Generation
This commit is contained in:
@@ -7,6 +7,7 @@ import pathlib
|
||||
import generator.accompaniment
|
||||
import generator.acoustic
|
||||
import generator.arrange.form
|
||||
import generator.electric
|
||||
import generator.guitar
|
||||
import generator.melody
|
||||
import generator.model
|
||||
@@ -48,7 +49,7 @@ def _arrange_document(document: dict, part_type: str, plans: dict[int, generator
|
||||
staff = generator.score.source_staff(document)
|
||||
source = staff['measures']
|
||||
sections = generator.arrange.form.full_arrangement_sections(source, part_type)
|
||||
output, tuplets, octave_shifts = [], [], []
|
||||
output, tuplets, octave_shifts, voicing_origins = [], [], [], []
|
||||
absolute = fractions.Fraction()
|
||||
source_starts = []
|
||||
source_time = fractions.Fraction()
|
||||
@@ -67,6 +68,8 @@ def _arrange_document(document: dict, part_type: str, plans: dict[int, generator
|
||||
rhythm = (plan.acoustic_bass[len(segment)], plan.acoustic_upper[len(segment)]) if part_type == 'acoustic' else plan.electric[len(segment)]
|
||||
result = generator.parts.build_measure(m, f'measure-{len(output) + len(segment) + 1}', section.role, part_type, previous[si], section.label if not segment else '', rhythm, melody_octave=True)
|
||||
segment.append(result)
|
||||
if part_type == 'electric' and section.role in ('melody', 'accompaniment'):
|
||||
voicing_origins.append(generator.electric.MeasureOrigin(source_starts[si], section.role, result))
|
||||
identity_segment = segment
|
||||
segment_length = sum((generator.model.fraction(m['duration']) for m in segment), fractions.Fraction())
|
||||
if section.role in ('vocal', 'melody'):
|
||||
@@ -116,9 +119,11 @@ def _arrange_document(document: dict, part_type: str, plans: dict[int, generator
|
||||
if part_type != 'vocal':
|
||||
generator.acoustic.prepare(result)
|
||||
generator.melody.harmonize(result)
|
||||
voicing_links = generator.electric.link_voicings(source, voicing_origins) if part_type == 'electric' else []
|
||||
generator.guitar.place_guitar(result)
|
||||
if generator.accompaniment.connect_continuations(result):
|
||||
generator.guitar.place_guitar(result)
|
||||
generator.electric.reuse_voicings(voicing_links)
|
||||
generator.acoustic.combine(result)
|
||||
return result
|
||||
|
||||
|
||||
Reference in New Issue
Block a user