EasyRPG / Player

RPG Maker 2000/2003 and EasyRPG games interpreter
https://easyrpg.org/player/
GNU General Public License v3.0
989 stars 185 forks source link

Windows: the track of the MIDI Play Location Tick on a MIDI file is off/doesn't work properly #3175

Open Mimigris opened 9 months ago

Mimigris commented 9 months ago

Name of the game:

Test-Game 2000.

Player platform:

Windows, 64 bits continuous build of the Player.

Describe the issue in detail and how to reproduce it:

While playing on Windows with the native midi output, go in the Music Playing room, then interact with the first girl with the blue hair to play a MIDI jingle that loops. After that, interact with the character present at the top of the map a bit on the right to get the Midi Play Location (Tick) of the track. The game will then give you a value around 0 or 100 which should not be the case, since normally you should receive an higher value.

On a similar topic, Native MIDI seems to be more off than the other MIDI outputs when it come to the MIDI Play Location Tick feature. Here's two examples tries I did and the values that I got, by testing on a track from the OpenRTP:

Here's a script that checks after playing for 5 seconds a MIDI track its value: image And the following values were obtained: RPG_RT (checked with 2ke & 1st 2k3 Japanese version to have a global idea): ~11260 Fluidsynth/WildMidi/FMMidi: 11690~11800 Native MIDI (on Windows): 5340~8000 on the first try, and then 0 or garbage result on the others

Native MIDI is really off compared to the other outputs and sometimes gives an incorrect result.

(note brought by KotatsuAkira for this case: RPG_RT/Harmony always freezes until a file is loaded (or ready to stream if that's a feature in some things or audio-system replacements). If Easy loads BGM in parallel and goes on meanwhile, it can't handout same results. so the fact that the results aren't identical is to be expected anyways, it's just to have a rough idea)

Here's a script that gives the MIDI Play Location Tick of a track once it loops, with the value that was there just before looping and the one just after looping: image And the following values were obtained (the first value is the one present at the end of the loop, the second is the one given just after once the loop was done): RPG_RT (2ke/2k3 1st Japanese version): ~98847 (~964) Fluidsynth/WildMidi/FMMidi: 98855~98870 (959~1027) Native MIDI: 72010~75879~76886~82516~89670 (0)

Once again, the Native MIDI output is really off compared to the others.