+11
-7
@@ -53,13 +53,17 @@ def generate_tree(source_dir, output_dir, *, jobs=2, cache_dir=None, progress=Fa
|
||||
except Exception as error:
|
||||
raise ValueError(f'{path.name}/{role}: {error}') from error
|
||||
for path, (original, source) in sources.items():
|
||||
assembled = generator.arrange.assembly.assemble(source, results[path])
|
||||
generator.arrange.accompaniment.audit(original, assembled)
|
||||
reuse = generator.arrange.accompaniment.audit(original, {role: value['document'] for role, value in results[path].items()}, role_documents=True)
|
||||
for part, document in assembled.items():
|
||||
document['metadata'] = copy.deepcopy(original['metadata'])
|
||||
document['metadata']['song_id'] = generator.score.slugify(path.stem)
|
||||
generator.score_io.write_json(output_dir / (generator.score.slugify(path.stem) + '_' + part + '.json'), document)
|
||||
for solos_enabled in (True, False):
|
||||
assembled = generator.arrange.assembly.assemble(source, results[path], solos_enabled=solos_enabled)
|
||||
generator.arrange.accompaniment.audit(original, assembled)
|
||||
for part, document in assembled.items():
|
||||
if part == 'vocal' and not solos_enabled:
|
||||
continue
|
||||
document['metadata'] = copy.deepcopy(original['metadata'])
|
||||
document['metadata'].update(song_id=generator.score.slugify(path.stem), solos_enabled=solos_enabled)
|
||||
suffix = '' if solos_enabled else '_improv'
|
||||
generator.score_io.write_json(output_dir / (generator.score.slugify(path.stem) + '_' + part + suffix + '.json'), document)
|
||||
analysis_dir = output_dir.parent / 'analysis'
|
||||
analysis_dir.mkdir(parents=True, exist_ok=True)
|
||||
(analysis_dir / (generator.score.slugify(path.stem) + '.txt')).write_text('\n'.join(results[path][r]['report'] for r in generator.composition_types.ROLES))
|
||||
@@ -68,4 +72,4 @@ def generate_tree(source_dir, output_dir, *, jobs=2, cache_dir=None, progress=Fa
|
||||
for role, audit in reuse.items():
|
||||
stable[role]['details']['reuse_audit'] = audit
|
||||
(analysis_dir / (generator.score.slugify(path.stem) + '.roles')).write_text(json.dumps(stable, sort_keys=True, indent=2))
|
||||
return len(sources) * 3
|
||||
return len(sources) * 5
|
||||
|
||||
Reference in New Issue
Block a user