After releasing the GHLiveBLE tool, there were a number of hardcore Clone Hero enthusiasts who were curious to find out the poll rate of the GHLive bluetooth guitar controller. Given that the poll rate being how fast the controller can register button presses to the computer, a higher rate would allow for more “precise” play for the dedicated rhythm game fans.
And so, I set out to find the limits of the Guitar Hero Live hardware. The plan was first to disassemble the controller and find the button contacts:
Remove the neck from the body and all the screws holding the two halves of the neck together.
Inside we find a simple PCB with all the button contact pins conveniently labelled. We will need to connect them to a computer controlled relay to trigger them as quickly as possible.
Our choice of relay controller is a simple Raspberry Pi Zero W. One of the GPIO pins will be used to control the relay, which can then be toggled on and off via a basic Python script.
The script should be pretty self-explanatory:
import threading import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(2, GPIO.OUT) global isOn isOn = True def work(): global isOn isOn = not(isOn) threading.Timer(0.005, work).start() if isOn: GPIO.output(2, GPIO.HIGH) else: GPIO.output(2, GPIO.LOW) work()
Relay has been attached to GND and button A pins. In essence, the Pi will fire button A as fast as possible while a program on a target computer runs an input timing program that will collect fire rate statistics.
Here you can see it running the Python script. The relay is switching at a furious rate while the target computer runs XInput to capture 1000 samples.
In the end the average rate was around 25.8 ms between cycles or 0.03875968992 cycles per millisecond. Translating into hertz gives us around 38 Hz, with a std deviation of +/- 5 Hz. So best case scenario the controller + GHLive tool setup can read the controller button state (which buttons are pressed) 38 times a second. Enough for casual play but likely unsuitable for the most demanding perfectionism of hardcore playthroughs. YMMV!