File size: 826 Bytes
d171350 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | """Shared data types used across the pipeline."""
from dataclasses import dataclass, field
@dataclass
class NoteEvent:
"""A single note or chord at a specific tick position."""
tick: int
fret_set: set # {0, 1, 2, 3, 4} where 0=Green, 4=Orange
sustain_ticks: int = 0
is_hopo: bool = False
@dataclass
class ChartData:
"""Complete chart data ready for MIDI serialization."""
resolution: int = 192 # ticks per quarter note
tempo_events: list = field(default_factory=lambda: [(0, 120.0)])
time_signatures: list = field(default_factory=lambda: [(0, 4, 4)])
sections: list = field(default_factory=list) # [(tick, label), ...]
notes: dict = field(default_factory=dict) # {"expert": [NoteEvent, ...], ...}
beats: list = field(default_factory=list) # [(tick, is_downbeat), ...]
|