What's the best method of capturing a P300 with an OpenBCI?

Tags: #<Tag:0x00007fbbfa4f03e0> #<Tag:0x00007fbbfa4f0318> #<Tag:0x00007fbbfa4f0250>

Where should electrodes be placed (assuming 10-20)?

What math function(s) do I need to apply to the incoming waves?

My goal is to call a function such as turn on an LED with an Arduino when a P300 is evoked. Thank you in advance for your assistance.


1 Like

Here are some writeups from Jeremy Frey that describe how he implemented a P300 speller with OpenBCI:


One thing that’s somewhat unclear for me is how he implemented sync/triggering to tag the individual ERP trials. According to this tweet he plans to update this soon:


Thank you, Kartik. That looks like a good starting point.

You’re welcome! If you do get a consistent P300 detector up and running, do let us know how you did it. If we can consistently get good data for ERPs with OpenBCI (or any other consumer grade EEG), I think that opens the door to a lot of interesting experiments.

1 Like


I’m driven to give some more details here, after the excellent link given by Kartik :smiley:

For this particular application it’s OpenViBE which handles all the necessary synchronization; events are sent through shared memory to the “acquisition server” by the P300 CoAdapt speller.

When I have to use external software (e.g. Unity or python scripts) I ended up using the LSL network protocol ( https://github.com/sccn/labstreaminglayer/ ) to ensure proper synchronization – along each event of interest the soft creates an LSL “stimulation” that is sent over the network and recorded by, once again, OpenViBE (or any other program that supports LSL).

Whether I’m using OpenBCI or the medical grade equipment that my research team owns, this gives recordings good enough for ERP analyses.

The update I was talking about concerns the OpenViBE versions needed to run the P300 speller: at the moment it’s a bit messy, I’m using the acquisition server from OpenViBE 1.0+ (which supports natively OpenBCI) with the P300 CoAdapt speller from older OpenViBE 0.18 (the CoAdapt does not work with the newest versions of OpenViBE, the authors are working on a new and improved version).


Awesome, thanks a lot!

Built by @curiositry and @amckent of The Autodidacts • Follow @TheNeuroBB on Twitter for updates!



Thanks for stopping by!