Q: In the EEG source display, the visualization cursor does not move at a constant speed but appears jumping. Q: The feedback cursor is not updated at a constant rate but appears to be jumping.
A: In the timing display window, check whether block duration (the top curve in the Timing Display) is constantly at the level indicated by the tick mark to the left. When this is the case, the jumping cursor is merely a cosmetic problem. Otherwise, try the following:
- Increase the "Source decimation" parameter on the "Visualize" tab to reduce the processor load associated with the source signal display.
- Increase the "SampleBlockSize" parameter to reduce the system update rate.
Q: When clicking 'Set Config', I get error messages for each of the modules such as: "EEGSource: Could not make a connection to the SignalProcessing Module" and "Application: SignalProcessing dropped connection unexpectedly."
A: This may be caused by the "Microsoft TV/Video Connection" in Network Connections, if you have it. To remedy this:
- Right-click on My Network Places,
- Select Properties,
- Right-click on Microsoft TV/Video Connection,
- Select Properties,
- Uncheck Internet Protocol,
- Click OK.
Q: When I start the gUSBamp source module, I get the error message: "Cannot find ordinal 37 in dynamic library gUSBamp.dll".
A: Most likely, your gUSBamp source module finds an incompatible version of the gUSBamp.dll driver library. Make sure that, in the directory where gUSBampSource.exe resides, there is a file gUSBamp.dll in the exact version that originally came with your BCI2000 distribution.
Q: The first time a subject is run using the RJB protocol, during the first trial of the first run only, the cursor moves to the top of the screen and does not respond to use input. BCI2000 outputs increasingly large negative numbers during this run.
A: This is not so much a bug as a side effect of the way the adaptation mechanism works. Since the adaptation mechanism hasn't been trained, all it has are the initial values for offset and gain. For each subject, it will take a few trials to adapt BCI2000 to this subject's signals.
Therefore, you will typically save a subject's adapted parameters after each session, and use this as a starting point for the next session. Alternatively, you may load a subject's parameters from a previous session's data file by specifying the data file rather than a parameter file from the Load parameters... dialog.
Replaying Recorded Data
Q: Rather than controlling BCI2000 from a brain signal, I would like to use a recorded data file as input. Is there a kind of "replay mode" in BCI2000?
A: While this could easily be done by, e.g., writing a source module that reads from a file, we have not done this, and that for at least two reasons:
- If the version of BCI2000 that you are using is not the exact same as the one that was used to record the data, and/or you change some system parameters, then, depending on the experimental paradigm, results may be undefined. E.g., in a 2D cursor task, what should happen if you slow down the cursor such that the cursor has not yet reached a target when in the original data file it has (i.e., and the trial is over?).
- Scientifically, it is a bad idea to "simulate" online performance by loading a datafile, changing a few parameters, and seeing how it would have worked. If you are interested in evaluating the effect of different signal processing routines, you should write your own offline analysis routine that uses statistical analyses, together with a comprehensive body of data, or you need to run comprehensive online studies.
Of course there is nothing in the code that would prohibit you from writing your own such module, but you should note the two caveats above.
For off-line analyses, you might also check out the Command Line Processing Environment which allows you to feed existing data files into arbitrary BCI2000 filter chains.
Q: Is there a way to obtain the same random sequence each time BCI2000 is run? I don't care about the sequence itself, it should just be the same each time.
A: The SignalGenerator source module has a parameter, RandomSeed, that determines the pseudo random number generator's seed value. (If this parameter is zero, the generator will be initialized from the system timer.) While absent from other BCI2000 modules by default, each component that uses the BCI2000 pseudo random generator will behave according to this parameter if it is present. To introduce the RandomSeed parameter into a module, and assign it an initial value of 10, use --RandomSeed=10 as a command line option when starting up BCI2000. Note that the parameter will have the same value across all modules, and it will appear on the "System" tab in the operator module's parameter dialog.
Q: Is visual stimulation synchronized with screen refresh (vertical blanks)?
A: BCI2000 does not synchronize its video output with refresh cycles to avoid interference with its own timing. Also, for visually evoked potentials, it appears not to matter much whether video output is synchronized or not. If you feel that output should be synchronized, and have access to the BCI2000 source code, adding a DirectDraw WaitForVerticalBlank() call immediately before the Task filter's call to UpdateWindow() at the end of its Process() function should help.