SPELLBINDER

Development of a Software Development Kit for a Brain Computer Interface

The goal of the SPELLBINDER project was to design and develop a Software Development Kit for non-invasive EEG-based Brain Computer Interfaces (BCIs) that allows third parties to develop new applications or extent existing ones with BCI technology.

Official project page

http://spellbinder.groept.be

Duration

2011-11-01 – 2014-01-31

Participants

Funding

IWT, Technology transfer (TETRA) project

My role

    • Scientific consultant (BCI-related design decisions);

    • System architect (system architecture, client-server protocol);

    • Lead developer (BCI server, all BCI client libs, several samples, documentation).

Description

The SPELLBINDER SDK consists of the following parts:

    • BCI server

    • The BCI server is a stand alone application running on background and responsible for:

        • Communication with EEG device(s);

        • Real-time data acquisition;

        • Real-time data processing;

        • Providing the results to the client.

  • The BCI server can be configured to work with several EEG devices (e.g., Emotiv Epoc, Biosemi Active Two, ...) and to process data for two BCI paradigms: visual ERP and SSVEP. Besides EEG device driver, the server has a processing pipeline, which can configured from the client side by adding/removind processing blocks (e.g., filter, spatial filter, resampler, ERP accumulator and several classifiers).

    • In order to make the server and the client as independent as possible (and even allow them to run on different system/platforms), we propose a simple communication protocol between these two processes. This protocol is an application-level, human-readable, message-based protocol, which employs TCP network protocol for the messages transportation. The server was developed in C++ using Qt, LAPACK, BLAS, FFTW, Armadillo. The working version was build for Windows platform only (because some EEG device drivers were available only for Windows), but it can be ported to other platforms e.g., Linux.BCI client libraries

    • The client libraries are bindings for several programming popular in BCI domain languages/environments, i.e., MATLAB, Java, C#/Mono, C/C++. The SPELLBINDER architecture allows for (re)implementation of this part from the client application, but we recommend to employ our client-library (a DLL written in C, supplied with wrappers for other languages) as an intermediate layer between the client application and the BCI server. In this case all possible changes/improvements of the client-server communication protocol would not require rebuilding the client application.

    • Samples and Documentation

    • We bundled the SPELLBINDER SDK with a User Manual ans a set of the client application examples written in C, C++, MATLAB, Java, C#, Unity Mono, supplied with well commented source code.