Smoothed out the Zeo EEG channel by finding the greatest peak or trough in steps of 16 in the 128 data points in a packet:
int[] eigths = new int[8]; for (int x = 0; x < 8; x++) { float maximum = 0; float minimum = 0; for (int y = 0; y < 16; y++) { int index = (x * 16) + y; if (channels[index].Values[0] > maximum) { maximum = channels[index].Values[0]; } if (channels[index].Values[0] < minimum) { minimum = channels[index].Values[0]; } } float greatest = maximum; if (minimum * -1 > maximum) { greatest = minimum; } eigths[x] = Convert.ToInt32((greatest * 10) + 3000) / 6; }
That creates 8 values which can be fetched asynchronously by Lucid Scribe’s internal clock at 10 Hz by dividing the current millisecond by 125:
double eigth = DateTime.Now.Millisecond / 125; return eigths[(int)(Math.Round(eigth))];
All that because I couldn’t evenly divide 128 by 10! The end result looks a little better from afar (when looking for eye movements) with one sixteenth of the data: