Closed Eve-ning closed 4 years ago
This acts as the facilitator for these .sm and .bms file formats and also will be integrated with the current system later
In each grid, we have Timing Grid Measures, in those, Timing Grid Beats, then Timing Grid Snaps
We firstly have
Timing Grid Base This just acts like a wrapper for any amount of Timing Grid Measures
Timing Grid Measure This wraps for any amount of Timing Grid Beats. This is just as dynamic as the base, just that we add a few ways to derive timing sigs
Timing Grid Beat Mostly the same as Measure, however, we allow minimization of Timing Grid Snaps, that is, a 192 long vector can be shortened to 4 long if we don't need that many snaps to represent a certain note's snap.
Timing Grid Snap This is the equivalent of just a row, for a specific ms.
This system seems to be much cleaner than just jamming all of the conversion code into VsrgMapSM
which looks absolutely atrocious.
Will see how I can salvage the SM
conversion code already done.
Added the base files that looks splendid, will see how this goes.
Simplify works now, not sure if I overimplemented or went too specific to simplification by implementing simplify
in the base class. If so, I'll just move it to TimingGridBeatSM
whenever I get to it!
👏
Lesson learnt, smaller chunks are always easier to deal with, even though it's an individual project. I'll have a relook at my older code some time whenever I'm done with SM to clean up before I start with BMS
I ran into a lot of problems when parsing sm and bms.
Using a measure/snap based structure is of a lower level than that of ms, which has a lot more assumptions. I feel that this change would be beneficial if done correctly.