public static double[,] DecodeGyroscopeSamples(string bits) { // Each packet contains a 16 bit timestamp, followed by 9, 16 bit values representing 3 "xyz" samples. double[,] samples = new double[Constants.MUSE_GYROSCOPE_SAMPLE_COUNT, Constants.MUSE_GYROSCOPE_CHANNEL_COUNT]; for (int i = 0; i < Constants.MUSE_GYROSCOPE_SAMPLE_COUNT; i++) { for (int j = 0; j < Constants.MUSE_GYROSCOPE_CHANNEL_COUNT; j++) { samples[i, j] = PacketConversion.ToInt16(bits, 16 + (((i * Constants.MUSE_GYROSCOPE_CHANNEL_COUNT) + j) * 16)); // Initial offset by 16 bits for the timestamp. samples[i, j] *= Constants.MUSE_GYROSCOPE_SCALE_FACTOR; } } return(samples); }