1
0
mirror of synced 2024-11-12 00:30:46 +01:00
Commit Graph

317 Commits

Author SHA1 Message Date
Viv
85ea4d6efc
Add support for #SENOTECHANGE command (#81)
TJAPlayer3 implementation details
(https://github.com/IepIweidieng/TJAPlayer3/blob/gh-pages/tja.md#senotechange):

- `#SENOTECHANGE` can be placed at the start of a measure, or in the
middle of the measure
- It will only apply to 1 note immediately after the command
- It will override any automatic Don2/Don3/Ka2 assignment (from note
clusters)

How it works in `tja2fumen`:

- `#SENOTECHANGE` will be tracked in the TJA measure object
- It will split the measure into sub-measures (similar to gogo/bpm/etc.)
- It will only be applied to the first note, after which it will be
overwritten
- We set a `manually_set` flag to ensure that the manually-chosen value
doesn't get overwritten.

Fixes #69.
2024-10-30 00:12:26 -04:00
Viv
9b6f05b420
Fix parsing of BALLOON: so that values are correctly read for all 3 branches (#80)
I was making a bad assumption:

1. Songs with branches have the same number of balloons.
2. Each balloon has the same number of hits across branches.

Because I was making these assumptions, I thought I could just repeat
the `BALLOON:` field for each branch. **But this is wrong!!** Branches
can have different numbers of balloons, and they can have different
number of hits in their balloons. So, we need to **NOT** necessarily
repeat `BALLOON:`, and instead use the written value of `BALLOON:`
directly. This way we can get the different values for each branch.

This fixes the parsing of Emma's Ura (and probably other songs). Also,
this revealed a bug in my parsing of Roppon no Bara to Sai no Uta, so I
needed to make sure we account for "duplicated" balloons too, and repeat
the values _only when necessary_.
2024-10-26 12:34:03 -04:00
Viv
4e4a90a1f7
README.md: Fix another typo 2024-05-07 23:25:39 -04:00
Viv
052ee824a3
README.md: Fix typo 2024-05-07 23:22:19 -04:00
Viv
b10962f6f5
README.md: Add better examples for Python API 2024-05-07 23:21:39 -04:00
Viv
6c38eb770b
Add Linux build for self-contained executable (#76) 2024-05-06 20:39:30 -04:00
Viv
80d211b5b1
__init__.py: Bugfix for tjas with no extension 2024-05-06 19:38:20 -04:00
Viv
0dc34520cc
Allow tja2fumen to be run on folders to allow fixing timing windows on all .bin files (#75)
This saves the need for users running an extra script to call tja2fumen
once per file

This is especially important for the fix in #74.
2024-04-29 22:06:41 -04:00
Viv
405cea3be2
Properly set timing window values for easier difficulties (#74) 2024-04-29 18:44:18 -04:00
Viv
09d83c3808
README.md: Remove Discord info from GitHub 2024-03-20 17:44:18 -04:00
Viv
1a7028aaf9
README.md: Add anchor tag to TakoTako note 2024-02-19 11:18:57 -05:00
Viv
903859b55a
README.md: Clarify the upgrade process for TakoTako 3.2.0 2024-02-19 11:17:51 -05:00
Viv
4271aeec1e
README.md: Further clarify TakoTako/tja2fumen usage 2024-02-11 22:13:21 -05:00
Viv
ade4f66679 __init__.py: Don't throw error if extension not .tja 2024-02-11 03:47:37 -05:00
Viv
012648d4fc
README.md: Clarify wording 2024-02-10 20:02:13 -05:00
Viv
dcb9d19462 test_command_support.py: Temporarily mark test local-only
Checking warnings generated by the .exe isn't working as I'd expect, but this passes locally, and I want to create a new release.
2024-02-10 20:00:08 -05:00
Viv
6f83118f79 Fix flake8 linting issues 2024-02-10 19:57:24 -05:00
Viv
79af17e4cc converters.py: Change missing BALLOON from error to warning 2024-02-10 19:50:28 -05:00
Viv
b4416ba838 converters.py: Change unexpected 8 from error to warning 2024-02-10 19:50:28 -05:00
Viv
dcd73e5f32 converters.py: Improve how #BRANCHSTART is checked
Fixes https://github.com/vivaria/tja2fumen/issues/66.
2024-02-10 19:50:28 -05:00
Viv
b9927a9d6d converters.py: Fix typo in error message 2024-02-10 19:50:28 -05:00
Viv
93b8c5c01b converters.py: Change print statement to warning 2024-02-10 19:50:28 -05:00
Viv
f018c54089 parsers.py: Add function to equalize branches
Fixes https://github.com/vivaria/tja2fumen/issues/67.
2024-02-10 19:50:28 -05:00
Viv
b5e4f9dc7c parsers.py: Add warning + ignore invalid notes 2024-02-10 19:50:28 -05:00
Viv
0a77dcef1d parsers.py: Fix typo in error message 2024-02-10 19:50:28 -05:00
Viv
334a70e2b1 parsers.py: Account for #SECTION far before first #BRANCHSTART 2024-02-10 19:50:28 -05:00
Viv
82754301c7 parsers.py: Allow lowercase command names 2024-02-10 19:50:28 -05:00
Viv
4e976eec28 parsers.py: Allow lowercase metadata
Fixes https://github.com/vivaria/tja2fumen/issues/62.
2024-02-10 19:50:27 -05:00
Viv
768f05d539 parsers.py: Allow lowercase COURSE names 2024-02-10 19:50:27 -05:00
Viv
7b7dd15a62 parsers.py: Improve error handling for BPM/OFFSET parsing 2024-02-10 19:50:27 -05:00
Viv
6b93305d8b parsers.py: Fix bug with 1P/2P start commands 2024-02-10 19:50:27 -05:00
Viv
4ad3c374f5 parsers.py: Change unsupported command print to warning 2024-02-10 19:50:27 -05:00
Viv
d95175754d parsers.py: Handle typos for data before first COURSE:
Fixes https://github.com/vivaria/tja2fumen/issues/70.
2024-02-10 19:50:27 -05:00
Viv
88ac7b7eac parsers.py: Allow songs with LEVEL: <1 and >10 2024-02-10 19:50:27 -05:00
Viv
3dbf82309e writers.py: Fix bug with large score_diff values 2024-02-10 19:50:27 -05:00
Viv
d4c3abb672 writers.py: Add clear error for struct.pack 2024-02-10 19:50:27 -05:00
Viv
7f3b38b92c __init__.py: Remove print messages 2024-02-10 19:50:27 -05:00
Viv
4f89688391 __init__.py: Fix typo 2024-02-10 19:50:27 -05:00
Viv
25e6d6f4d4 test_command_support.py: Catch warnings 2024-02-10 19:50:27 -05:00
Viv
1faaab9e9c Improve custom TJA testing 2024-02-10 19:50:27 -05:00
Viv
5474ad0baa
README.md: Rewrite usage section for clarity 2024-02-07 12:42:02 -05:00
Viv
0383efea00
README.md: Mention SENOTE changes 2024-02-03 23:00:27 -05:00
Viv
073178601f
Add proper Don/Ka types to clusters of notes (#64)
This should match most fumens. Some exceptional cases I've seen:

- [x] ~In official fumens, even-numbered clusters of 4 notes will
sometimes be ドドドド or カカカカ. Right now, my converter will always use ドドドドン
or カカカカッ, since I don't really understand the rules behind it.~ Fixed:
Now, all 16th notes and above in groups of 4 will no longer use the
don/kat ending character.
- [X] ~In official fumens, sometimes isolated notes will be grouped
together, but sometimes they will be treated as single clusters of 1.
Right now, my converter will always try to cluster isolated notes.~
Fixed: Only 4th/8th/16th/etc. notes will be clustered. Whole/half notes
will not be clustered.
- [x] ~Right now, my logic always treats big notes as their own cluster.
But, sometimes you get a cluster like `ddddD`, and right now my
converter treats this as (ドドドドン) + big DON instead of do-ko-do-ko-DON.~
Fixed: Now big notes are included in clusters.
- [x] ~For high-level Oni songs with complex groups of dense notes (e.g.
(12th/16th/24th) notes mixed with (16th/34th/32nd) notes), official
fumens seem to group them together even though they technically have
different timings. Right now, my converter will group the 32nd notes,
but treat the 16th notes as their own separate group.~ Fixed: Now
anything above an 8th note will be clustered together.
- [X] Songs with BPM gimmicks. e.g. the TJA has low base BPM, but then
everything is doubled/tripled except for one section. I can't remember
which songs have this? Something like RNG Cinderella?
- Maybe solved by
1f640c1aa1?

Fixes #41.
2024-02-03 22:32:29 -05:00
Viv
47ef31fc5c
README.md: Make TakoTako 3.2.0 note more apparent 2024-01-13 12:01:08 -05:00
Viv
0fa2fda3d0
README.md: Update feature description 2023-10-17 22:03:31 -04:00
Viv
dcf74a45a2
README.md: Update "Features" section 2023-10-17 22:01:56 -04:00
Viv
dcbe269899
.vscode: Delete codespaces files (no longer used) 2023-10-17 21:57:14 -04:00
Viv
2042c8177e Update list/dict/tuple typing for 3.8 2023-08-05 11:10:48 -04:00
Viv
35090449a3 Revert from Python 3.10 to 3.8 2023-08-05 11:03:05 -04:00
Viv
7b5e09cb05 classes.py: Remove slots=True 2023-08-05 11:02:53 -04:00