1
0
mirror of synced 2024-12-04 17:17:53 +01:00
Convert TJA charts into fumen (.bin) files
Go to file
2024-01-25 15:05:32 -05:00
.github/workflows Revert from Python 3.10 to 3.8 2023-08-05 11:03:05 -04:00
.vscode .vscode: Add files generated by Codespaces 2023-07-24 00:43:05 +00:00
src/tja2fumen parsers.py: Add fix for inconsistent ordering between test runs 2024-01-25 15:05:32 -05:00
testing Fix error when metadata fields have numbers in them (e.g. NOTESDESIGNER0) (#61) 2023-08-05 11:00:28 -04:00
.gitignore .gitignore: Use GitHub's template 2023-07-30 19:26:41 -04:00
LICENSE.txt Update codebase to adhere to flake8 and add linting check (#51) 2023-07-21 22:57:18 -04:00
MANIFEST.in Update codebase to adhere to flake8 and add linting check (#51) 2023-07-21 22:57:18 -04:00
pyproject.toml Revert from Python 3.10 to 3.8 2023-08-05 11:03:05 -04:00
README.md README.md: Add badges for code quality tools 2023-07-30 18:50:20 -04:00
setup.py setup.py: Add newline 2023-06-26 19:54:51 -04:00

 

tja2fumen – TJA chart converter
tja2fumen is a tool that allows you to convert TJA charts (.tja) to fumen charts (.bin).

Test status (main branch) GitHub release (with filter) MIT License Linting pylint Linting flake8 Linting mypy


Features

  • Parse .tja chart files.
  • Convert parsed TJA song data into fumen chart data.
  • Write fumen chart data to .bin files.
  • Decode official fumen .bin files.

Usage

tja2fumen is included as part of several existing projects. So, you may be using tja2fumen already!

  • XB1/TDMX: TakoTako converts both chart and audio files for XB1/TDMX.
  • Nijiro: TaikoSoundEditor converts both chart and audio files for NIjiro.

You can also use tja2fumen directly on a .tja file by downloading tja2fumen.exe from the Releases page and running tja2fumen.exe file.tja in a command prompt.

Note

: For older versions of TakoTako (3.2.0 and below), you can add tja2fumen by renaming tja2fumen.exe to tja2bin.exe and placing it inside TakoTako's plugin folder (BepInEx/plugins/com.fluto.takotako/).

TJA Support

If there is an unsupported feature that you would like support for, please make a request by opening a new issue.

Supported file formats

Legend: = Fully supported, = Not supported

tja 2 fumen tja 2 bin Comment
UTF-8 (with BOM)  
UTF-8 (without BOM) ✅️  
Shift-JIS  

Supported metadata

Legend: = Fully supported, ⚪️ = Ignored, ⚠️ = Incorrect behavior, = Not supported

tja 2 fumen tja 2 bin Comment
BPM:, OFFSET:  
TITLE:, SUBTITLE:, WAVE:,
DEMOSTART:, etc.
⚪️ ⚪️ The only global metadata needed are BPM: and OFFSET:.  
COURSE:, LEVEL:, BALLOON:,
SCOREINIT:, SCOREDIFF:
 
STYLE: (Single, Double)  
EXAM1:, GAUGEINCR:, TOTAL:, etc. ⚪️ ⚪️ Other simulator-specific metadata fields are currently ignored. 

Supported notes/commands

Legend: = Fully supported, ⚪️ = Ignored, ⚠️ = Incorrect behavior, = Not supported

tja 2 fumen tja 2 bin Comment
0, 1, 2, 3, 4
5008,, 6008,, 7008,
9008, ⚠️
9000,
9008,
⚪️ ⚠️ Double Kusudama note treated as 1 drumroll by tja2fumen, but 2 overlapping drumrolls by tja2bin.
A, B Multiplayer "hands" notes are valid in fumens, but unrecognized by tja2bin.
C, D, E, F, G, H, I ⚠️ Replaced by normal notes/rolls in tja2fumen.
#START, #END
#START P1, #START P2
#BPMCHANGE ⚠️ See #16
#MEASURE
#SCROLL
#GOGOSTART, #GOGOEND
#BARLINEOFF, #BARLINEON
#DELAY See #27
#BRANCHSTART, #BRANCHEND
#N, #E, #M
#SECTION ⚠️ See #53, #27
#LEVELHOLD
#BMSCROLL, #LYRIC,
#DIRECTION, etc.
⚪️ Other simulator-specific chart commands are currently ignored.

Reporting bugs

If you've found a .tja file that tja2fumen converts incorrectly, please open a new issue on the tja2fumen repo.

It is especially important that you attach the song files to the issue. You can do this by adding the song files to a .zip (Select files -> Right click -> "Send to" -> "Compressed (zipped) folder"), and then uploading the .zip to the issue. This greatly helps me to reproduce and fix any issues.

You can also message me directly on Discord (_vivaria) if you don't have a GitHub account, and I will take care of making an issue for you. :)

Building on top of tja2fumen

If you are a developer looking to add tja2fumen to your project, you have two options:

  1. For non-Python projects, you can download tja2fumen.exe and call it via a system call.
  2. For Python projects, you can install tja2fumen via pip install tja2fumen.

tja2fumen uses a very permissable license (MIT License). You are free to distribute and modify tja2fumen, but please include a copy of the MIT License alongside the tja2fumen.exe executable if you copy it into your project.

Attribution

  • The fumen-parsing code in this project is based off of a modified copy of the readFumen() function from the fumen2osu.py found in @KatieFrogs' fumen-tools project.
  • The TJA-parsing code in this project is a Python translation of the parseTJA.js file from @WHMHammer's tja-tools.
  • sakurada0291, DDDDDD, U-ros, and others in the Discord for helping to test tja2fumen. :)