Added a new channel: Button TCMP, which interprets Morse Code patterns from mouse clicks and forwards them to the keyboard input. A quick click is a dot and anything longer is a dash. It is disabled by default so it needs to be enabled under plugins.
Category: Software
Fixed the sleep stage value again. It now definitely triggers during REM!
Fixed the sleep stage value so it should now hopefully trigger during REM!
A new plugout that triggers anything wired into an Arduino.
Added the frequency bands D, T, A, B1, B2, B3 and G. They are turned off by default and need to be enabled under the plugins node.
Removed the option to trigger tACS devices plugged in via the USB relay, as it is now in a plug-out: Yocto PowerRelay.
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:

With a Zeo finally in hand to test with, I see there is a lot of room to improve the plugin. Added the Zeo RAW channel – it updates every second with 128 data points that lag by 3 or 4 seconds… the wave is an eye movement:

