tja2fumen


Nametja2fumen JSON
Version 0.8.0 PyPI version JSON
download
home_pageNone
SummaryConvert TJA chart files into fumen (.bin) chart files
upload_time2024-04-30 02:13:24
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT License Copyright (c) 2023 Vivaria Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords taiko tatsujin fumen tja
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
             
<p align="center">
  <img
    width="400"
    src="https://user-images.githubusercontent.com/76574898/255353006-6c4504d0-c9a4-40d1-961f-db4cef7add0d.png"
    alt="tja2fumen – TJA chart converter"
  />
  <br>
  tja2fumen is a tool that allows you to convert TJA charts (<code>.tja</code>) to fumen charts (<code>.bin</code>).
</p>

<p align="center">
  <a href="https://github.com/vivaria/tja2fumen/actions/workflows/test_and_publish_release.yml?query=branch%3Amain"><img src="https://img.shields.io/github/actions/workflow/status/vivaria/tja2fumen/test_and_publish_release.yml?label=Tests" alt="Test status (main branch)"></a>
  <a href="https://github.com/vivaria/tja2fumen/releases/latest"><img src="https://img.shields.io/github/v/release/vivaria/tja2fumen" alt="GitHub release (with filter)"></a>
  <a href="https://github.com/vivaria/tja2fumen/blob/main/LICENSE.txt"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT License"></a>
  <a href="https://github.com/pylint-dev/pylint"><img src="https://img.shields.io/badge/Linting-pylint-black" alt="Linting pylint"></a>
  <a href="https://github.com/PyCQA/flake8"><img src="https://img.shields.io/badge/Linting-flake8-black" alt="Linting flake8"></a>
  <a href="https://github.com/python/mypy"><img src="https://img.shields.io/badge/Typing-mypy-black" alt="Linting mypy"></a>
</p>

<p align="center">


</p>



----

