"""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), ...]