bemuse icon indicating copy to clipboard operation
bemuse copied to clipboard

Support invisible notes

Open Snack-X opened this issue 9 years ago • 7 comments

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.

Snack-X avatar May 12 '15 10:05 Snack-X

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).

dtinth avatar May 12 '15 11:05 dtinth

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.

Snack-X avatar May 12 '15 14:05 Snack-X

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.

dtinth avatar May 12 '15 14:05 dtinth

Actually 1 second is not accurate value. It may be more longer, or shorter.

Snack-X avatar May 13 '15 02:05 Snack-X

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.

dtinth avatar May 20 '15 14:05 dtinth

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.

SaxxonPike avatar Jul 25 '16 01:07 SaxxonPike

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.

dtinth avatar Jul 25 '16 02:07 dtinth