bemuse
bemuse copied to clipboard
Support invisible notes
Since I don't know exact name of it, I'll call it as 'empty key press'.
Some BMS(for example, in the middle and the end of DDDD) has invisible notes, which affects empty key press sound. Bemuse doesn't support invisible note, because bms-js doesn't support invisible note(channel 3X and 4X).
Not only invisible note, modern BMS player like LR2 handles empty key press sound well.
If next note is near, empty key press sounds must change. Since Bemuse changes empty key press sound almost same time at note gets near to judgement line, it sometimes play wrong keysound, if I play it too early.
I think it's important because it sometimes messes up good songs.
I'll add a simple diagram later.
Thank you. Yeah, I love to clap in the middle of DDDD (of course, in another simulator — I use Angolmois).
I did not understand your 4th paragraph well, so a diagram would be helpful.
Currently, Bemuse follows DJMAX style of playing empty key press sounds — it simply finds the nearest note (time-wise) and plays its sound. (IIDX and O2Jam seems to change the sound when the note is approaching).
After some investigation and test, I could simplify it. It was a lot different from what I thought.
There's a note which passed judgement line 1 second ago. That note has keysound 00.wav
. And there's another note falling down to the same lane. This note has keysound 01.wav
, and will reach judge line after 2 seconds.
If I'm right, in Bemuse system, this lane will have assigned keysound 00.wav
. For 0.5 more second, this lane will still have 00.wav
. And after that, it will have 01.wav
as empty key sound, because 01.wav
note is nearer to judgement line than 00.wav
note.
It becomes:
- n seconds before
00.wav
note - 1.5 seconds after
00.wav
note - 1.5 seconds before
01.wav
note - n seconds after
01.wav
.
Games like IIDX or LR2 have a little different system. It is almost same as current system. But there is maximum limit of empty key sound before note.
It becomes:
- 1 second before
00.wav
note - 2 seconds after
00.wav
note - 1 second before
01.wav
note - n seconds after
01.wav
note
If interval is shorter than that 1 second, same rule from current system is applied.
Sorry for hard sentences and words. I could not find appropriate words.
Thank you, I understood what you mean. So, 1-second lookahead limit should be appropriate. I added this to backlog. (There are more important features to take care of first, such as loading custom BMS files and ranking system.)
However, in my opinion I think it's better if player could play the first keysound in each lane at the beginning (like in DJMAX), so this would be:
- n seconds before
00.wav
note - 2 seconds after
00.wav
note - 1 second before
01.wav
note - n seconds after
01.wav
note
The rationale is that players can adjust their speakers to their preferred level before starting the game.
Actually 1 second is not accurate value. It may be more longer, or shorter.
Even though it may not be accurate, personally, I think 1-second window is an acceptable and appropriate value. This is now live in v1.0.0-beta.11.
I think the only remaining sub-issue here are the invisible notes.
Official format uses 500ms. If the previous note distance is <500ms, they do the change in the exact center (distance/2). However, the note sounds for the first note in a column are typically initialized at the beginning.
Thank you for the information :D
I think there are still differences in implementation of each rhythm game. So I think I’ll keep it at 1 second.