32 lines
1.1 KiB
Markdown
32 lines
1.1 KiB
Markdown
# 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`.
|