From BCI2000 Wiki
Jump to: navigation, search


The Emotiv DAQ is an in-expensive yet fully featured EEG device. It is aimed toward the gaming market, but with a purchase of the "Research Edition" of the Emotiv SDK, raw EEG can be acquired from the device for use in BCI2000. This documentation details the Emotiv source module.




Griffin Milsap ( Rensselaer Polytechnic Institute

Version History

Source Code Revisions

Functional Description

Acquires signal data from the Emotiv device. Also captures gyro data and writes it to states.

The output from the Emotiv is in muV, however it has quite a large DC Offset of about 4000~4200 units. The remaining DC offset comes from such factors as stored potential in the subject, and offsets added in the library to facilitate plotting. As such, a 0.1 Hz high pass filter is applied in the source module to the output signal. This effectively eliminates extra DC Offset. You will notice a "Settling Time" before the signals all reach an approximate 0 DC Offset. This time is about 10 to 15 seconds. It would be advisable to wait until the signal has settled out before proceeding.


  • SourceCh must be set to 14. The Emotiv has 14 channels not counting the ground and ref.
  • SamplingRate must be set to 128. The current Emotiv device only outputs 128 samples per second, though its internal sample rate before filtering is 2048 Hz.
  • SampleBlockSize is the number of samples to acquire for every system clock. The recommended value here is 4, causing 128/4 or 32 system clocks per second.
  • ChannelNames is a list of names for the channels in the output signal. According to the 10-20 International system, this should be set to "AF3 F7 F3 FC5 T7 P7, O1, O2 P8 T8 FC6 F4 F8 AF4" . You can set the channel names to whatever you would like, but the module will still warn you if the channel names are not set likewise.
  • SourceChOffset is a list of DC offsets to be applied to the signal output before the signal leaves the source module. Due to the filtering done by the source module, a DC Offset of 0 is required for each channel
  • SourceChGain is a list of signal gains which transform the signal output to muV. The API already provides output in muV. The SourceChGain must be set to 1 for each channel.


  • EmotivGyroX is a 16 bit integer which represents the x axis of the onboard Emotiv gyro.
  • EmotivGyroY is a 16 bit integer which represents the y axis of the onboard Emotiv gyro.

The gyro values will idle around 29000. The actual range that the gyros output is undocumented in the Emotiv API. In practice, the floating point values given from the API appear to range from 0 to 4000 with the most extreme head movement and idle around 1800. The output value is multiplied by 16 then pushed into states. As such, the maximum value translates to about 64000 and the minimum to 0.

To recalibrate the gyro, simply hold the head still for a few seconds.

  • EmotivCQXXX is a 4 bit integer which corresponds to the contact quality of a specific electrode on the Emotiv EPOC. The possible values are as follows:

0: No Contact. Appears black in TestBench.

1: Very Bad Contact. Appears red in TestBench.

2: Poor Contact. Appears orange in TestBench.

3: Fair Contact. Appears yellow in TestBench.

4: Good Contact. Appears green in TestBench.

Future Work

Due to the nature of the signal processing that the Emotiv Software suite provides, it is possible to record facial movements such as eye blinks and jaw clenching into the states as well. This could allow for detailed filtering of signal artifacts from the output and could greatly enhance the quality of the final recording. These states are in the works.

See also

User Reference:Filters, Contributions:ADCs