Guitar Hero 5 Guitar Neck I2C Format
I2C Address: 0x0D
TWI Freq: 100000hz
Do a 2 byte read from 0x12
first byte: frets, stored in the same way as an xbox 360 controller
second byte: tap bar, below dictionary shows how these values are mapped
static readonly Dictionary<int, BarButton> _mappings = new Dictionary<int, BarButton>() {
{0x19, BarButton.Green | BarButton.Yellow},
{0x1A, BarButton.Yellow},
{0x2C, BarButton.Green | BarButton.Red | BarButton.Yellow | BarButton.Blue},
{0x2D, BarButton.Green | BarButton.Yellow | BarButton.Blue},
{0x2E, BarButton.Red | BarButton.Yellow | BarButton.Blue},
{0x2F, BarButton.Yellow | BarButton.Blue},
{0x46, BarButton.Green | BarButton.Red | BarButton.Blue},
{0x47, BarButton.Green | BarButton.Blue},
{0x48, BarButton.Red | BarButton.Blue},
{0x49, BarButton.Blue},
{0x5F, BarButton.Green | BarButton.Red | BarButton.Yellow | BarButton.Blue | BarButton.Orange},
{0x60, BarButton.Green | BarButton.Red | BarButton.Blue | BarButton.Orange},
{0x61, BarButton.Green | BarButton.Yellow | BarButton.Blue | BarButton.Orange},
{0x62, BarButton.Green | BarButton.Blue | BarButton.Orange},
{0x63, BarButton.Red | BarButton.Yellow | BarButton.Blue | BarButton.Orange},
{0x64, BarButton.Red | BarButton.Blue | BarButton.Orange},
{0x65, BarButton.Yellow | BarButton.Blue | BarButton.Orange},
{0x66, BarButton.Blue | BarButton.Orange},
{0x78, BarButton.Green | BarButton.Red | BarButton.Yellow | BarButton.Orange},
{0x79, BarButton.Green | BarButton.Red | BarButton.Orange},
{0x7A, BarButton.Green | BarButton.Yellow | BarButton.Orange},
{0x7B, BarButton.Green | BarButton.Orange},
{0x7C, BarButton.Red | BarButton.Yellow | BarButton.Orange},
{0x7D, BarButton.Red | BarButton.Orange},
{0x7E, BarButton.Yellow | BarButton.Orange},
{0x7F, BarButton.Orange},
{0x95, BarButton.Green},
{0xB0, BarButton.Green | BarButton.Red},
{0xCD, BarButton.Red},
{0xE5, BarButton.Green | BarButton.Red | BarButton.Yellow},
{0xE6, BarButton.Red | BarButton.Yellow},
};