# Project: fumen-analyze ## Technical Stack - **Runtime**: [Bun](https://bun.sh/) - **Language**: TypeScript - **Library**: [tja](https://www.npmjs.com/package/tja) (TJA parser) ## Library Usage (tja) - **Import**: `import { TJAParser } from "tja";` - **Parsing**: `const parsed = TJAParser.parse(content);` - **Structure**: - `parsed.title`, `parsed.bpm`, `parsed.offset` - `parsed.courses` (Array of `Course` objects) - `course.difficulty` (e.g., "Oni") - `course.stars` (Level/Stars) - `course.activeCourse.getCommands()` returns an array of commands and note sequences. ## Purpose Analyzing or processing TJA (Taiko Jiro) file formats. ## Key References - `tja-format.mediawiki`: Detailed specification of the TJA format. ## TJA Format Overview - **Encoding**: UTF-8 with BOM or Shift-JIS. - **Extension**: `.tja`. - **Comments**: Start with `//`. - **Metadata**: Key-value pairs (e.g., `TITLE:`, `BPM:`, `OFFSET:`). - **Course Metadata**: Specific to difficulties (e.g., `COURSE:`, `LEVEL:`, `BALLOON:`). - **Notation**: Commands prefixed with `#` (e.g., `#START`, `#END`, `#MEASURE`, `#BPMCHANGE`). - **Notes**: `0-9`, `A`, `B`, `F`.