P300 Speller, what about the spot?

This forum deals with BCI2000 configuration issues.
Locked
flaurent
Posts: 2
Joined: 10 Feb 2006, 09:02

P300 Speller, what about the spot?

Post by flaurent » 24 Feb 2006, 10:45

Hi,

In a P300 experiment, rows and columns are enlightened at a high rate. Nevertheless on a CRT screen the spot may draw the lower part of a row or column and complete it during the next sweep cycle. If that phenomenon occurs, the subject's cerebral response may be slightly different.

Does the P300 Speller application handle that problem? I guess I can fix it with OffTime and OnTime parameters. Are those values expressed in SampleBlocks? This information is only provided in audvisp3.pdf whereas the given unit in the remaining documentation is "system cycles".

I have no background in low level programming under Windows. Do you know how to access screen settings? Or do you think there is no such problem with an LCD screen and I had rather change?

Thanks in advance for any answer.

François

gschalk
Posts: 615
Joined: 28 Jan 2003, 12:37

Re: P3Speller

Post by gschalk » 24 Feb 2006, 14:10

François,
In a P300 experiment, rows and columns are enlightened at a high rate. Nevertheless on a CRT screen the spot may draw the lower part of a row or column and complete it during the next sweep cycle. If that phenomenon occurs, the subject's cerebral response may be slightly different.
What I believe you are referring to is the screen refresh on a typical CRT. Ideally, stimulus presentation would be synchronized to the vertical blank (i.e., the return of the electron beam from the bottom to the top). With appropriate techniques, this can be done under Windows so that stimuli are exactly time-locked to each of the frames on the screen.

However, not only are these techniques somewhat involved, but it also seems to be difficult, if not impossible, to realize this capacity without having the processor load go to 100% (which would allow nice stimulus presentation, but would not really permit other concurrent processes).

This high-precision accuracy would certainly be needed for very fast evoked responses, such as auditory brainstem evoked responses, which not only have a very low latency, but are also extremely short. In contrast, typical evoked potentials in the EEG that are used for BCI, such as the P300, have a much longer latency and are occur over a longer time period.

Experiments in our and in other laboratories demonstrate that accurate P300 detection can be achieved with very few averages (e.g., 4-5) with the existing BCI2000 system that does not guarantee stimuli that are time-locked to the vertical blank.

I guess I can fix it with OffTime and OnTime parameters. Are those values expressed in SampleBlocks? This information is only provided in audvisp3.pdf whereas the given unit in the remaining documentation is "system cycles".
Unless otherwise noted, On/OffTime and other timing parameters are expressed in SampleBlocks.
I have no background in low level programming under Windows. Do you know how to access screen settings? Or do you think there is no such problem with an LCD screen and I had rather change?
LCDs have different problems. While they update the screen essentially at once, their internal update rate might differ from what they typically report to Windows (i.e., 60 Hz) and so time-locking to the screen change appears to be impossible. Furthermore, in some LCDs it takes up to 40 ms to update the screen. If you use LCDs, make sure you get one with fast update rates. Newer LCDs are available with 8 and 16ms update rates.

In summary, we have used BCI2000 with the P3Speller and P3AV module in conjunction with both CRTs and TFTs and have achieved very good results.

I hope this helps,
The Gerv

mellinger
Posts: 1098
Joined: 12 Feb 2003, 11:06

Post by mellinger » 27 Feb 2006, 11:15

The OnTime and OffTime parameters may be specified in seconds by putting the letter 's' immediately after the value, without a space character in between.

This will allow changes to the SamplingRate and SampleBlockSize parameters without having to adapt OnTime and OffTime values.

Generally, this should work for all parameter values specifying time intervals in units of "sample blocks".
If in doubt regarding a given parameter, check in the source code whether access to the parameter value is wrapped into a
MeasurementUnits::ReadAsTime()
function call.

Regards,
Juergen

Locked

Who is online

Users browsing this forum: No registered users and 2 guests