WhiteICE v1.22 beta (17th Mayl 2025)
====================================

WhiteICE command-line software can be used to manipulate brainwaves using 
audiovisual stimulus and machine learning (reinforcement learning). You should concetrate 
to the stimulus. For example, for audio only, use headphones and keep your eyes closed 
most of the time.

The AppImage uses only CPU. You MUST have *FAST* CPU to use the software because
real-time processing of EEG signals at 200 Hz sampling frequency requires fast CPU +
background optimization of machine learning models. I have developed software using
AMD Ryzen 7 7745 HX (16 threads at 7186 BogoMIPS on Linux). In Windows, you need to
use PowerShell if there are spaces in parameters when using command-line.

To test random stimulation, use command:

whiteice-x86_64.AppImage --random --device=random

There are initially random stimulus (aprox 10min learning time after which deep
reinforcement learning calculates online first prediction model in 10 minutes).
Better models are created live slowly in the background when the program is used:

whiteice-x86_64.AppImage --measure --device=mindmonitor --focus
whiteice-x86_64.AppImage --measure --device=lsl --lsl-names='BA HALO 002_HALO_BrainAccess','EEG' --focus

Software can either read Mind Monitor App EEG readings using OSC (UDP) protocol
to port 4545 to IP of your computer (Interaxon Muse) or read LSL protocol (BrainAccess HALO's
BrainAccessBoard) EEG readings.

You can also set other targets for optimization than phase lag index (ICA-PLI)
using --target command. (21 comma separated values between 0 and 1,
use -1 for values that are not used).

In the commands below you must change -1 values to values between 0 and 1 (typically 0 or 1). The used
target below sets target to be PLI and PLV of ICA signals. It is recommended to use ICA signals
because their metrics are of higher quality than raw EEG signals.

whiteice-x86_64.AppImage --measure --device=mindmonitor --target=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1
whiteice-x86_64.AppImage --measure --device=lsl --lsl-names=<stream-name>,<stream-type> --target=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1

As the default LSL protocol uses 4 first channels but it can be increased if LSL stream (EEG) has more channels.

You can save measurements/models to a directory. To store measurements use "--model-dir=<model-dir>". This also enables using
the previous measurements and models instead of starting from scratch everytime.
(NOTE: because of a mysterious bug, loading of neural network models don't work very well)

Use "--help" for command-line parameters. Pressing ESC or ENTER stops the program.


IMPORTANT: You need to run the software in the background (audio)
for 1-3 hours before some useful (small) results (max effect is typically 1%).

IMPORTANT: Software is currently experimental and sometimes software fails to have
any wanted effect on the EEG. Effects are currently small and about 5% change in
EEG-metrics would mean really significant effect to EEG.

Linux: You also need a recent/new GLIBC and fuse installed to your system.

Performance numbers are a bit pessimistic numbers about effects and
use the recent 1000 measurements of model and random activity responses.




Tomas Ukkonen, M.Sc. <tomas.ukkonen@iki.fi>