> [!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](https://github.com/fluto/takotako). (Alternatively, you can also run TakoTako's `TJAConvert.exe` [directly on your TJA files](#tja--audio-conversion).)


> [!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 old `tja2bin.exe` with the latest version of `tja2fumen.exe`. This will ensure that your TJAs get converted accurately.
>
> You can do this by:
> - Downloading `tja2fumen.exe` from the [releases page](https://github.com/vivaria/tja2fumen/releases).
> - Renaming the file to `tja2bin.exe`.
> - Copying and pasting it into the `{TDMX_INSTALLATION_DIR}/BepInEx/plugins/com.fluto.takotako/` directory, replacing the old `tja2bin.exe`.

## Features

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.

- Command line tool to convert `.tja` chart files to official fumen `.bin` files.
- Decodes official fumen `.bin` files (to inspect metadata and note data).
- Fix `.bin` files that were previously converted by `tja2bin` (WIP, see [#65](https://github.com/vivaria/tja2fumen/issues/65)).
- Uses strong development practices (thorough test suite with example charts, type checking).
- Provides an open source resource for the Taiko no Tatsujin fumen file format.

## Usage

### TJA conversion

To convert a `.tja` file to `.bin` files, simply download `tja2fumen.exe` and run:

```bash
tja2fumen.exe "file.tja"
```

### TJA + Audio conversion

`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:

1. Download the [latest release of TakoTako](https://github.com/Fluto/TakoTako/releases).
2. Extract the `TJAConvert.exe` program into a separate folder.
3. Download the newest version of `tja2fumen.exe`. Rename it `tja2bin.exe`, then place it in the same folder as `TJAConvert.exe`.
4. Run the following command:

```bash
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.

### Decoding fumen charts in Python scripts

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:

```python
from tja2fumen.parsers import parse_fumen, parse_tja

fumen = parse_fumen("path/to/fumen_file.bin")
tja = parse_tja("path/to/tja_file.tja")
```

Please refer to `src/__init__.py` for further example usage of the Python API.

## TJA Support

If there is an unsupported feature that you would like support for, please make a request by [opening a new issue](https://github.com/vivaria/tja2fumen/issues/new).

### 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:`,<br>`DEMOSTART:`, etc.           | `⚪️`        | `⚪️`      | The only global metadata needed are `BPM:` and `OFFSET:`.               |
| `COURSE:`, `LEVEL:`, `BALLOON:`,<br> `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`                      | `✅`         | `⚠️`       | tja2fumen will write proper SENOTES (ド, コ, ドン, カ, カッ), see [#41](https://github.com/vivaria/tja2fumen/issues/41). |
| `5008,`, `6008,`, `7008,`                    | `✅`         | `✅`       |                                                                                                               |
| `9008,`                                      | `✅`         | `⚠️`      |                                                                                                               |
| `9000,`<br>`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](https://github.com/Fluto/TakoTako/issues/16)                                                        |
| `#MEASURE`                                   | `✅`         | `✅`       |                                                                                                               |
| `#SCROLL`                                    | `✅`         | `✅`       |                                                                                                               |
| `#GOGOSTART`, `#GOGOEND`                     | `✅`         | `✅`       |                                                                                                               |
| `#BARLINEOFF`, `#BARLINEON`                  | `✅`         | `✅`       |                                                                                                               |
| `#DELAY`                                     | `✅`         | `❌`       | See [#27](https://github.com/Fluto/TakoTako/issues/27)                                                        |
| `#BRANCHSTART`, `#BRANCHEND`                 | `✅`         | `✅`       |                                                                                                               |
| `#N`, `#E`, `#M`                             | `✅`         | `✅`       |                                                                                                               |
| `#SECTION`                                   | `⚠️`        | `❌`       | See [#53](https://github.com/vivaria/tja2fumen/issues/53), [#27](https://github.com/Fluto/TakoTako/issues/27) |
| `#LEVELHOLD`                                 | `✅`         | `❌`       |                                                                                                               |
| `#BMSCROLL`, `#LYRIC`,<br>`#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](https://github.com/vivaria/tja2fumen/issues/new) 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.

## 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](https://choosealicense.com/licenses/mit/)). 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()`](https://github.com/KatieFrogs/fumen-tools/blob/6ff3a2f7f53687f3dd49c5c57fcfc5ccbe3e5a10/fumen2osu/fumen2osu.py#L7-L152) function from the [`fumen2osu.py`](https://github.com/KatieFrogs/fumen-tools/blob/main/fumen2osu/fumen2osu.py) found in @KatieFrogs' [`fumen-tools`](https://github.com/KatieFrogs/fumen-tools) project.
- The TJA-parsing code in this project is a Python translation of the [`parseTJA.js`](https://github.com/WHMHammer/tja-tools/blob/master/src/js/parseTJA.js) file from @WHMHammer's [`tja-tools`](https://github.com/WHMHammer/tja-tools).
- sakurada0291, DDDDDD, U-ros, and others in the Discord for helping to test tja2fumen. :)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "tja2fumen",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "taiko, tatsujin, fumen, TJA",
    "author": null,
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/a0/8f/46cdb1585fd996265385f62adb4efda125b37bf96a4517ec875fb02a3474/tja2fumen-0.8.0.tar.gz",
    "platform": null,
    "description": "&nbsp;\r\n<p align=\"center\">\r\n  <img\r\n    width=\"400\"\r\n    src=\"https://user-images.githubusercontent.com/76574898/255353006-6c4504d0-c9a4-40d1-961f-db4cef7add0d.png\"\r\n    alt=\"tja2fumen \u2013 TJA chart converter\"\r\n  />\r\n  <br>\r\n  tja2fumen is a tool that allows you to convert TJA charts (<code>.tja</code>) to fumen charts (<code>.bin</code>).\r\n</p>\r\n\r\n<p align=\"center\">\r\n  <a href=\"https://github.com/vivaria/tja2fumen/actions/workflows/test_and_publish_release.yml?query=branch%3Amain\"><img src=\"https://img.shields.io/github/actions/workflow/status/vivaria/tja2fumen/test_and_publish_release.yml?label=Tests\" alt=\"Test status (main branch)\"></a>\r\n  <a href=\"https://github.com/vivaria/tja2fumen/releases/latest\"><img src=\"https://img.shields.io/github/v/release/vivaria/tja2fumen\" alt=\"GitHub release (with filter)\"></a>\r\n  <a href=\"https://github.com/vivaria/tja2fumen/blob/main/LICENSE.txt\"><img src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"MIT License\"></a>\r\n  <a href=\"https://github.com/pylint-dev/pylint\"><img src=\"https://img.shields.io/badge/Linting-pylint-black\" alt=\"Linting pylint\"></a>\r\n  <a href=\"https://github.com/PyCQA/flake8\"><img src=\"https://img.shields.io/badge/Linting-flake8-black\" alt=\"Linting flake8\"></a>\r\n  <a href=\"https://github.com/python/mypy\"><img src=\"https://img.shields.io/badge/Typing-mypy-black\" alt=\"Linting mypy\"></a>\r\n</p>\r\n\r\n<p align=\"center\">\r\n\r\n\r\n</p>\r\n\r\n\r\n\r\n----\r\n\r\n> [!IMPORTANT]\r\n> 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`).\r\n> \r\n> If you are not a mod developer, and you just want to play TJAs on Taiko no Tatsujin PC, please install and run [TakoTako](https://github.com/fluto/takotako). (Alternatively, you can also run TakoTako's `TJAConvert.exe` [directly on your TJA files](#tja--audio-conversion).)\r\n\r\n\r\n> [!NOTE]\r\n> #### Replacing tja2bin (TakoTako 3.2.0 and below)\r\n> TakoTako 3.2.0 includes an older, flawed tool called `tja2bin.exe`. If you have downloaded TakoTako 3.2.0, you should replace the old `tja2bin.exe` with the latest version of `tja2fumen.exe`. This will ensure that your TJAs get converted accurately.\r\n>\r\n> You can do this by:\r\n> - Downloading `tja2fumen.exe` from the [releases page](https://github.com/vivaria/tja2fumen/releases).\r\n> - Renaming the file to `tja2bin.exe`.\r\n> - Copying and pasting it into the `{TDMX_INSTALLATION_DIR}/BepInEx/plugins/com.fluto.takotako/` directory, replacing the old `tja2bin.exe`.\r\n\r\n## Features\r\n\r\ntja2fumen 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.\r\n\r\n- Command line tool to convert `.tja` chart files to official fumen `.bin` files.\r\n- Decodes official fumen `.bin` files (to inspect metadata and note data).\r\n- Fix `.bin` files that were previously converted by `tja2bin` (WIP, see [#65](https://github.com/vivaria/tja2fumen/issues/65)).\r\n- Uses strong development practices (thorough test suite with example charts, type checking).\r\n- Provides an open source resource for the Taiko no Tatsujin fumen file format.\r\n\r\n## Usage\r\n\r\n### TJA conversion\r\n\r\nTo convert a `.tja` file to `.bin` files, simply download `tja2fumen.exe` and run:\r\n\r\n```bash\r\ntja2fumen.exe \"file.tja\"\r\n```\r\n\r\n### TJA + Audio conversion\r\n\r\n`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:\r\n\r\n1. Download the [latest release of TakoTako](https://github.com/Fluto/TakoTako/releases).\r\n2. Extract the `TJAConvert.exe` program into a separate folder.\r\n3. Download the newest version of `tja2fumen.exe`. Rename it `tja2bin.exe`, then place it in the same folder as `TJAConvert.exe`.\r\n4. Run the following command:\r\n\r\n```bash\r\nTJAConvert.exe \"path_to_folder_containing_both_tja_and_audio/\"\r\n```\r\n\r\n`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.\r\n\r\n### Decoding fumen charts in Python scripts\r\n\r\nIf you want to explore the song structure of existing `.bin` files or `.tja` files using Python scripts, run:\r\n\r\n```\r\npip install tja2fumen\r\n```\r\n\r\nThen, you can use tja2fumen's Python API as follows:\r\n\r\n```python\r\nfrom tja2fumen.parsers import parse_fumen, parse_tja\r\n\r\nfumen = parse_fumen(\"path/to/fumen_file.bin\")\r\ntja = parse_tja(\"path/to/tja_file.tja\")\r\n```\r\n\r\nPlease refer to `src/__init__.py` for further example usage of the Python API.\r\n\r\n## TJA Support\r\n\r\nIf there is an unsupported feature that you would like support for, please make a request by [opening a new issue](https://github.com/vivaria/tja2fumen/issues/new).\r\n\r\n### Supported file formats\r\n\r\n> **Legend**: `\u2705` = Fully supported, `\u274c` = Not supported\r\n\r\n|                     | tja 2 fumen | tja 2 bin | Comment  |\r\n|---------------------|-------------|-----------|----------|\r\n| UTF-8 (with BOM)    | `\u2705`         | `\u274c`       | \u2000        |\r\n| UTF-8 (without BOM) | `\u2705\ufe0f`        | `\u2705`       | \u2000        |\r\n| Shift-JIS           | `\u2705`         | `\u2705`       | \u2000        |\r\n\r\n### Supported metadata\r\n\r\n> **Legend**: `\u2705` = Fully supported, `\u26aa\ufe0f` = Ignored, `\u26a0\ufe0f` = Incorrect behavior, `\u274c` = Not supported\r\n\r\n|                                                                 | tja 2 fumen | tja 2 bin | Comment                                                                 |\r\n|-----------------------------------------------------------------|-------------|-----------|-------------------------------------------------------------------------|\r\n| `BPM:`, `OFFSET:`                                               | `\u2705`         | `\u2705`       | \u2000                                                                       |\r\n| `TITLE:`, `SUBTITLE:`, `WAVE:`,<br>`DEMOSTART:`, etc.           | `\u26aa\ufe0f`        | `\u26aa\ufe0f`      | The only global metadata needed are `BPM:` and `OFFSET:`.             \u2000 |\r\n| `COURSE:`, `LEVEL:`, `BALLOON:`,<br> `SCOREINIT:`, `SCOREDIFF:` | `\u2705`         | `\u2705`       | \u2000                                                                       |\r\n| `STYLE:` (`Single`, `Double`)                                   | `\u2705`         | `\u274c`       | \u2000                                                                       |\r\n| `EXAM1:`, `GAUGEINCR:`, `TOTAL:`, etc.                          | `\u26aa\ufe0f`        | `\u26aa\ufe0f`      | Other simulator-specific metadata fields are currently ignored.\u2000        |\r\n\r\n### Supported notes/commands\r\n\r\n> **Legend**: `\u2705` = Fully supported, `\u26aa\ufe0f` = Ignored, `\u26a0\ufe0f` = Incorrect behavior, `\u274c` = Not supported\r\n\r\n|                                              | tja 2 fumen | tja 2 bin | Comment                                                                                                       |\r\n|----------------------------------------------|-------------|-----------|---------------------------------------------------------------------------------------------------------------|\r\n| `0`, `1`, `2`, `3`, `4`                      | `\u2705`         | `\u26a0\ufe0f`       | tja2fumen will write proper SENOTES (\u30c9, \u30b3, \u30c9\u30f3, \u30ab, \u30ab\u30c3), see [#41](https://github.com/vivaria/tja2fumen/issues/41). |\r\n| `5008,`, `6008,`, `7008,`                    | `\u2705`         | `\u2705`       |                                                                                                               |\r\n| `9008,`                                      | `\u2705`         | `\u26a0\ufe0f`      |                                                                                                               |\r\n| `9000,`<br>`9008,`                           | `\u26aa\ufe0f`        | `\u26a0\ufe0f`      | Double Kusudama note treated as 1 drumroll by tja2fumen, but 2 overlapping drumrolls by tja2bin.              |\r\n| `A`, `B`                                     | `\u2705`         | `\u274c`       | Multiplayer \"hands\" notes are valid in fumens, but unrecognized by tja2bin.                                   |\r\n| `C`, `D`, `E`, `F`, `G`, `H`, `I`            | `\u26a0\ufe0f`        | `\u274c`       | Replaced by normal notes/rolls in tja2fumen.                                                                  |\r\n| `#START`, `#END`                             | `\u2705`         | `\u2705`       |                                                                                                               |\r\n| `#START P1`, `#START P2`                     | `\u2705`         | `\u274c`       |                                                                                                               |\r\n| `#BPMCHANGE`                                 | `\u2705`         | `\u26a0\ufe0f`      | See [#16](https://github.com/Fluto/TakoTako/issues/16)                                                        |\r\n| `#MEASURE`                                   | `\u2705`         | `\u2705`       |                                                                                                               |\r\n| `#SCROLL`                                    | `\u2705`         | `\u2705`       |                                                                                                               |\r\n| `#GOGOSTART`, `#GOGOEND`                     | `\u2705`         | `\u2705`       |                                                                                                               |\r\n| `#BARLINEOFF`, `#BARLINEON`                  | `\u2705`         | `\u2705`       |                                                                                                               |\r\n| `#DELAY`                                     | `\u2705`         | `\u274c`       | See [#27](https://github.com/Fluto/TakoTako/issues/27)                                                        |\r\n| `#BRANCHSTART`, `#BRANCHEND`                 | `\u2705`         | `\u2705`       |                                                                                                               |\r\n| `#N`, `#E`, `#M`                             | `\u2705`         | `\u2705`       |                                                                                                               |\r\n| `#SECTION`                                   | `\u26a0\ufe0f`        | `\u274c`       | See [#53](https://github.com/vivaria/tja2fumen/issues/53), [#27](https://github.com/Fluto/TakoTako/issues/27) |\r\n| `#LEVELHOLD`                                 | `\u2705`         | `\u274c`       |                                                                                                               |\r\n| `#BMSCROLL`, `#LYRIC`,<br>`#DIRECTION`, etc. | `\u26aa\ufe0f`        | `\u274c`       | Other simulator-specific chart commands are currently ignored.                                                |\r\n\r\n## Reporting bugs\r\n\r\nIf you've found a `.tja` file that tja2fumen converts incorrectly, please [open a new issue](https://github.com/vivaria/tja2fumen/issues/new) on the tja2fumen repo. \r\n\r\nIt 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.\r\n\r\n## Building on top of tja2fumen\r\n\r\nIf you are a developer looking to add tja2fumen to your project, you have two options:\r\n\r\n1. For non-Python projects, you can download `tja2fumen.exe` and call it via a system call.\r\n2. For Python projects, you can install tja2fumen via `pip install tja2fumen`.\r\n\r\ntja2fumen uses a very permissable license ([MIT License](https://choosealicense.com/licenses/mit/)). 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.\r\n\r\n## Attribution\r\n\r\n- The fumen-parsing code in this project is based off of a modified copy of the [`readFumen()`](https://github.com/KatieFrogs/fumen-tools/blob/6ff3a2f7f53687f3dd49c5c57fcfc5ccbe3e5a10/fumen2osu/fumen2osu.py#L7-L152) function from the [`fumen2osu.py`](https://github.com/KatieFrogs/fumen-tools/blob/main/fumen2osu/fumen2osu.py) found in @KatieFrogs' [`fumen-tools`](https://github.com/KatieFrogs/fumen-tools) project.\r\n- The TJA-parsing code in this project is a Python translation of the [`parseTJA.js`](https://github.com/WHMHammer/tja-tools/blob/master/src/js/parseTJA.js) file from @WHMHammer's [`tja-tools`](https://github.com/WHMHammer/tja-tools).\r\n- sakurada0291, DDDDDD, U-ros, and others in the Discord for helping to test tja2fumen. :)\r\n",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) 2023 Vivaria  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ",
    "summary": "Convert TJA chart files into fumen (.bin) chart files",
    "version": "0.8.0",
    "project_urls": {
        "Bug Reports": "https://github.com/vivaria/tja2fumen/issues/",
        "Homepage": "https://github.com/vivaria/tja2fumen/",
        "Source": "https://github.com/vivaria/tja2fumen/"
    },
    "split_keywords": [
        "taiko",
        " tatsujin",
        " fumen",
        " tja"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "426314ad7dd59a0ff7d201b1a38f91d8c1df8794d7386cffdeaf86f502c57e25",
                "md5": "83053a7a860a7ec32589c50a48b58d72",
                "sha256": "70f62b4a230ca5358eac077084513784a1153c1af002260555691319def40805"
            },
            "downloads": -1,
            "filename": "tja2fumen-0.8.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "83053a7a860a7ec32589c50a48b58d72",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 52664,
            "upload_time": "2024-04-30T02:13:22",
            "upload_time_iso_8601": "2024-04-30T02:13:22.414474Z",
            "url": "https://files.pythonhosted.org/packages/42/63/14ad7dd59a0ff7d201b1a38f91d8c1df8794d7386cffdeaf86f502c57e25/tja2fumen-0.8.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a08f46cdb1585fd996265385f62adb4efda125b37bf96a4517ec875fb02a3474",
                "md5": "912ca238287fd328efcb6b3b1492c1f6",
                "sha256": "c4d22e5f6b3d167fea95f25aa6d680bc700bd11f572b3b561854aef441e4f984"
            },
            "downloads": -1,
            "filename": "tja2fumen-0.8.0.tar.gz",
            "has_sig": false,
            "md5_digest": "912ca238287fd328efcb6b3b1492c1f6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 55926,
            "upload_time": "2024-04-30T02:13:24",
            "upload_time_iso_8601": "2024-04-30T02:13:24.193699Z",
            "url": "https://files.pythonhosted.org/packages/a0/8f/46cdb1585fd996265385f62adb4efda125b37bf96a4517ec875fb02a3474/tja2fumen-0.8.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-30 02:13:24",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "vivaria",
    "github_project": "tja2fumen",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "tja2fumen"
}
        
Elapsed time: 0.23876s