midmid3 / midmid /datatypes.py
markury's picture
Initial commit
d171350
"""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), ...]