open2jamorg / open2jam

open source o2jam emulator
open2jam.wordpress.com
Artistic License 2.0
109 stars 40 forks source link

Badly implemented BMS parser #18

Closed keigen-shu closed 11 years ago

keigen-shu commented 12 years ago

List of problems:

mrcdk commented 12 years ago

Ok, let's see...

I don't have that much time now because exams but in 2 weeks I will be able to work in this project again and others too :D

keigen-shu commented 12 years ago

Notes in measures with BeatSigs that are more than 1 (7/4, 11/6, etc.) aren't processed properly. The notes were aligned to normal size (1/1) while the measure is resized to twice the size. Also, in smaller sizes (5/4, 9/8, etc.), the notes may technically leak/overflow to the following measure. I'm very sure that the problem is in Render.java, because BMSParser works as it should (tick time is relative to the current measure from 0 to 1). I tried to find the problem, but the operation logic is very messy and a little weird for me to understand.

mrcdk commented 12 years ago

ew render.java D: Can you upload a test song to test it? I think I got the problem fixed but I have no file to test it xD

keigen-shu commented 12 years ago

Here ya go.

*-------- HEADER FIELD

#PLAYER 1
#BPM 120
#PLAYLEVEL 18
#RANK 3

*-------- DATA FIELD
*---- Measure 0: 8/4
#00002:2

*---- Scratch
#00016:010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

#00011:0001000000000000
#00012:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
#00013:00000000000001010000000000000000
#00014:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
#00015:0000000000000000000000000000000000000000010101010000000000000000
#00018:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
#00019:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010101010101

*---- Measure 0: 4/4
#00111:010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
#00113:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
#00115:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
#00119:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

*---- Measure 0: 2/4
#00202:0.5
#00213:010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
#00215:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

dtinth commented 12 years ago

From @mrcdk's commit, the BMS parser still buggy? If it's not, then maybe we can close this issue...

keigen-shu commented 11 years ago

Beat change is also broken on OJN charts. This is the section in Phase 1 HX with the beat change. 2013-04-18-104717_1366x768_scrot

chaosfox commented 11 years ago

I went looking for this issue @keigen-shu mentioned and I actually found that its this commit bea526c8a00a7e8bbabac774e1075a1da4f98966 that introduced it, so if @mrcdk is listening, could you tell us what were you trying to fix with that ? I am afraid reverting that will create another problem somewhere else.

mrcdk commented 11 years ago

Hi there, I can't remember but, looking at it, before that change the fractional measure (2/4, 3/4,...) wasn't taking action on every event. The issue was with BMS files so maybe ojm ones don't need to apply the fraction to every event. Does the ojm format have fractional measures? I can't recall correctly. AFAIK, the BMS files work correctly so that part is fixed. Not sure about the ojm files and I can't test them now. El 14/09/2013 16:44, "chaosfox" notifications@github.com escribió:

I went looking for this issue @keigen-shu https://github.com/keigen-shumentioned and I actually found that its this commit bea526chttps://github.com/open2jamorg/open2jam/commit/bea526c8a00a7e8bbabac774e1075a1da4f98966that introduced it, so if @mrcdk https://github.com/mrcdk is listening, could you tell us what were you trying to fix with that ? I am afraid reverting that will create another problem somewhere else.

— Reply to this email directly or view it on GitHubhttps://github.com/open2jamorg/open2jam/issues/18#issuecomment-24448319 .

chaosfox commented 11 years ago

yeah ojn does have fractional measures, as seen on the screenshot @keigen-shu posted, that empty space on measure 42 shouldn't exist, instead the notes should be stretched over the measure.

Changing one breaks the other..I don't know what can be done in this case..

dtinth commented 11 years ago

How does the OJN note chart store the notes in fractional measure?

In BMS, for instance, a 3/4 measure with a note in each quarter note would look like "01 01 01". Is it the same with OJN, or it stores as 4/4 ("01 01 01 00")?

If it's the latter one, a way to fix that is by dividing the position by the fraction when reading the OJN chart. e.g.

position = position / timeSignatureOfThisMeasure;

So that the "position" attributes consistently refer to the position in that measure, relative to its size, not four quarter notes.

mrcdk commented 11 years ago

Ok, after some testing I've found that OJN applies the fraction to the note directly, so we don't need to do it.

chaosfox commented 11 years ago

nice @mrcdk , that solves it for both ojn and bms.

I will close this issue now then, if there is any other problems with bms please create a new issue.