Introduction to BCI: Software Tools to Use

This tutorial serves as an introduction to software tools that you can use to analyze EEG and MEG data.

Introduction to Brain Computer Interfaces: Software to Use


Psychopy is an open-source (GPLv2 license) Python application to build experiments. It is often used in psychology or cognitive neuroscience labs as an alternative to the proprietary E-Prime. Since it is written in Python, it’s cross platform and scripts usually work on masOS and Windows with no tweaking. It can allow timing based on frames, which it claims is more accurate than measuring with a clock. It includes an interface to write code for experiments:


And visual interface to make experiments by dragging blocks around:



Pygame is an open (LGPL license) Python library to build games. Due to its simple library, it is also used in some labs to build experiments. As it is targeted to a wider audience, it has a pretty good set of tutorials and docs. It has fewer dependencies and is generally easier to install than psychopy, and can sometimes give you greater control over what you display. However, it’s also not geared towards experiments, and you may have to build up some helper functions to use pygame effectively.



OpenViBE is an open-source (AGPLv3) platform specifically geared towards BCI experiments. It has a visual interface consisting of “blocks” that can be used to build experiments. These blocks can be extended using Python, Lua, C++, or Matlab.


As it’s geared towards BCI development, it has comprehensive support for streaming EEG data from a lot of different devices, and a lot of algorithms specifically for BCIs. It also has neat 3D interfaces for trying out BCI paradigms, like lifting a spaceship using motor imagery:


The main downsides are that its interface can sometimes be intimidating and it does not have a library, so you cannot use OpenViBE without launching the full interface. Overall, OpenViBE is a great tool for getting started and experimenting ## various BCI paradigms.


OpenEXP is an open-source (MIT license) desktop app for running experiments and collecting behavioural and physiological data. IT is still in alpha stage, so may not be ready for experiments yet, but shows great promise for the future, as it is developed by key NeurotechX members.


It is based on jsPsych and is written using Javascript, so it could run in a web browser for scalable data collection.


Psychtoolbox is an open-source (MIT license) set of functions for running psychophysics experiments in Matlab or Octave. It has a lot of tutorials geared towards psychophysics experiments and a comprehensive FAQ.

It can performa pretyy much any visual, text, or audio you might need for psychophysics, such as a set of rotating 3D cubes:


The functions provided can sometimes be close to the graphics pipeline, so it may have set textures or explicitly ask for anti-aliasing. However, this does provide more control.