1
0
mirror of synced 2024-11-27 22:40:49 +01:00
Convert TJA charts into fumen (.bin) files
Go to file
2023-06-03 09:47:59 -04:00
tja2fumen main.py: Add basic argparse interface 2023-06-03 09:47:59 -04:00
README.md Update README.md 2023-06-02 17:43:59 -04:00

tja2fumen

This repo a new attempt to write a tja2fumen chart converter to replace/complement the existing tja2bin.exe converter.

Goals

  • Fix desyncronization issues due to BPMCHANGE commands. (See: https://github.com/Fluto/TakoTako/issues/16)
  • Provide open source code, as opposed to distributing only a closed-source binary.
  • Provide a highly-documented reference for parsing both the TJA and Fumen file formats.
  • Stick to "pure Python", i.e. no external dependencies if possible.
  • Provide support for Windows/Linux/macOS via PyInstaller or something similar.

Usage

The converter is in a messy/experimental state, and is not yet fit for use due to lack of support for important TJA commands.

Future work

Note

: Simulator-specific commands (such as those used for Dan-i Dojo charts) are unlikely to be supported, due to the lack of support from official console releases.

  • Bugfixes
    • Fix issue with BPMCHANGE + drumrolls. (Affected songs: Kokuryu, R.I.P. Hero, Challengers, etc.)
    • Properly handle the offset at the beginning of the song (Affected songs: SUPERNOVA, etc.)
    • Handle areFilesGZipped=False issue when combining charts with TakoTako/tja2bin.exe files (Affected songs: Aragami, MEGALOVANIA, exTora Trap!!).
  • Missing command support
    • Support for branch commands (#BRANCHSTART, #BRANCHEND, #N, #E, #M, #LEVELHOLD, etc.)
    • Support for barline manipulation commands (#BARLINEON, #BARLINEOFF)
    • Support for delay commands (#DELAY)
    • Support for P1/P2 charts (#STYLE: Single, #STYLE: Double, #START P1, START P2)
  • Project architecture
    • Refactoring into a more Pythonic style (variable names (camelCase -> under_score), object-oriented note/branch/measure representations, etc.)
    • Argument parsing + proper i/o handling
    • Packaging into an executable

Once these features are added, I will create an initial release. Until then, the source code in this repo is presented as-is.

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.

Note

: To be explicily clear, neither @KatieFrogs nor @WHMHammer have endorsed this project, are affiliated with this project, or have made any direct contributions to this project. I have just modified their existing work.