Polling rates in music games

A common misconception about music game polling rates:

I still don’t understand why people think that overclocking USB ports help with IIDX. The game only polls for input every 60th of a second, and the USB polls for input every 250th of a second. There’s no reason to overclock your port; the USB port polls more than 4 times before the game updates itself.

I thought to myself… this can’t possibly be the case. I then tried to create some scenarios in my head which worked, but I knew that there was a timing where increasing the USB polling rate would help even though the game polls the USB buffer slowly. Many cycles need to pass before this happens, but it does (and it sure does happen often.)

Here was my response.

Even if IIDX polls the USB buffer at 60Hz (every 16.6ms) and USB polls your inputs at 125Hz (every 8ms), there can be a timing when the game polls the buffer after you hit the key, but before the key input has been placed into the buffer.

Classic example of a situation where increased polling rate would make no difference:
8ms: USB polls your input. sees nothing.
16ms: USB polls your input. sees nothing.
16.2ms: you hit a key
16.7ms: IIDX polls USB buffer. sees nothing.
24ms: USB polls your input. retrieves the input you hit at 16.2ms
33.3ms: IIDX polls USB buffer, retrieves the input you hit at 16.2ms, that the USB buffer retrieved at 24ms.
(Now whether or not this affects your game is a different story, and depends on the game.)

My guess is that increasing the USB polling rate from 125/250Hz to 1000Hz will make it so that your input will actually be stored in the PC’s buffer sooner after you hit it. It would make the accuracy fine enough to not worry about whether or not the PC has retrieved your input (so you only have to worry if the game polled the buffer or not)

1000Hz USB making no difference:
15ms: USB polls your input. sees nothing.
16ms: USB polls your input. sees nothing.
16.2ms: you hit a key
16.7ms: IIDX polls USB buffer. sees nothing.
17ms: USB polls your input. gets the key.
33.3ms: IIDX polls USB buffer, retrieves the input you hit at 16.2ms, that the USB buffer retrieved at 17ms.

1000Hz USB making a difference: (need several cycles before hitting this situation)
281ms: USB polls your input. sees nothing.
281.3ms: you hit a key
282ms: USB polls your input. retrieves the key.
283.3ms: IIDX polls USB buffer, retrieves the input you hit at 281.3ms, that the USB buffer retrieved at 283.3ms.

now take the previous situation but with 125Hz USB polling:
280ms: USB polls your input. sees nothing.
281.3ms: you hit a key
283.3ms: IIDX polls USB buffer. sees nothing.
288ms: USB polls your input. retrieves the key.
300ms: IIDX polls USB buffer, retrieves the input you hit at 281.3ms, that the USB buffer retrieved at 288ms.

so you hit the key at 281.3ms but IIDX doesn’t even see it until 300ms. if the polling rate was higher, it would’ve seen the input on its previous 60Hz poll, at 283.3ms.

when you have tons of these inputs over a long period of time, this situation can happen very often, which means polling rate can really make a difference. of course, again, whether it affects the game is a different story (timing windows of the game etc.)

disclaimer: i’m a programmer, and i’m less knowledgeable about music games than computers. I’ve only increased USB polling rate for my mouse for competitive CS and SC. there are a billion other factors to consider, including the kernel’s I/O scheduler, which can shift the delay.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: