"""Explicit, deterministic supervised training; never called by an asset build.""" from __future__ import annotations import argparse import dataclasses import hashlib import json import os from pathlib import Path import tempfile import time from fractions import Fraction as F from generator import harmony, model, musicxml, parts, training_io, vocabulary from generator import harmonic_time as timeline from generator.solo import analysis, learned @dataclasses.dataclass(frozen=True) class Span: start:F end:F chord:str class Context: def __init__(self,document): self.spans=tuple(Span(s.start,s.end,harmony.symbol(s.chord) if s.chord else 'N.C.') for s in timeline.read(document['staves'][0])) def at(self,time):return next((s for s in self.spans if s.start<=timecursor:events.append((cursor,start,None)) events.append((start,end,pitch));cursor=end if cursor