| """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 |
| sustain_ticks: int = 0 |
| is_hopo: bool = False |
|
|
|
|
| @dataclass |
| class ChartData: |
| """Complete chart data ready for MIDI serialization.""" |
| resolution: int = 192 |
| 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) |
| notes: dict = field(default_factory=dict) |
| beats: list = field(default_factory=list) |
|
|