Fumens require that all branches have the same length, even when branching isn't
relevant (i.e. at the start of the song before the first BRANCHSTART, or after a
BRANCHEND). So, in the past, I simply duplicated the note data across all branches.
However, this causes a bug when balloon notes are duplicated; we get extra reads of
the BALLOON: field, and the values get mis-attributed. So, we need to be able to
modify this "dummy" note data before it gets duplicated. To do that, we need to rework
the 'current_branch == 'all'` logic to separate out the note data writes for the
other branches, so that we can modify them in-place.
If branches have the same balloons, then `cycle` will cause the list to be repeated
once per branch.
However, if branches have different balloons, then assuming that all the balloon values for
all branches are listed, the list will be iterated over normally.
This
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.