1
0
mirror of synced 2024-11-30 15:54:27 +01:00
tja2fumen/README.md

10 KiB
Raw Blame History

 

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. :)