tja2fumen is a tool that allows you to convert TJA charts (.tja
) to fumen charts (.bin
).
[!IMPORTANT] tja2fumen is a tool designed for mod developers. It allows modders to load TJA charts into official games by converting them into Taiko's official binary fumen file format (
.bin
).If you are not a mod developer, and you just want to play TJAs on Taiko no Tatsujin PC, please install and run TakoTako. (Alternatively, you can also run TakoTako's
TJAConvert.exe
directly on your TJA files.)[!NOTE]
Replacing tja2bin (TakoTako 3.2.0 and below)
TakoTako 3.2.0 includes an older, flawed tool called
tja2bin.exe
. If you have downloaded TakoTako 3.2.0, you should replace the oldtja2bin.exe
with the latest version oftja2fumen.exe
. This will ensure that your TJAs get converted accurately.You can do this by:
- Downloading
tja2fumen.exe
from the releases page.- Renaming the file to
tja2bin.exe
.- Copying and pasting it into the
{TDMX_INSTALLATION_DIR}/BepInEx/plugins/com.fluto.takotako/
directory, replacing the oldtja2bin.exe
.
tja2fumen is designed to be an open source alternative to the closed source tja2bin tool that has been floating around various Discord servers. tja2fumen fixes several outstanding tja2bin issues, while providing an open source codebase to modify and learn from.
.tja
chart files to official fumen .bin
files..bin
files (to inspect metadata and note data)..bin
files that were previously converted by tja2bin
(WIP, see #65).To convert a .tja
file to .bin
files, simply download tja2fumen.exe
and run:
tja2fumen.exe "file.tja"
tja2fumen.exe
only converts TJA files. If you want to convert both TJAs and audio (.OGG or .WAV files) to .bin
files, you can use the TakoTako plugin for the PC version of Taiko no Tatsujin. However, if you don't want to install and run Taiko no Tatsujin on PC, then you can use this simpler method instead:
TJAConvert.exe
program into a separate folder.tja2fumen.exe
. Rename it tja2bin.exe
, then place it in the same folder as TJAConvert.exe
.TJAConvert.exe "path_to_folder_containing_both_tja_and_audio/"
TJAConvert.exe
will convert the audio to CRIWARE HCA packed into ACB container, and then it will call tja2fumen.exe
to convert the chart files. (This is the exact same conversion you would get by running TakoTako as a BepInEx plugin -- you just have more control.) Note that the output audio is unencrypted, and that ACB audio files are incompatible with any NUS3BANK-based games.
If you want to explore the song structure of existing .bin
files or .tja
files using Python scripts, run:
pip install tja2fumen
Then, you can use tja2fumen's Python API as follows:
# parse song files
from tja2fumen.parsers import parse_fumen, parse_tja
fumen = parse_fumen("path/to/fumen_file.bin")
tja = parse_tja("path/to/tja_file.tja")
# convert tja data to fumen data
from tja2fumen.converters import convert_tja_to_fumen
fumen_converted = convert_tja_to_fumen(tja)
# modify the FumenCourse object
# - e.g.1: change the timing window header metadata
from tja2fumen.constants import TIMING_WINDOWS
fumen.header.b000_b431_timing_windows = TIMING_WINDOWS['Easy']*36
# - e.g.2: change the note offset values
for measure in fumen.measures:
measure.offset_start += 1_000 # 1000ms == 1s
measure.offset_end += 1_000
# write the modified fumen back to a .bin file
from tja2fumen.writers import write_fumen
write_fumen("path/to/file.bin", fumen)
Please refer to src/__init__.py
for further example usage of the Python API.
If there is an unsupported feature that you would like support for, please make a request by opening a new issue.
Legend:
✅
= Fully supported,❌
= Not supported
tja 2 fumen | tja 2 bin | Comment | |
---|---|---|---|
UTF-8 (with BOM) | ✅ |
❌ |
|
UTF-8 (without BOM) | ✅️ |
✅ |
|
Shift-JIS | ✅ |
✅ |
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. |
Legend:
✅
= Fully supported,⚪️
= Ignored,⚠️
= Incorrect behavior,❌
= Not supported
tja 2 fumen | tja 2 bin | Comment | |
---|---|---|---|
0 , 1 , 2 , 3 , 4 |
✅ |
⚠️ |
tja2fumen will write proper SENOTES (ド, コ, ドン, カ, カッ), see #41. |
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. |
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.
If you are a developer looking to add tja2fumen to your project, you have two options:
tja2fumen.exe
and call it via a system call.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.
readFumen()
function from the fumen2osu.py
found in @KatieFrogs' fumen-tools
project.parseTJA.js
file from @WHMHammer's tja-tools
.