<p>Yeah this is a very common and effective approach. Try doing a google search for: <strong><em>P300 speller github</em></strong> for some implementations. One issue that you should pay attention to is the limited refresh rate of computer monitors. You are going to want very accurate synchronization between what is shown on a monitor and the EEG being recorded. You'll want to use some type of framework that allows for this synchronization such as <a href="http://www.psychopy.org/" rel="nofollow">PsychoPy</a> (for Python) or <a href="http://psychtoolbox.org/" rel="nofollow">Psychtoolbox</a> (for Matlab). </p>

<p><a href="https://depositonce.tu-berlin.de/bitstream/11303/4734/2/venthur_bastian.pdf" rel="nofollow">Here is a great writeup</a> of how to implement a P300 speller in Python. Looks like they use <a href="http://bbci.de/pyff/" rel="nofollow">Pyff</a>.</p>

<p>First step, in my opinion, is to look at some examples that have already been implemented:</p>

<p>Here is a <a href="https://github.com/jadref/buffer_bci" rel="nofollow">Matlab framework</a> for BCI with an <a href="https://github.com/jadref/buffer_bci/tree/master/matrixSpellerPTB" rel="nofollow">example P300 speller</a> that uses PsychToolbox for good event timing. Looks like the repository is actively maintained.</p>

<p>Also, look at <a href="http://openvibe.inria.fr/" rel="nofollow">OpenVibe</a>. Another framework for BCI. There are <a href="http://openvibe.inria.fr/?s=speller" rel="nofollow">a lot of examples</a> available there.</p>

<p>Try one or a few of these out and see if you can get something that has already been made working. Then you'll be in a much better position to implement your own speller.</p>

CC BY-SA 3.0
2016-02-16T17:56:34.443Z
@Chand Sethi - Could you add what EEG system you are planning on using? You will need to read the data in real-time to do this and different systems have different protocols.
K A
CC BY-SA 3.0
2016-02-15T23:57:14.363Z
2016-02-15T23:57:14.363Z
K A
<p>I am trying to make a speller with BCI using EEG (SSVEP or P300, whichever is easier). I would be really grateful if someone could give me a plan of action so as to where do I get started and what skills or tools I might require. As for now, I have access to a cognitive neuroscience lab and EEG.
Thanks.</p>

CC BY-SA 3.0
2016-02-15T02:51:14.813Z
we are quite far from being able to implement something like that.  see http://cogsci.stackexchange.com/questions/12995/text-to-brain-literature/12997#12997 for discussion
honi
CC BY-SA 3.0
2016-02-15T07:44:45.187Z
It was suggested to me as a basic implementation of BCI. I'm talking about something like this - https://www.youtube.com/watch?v=wKDimrzvwYA
Chand Sethi
<cognitive-neuroscience><eeg>
How can I make a speller with BCI?
Chand Sethi
# How can I make a speller with BCI?

(Asked by: username_0 on 2016-02-14)

I am trying to make a speller with BCI using EEG (SSVEP or P300, whichever is easier). I would be really grateful if someone could give me a plan of action so as to where do I get started and what skills or tools I might require. As for now, I have access to a cognitive neuroscience lab and EEG.
Thanks.

**Tags:** cognitive-neuroscience, eeg

> **Comments:**
> **username_1**: we are quite far from being able to implement something like that.  see http://cogsci.stackexchange.com/questions/12995/text-to-brain-literature/12997#12997 for discussion  
> **username_0**: It was suggested to me as a basic implementation of BCI. I'm talking about something like this - https://www.youtube.com/watch?v=wKDimrzvwYA  

---

## 1 answers

### Answer by username_2 on 2016-02-15. Score: 1

Yeah this is a very common and effective approach. Try doing a google search for: ***P300 speller github*** for some implementations. One issue that you should pay attention to is the limited refresh rate of computer monitors. You are going to want very accurate synchronization between what is shown on a monitor and the EEG being recorded. You'll want to use some type of framework that allows for this synchronization such as [PsychoPy](http://www.psychopy.org/) (for Python) or [Psychtoolbox](http://psychtoolbox.org/) (for Matlab).

[Here is a great writeup](https://depositonce.tu-berlin.de/bitstream/11303/4734/2/venthur_bastian.pdf) of how to implement a P300 speller in Python. Looks like they use [Pyff](http://bbci.de/pyff/).

First step, in my opinion, is to look at some examples that have already been implemented:

Here is a [Matlab framework](https://github.com/jadref/buffer_bci) for BCI with an [example P300 speller](https://github.com/jadref/buffer_bci/tree/master/matrixSpellerPTB) that uses PsychToolbox for good event timing. Looks like the repository is actively maintained.

Also, look at [OpenVibe](http://openvibe.inria.fr/). Another framework for BCI. There are [a lot of examples](http://openvibe.inria.fr/?s=speller) available there.

Try one or a few of these out and see if you can get something that has already been made working. Then you'll be in a much better position to implement your own speller.

> **Comments:**
> **username_2**: @username_0 - Could you add what EEG system you are planning on using? You will need to read the data in real-time to do this and different systems have different protocols.  

---

