GithubHelp home page GithubHelp logo

labstreaminglayer's Introduction

Emotiv Lab Streaming Layer Interface

Lab Streaming Layer (LSL) is a protocol that enables streamlined and synchronized collection of time series measurements across multiple machines and applications. The LSL feature is designed to support research experiments requiring sub-millisecond timing precision and to allow efficient, two-way communication between EmotivPRO and other third party software and devices. EmotivPRO’s LSL feature allows users to synchronize data streams across multiple devices and allows real- time processing of raw EEG data in 3rd party Apps. LSL also makes it possible to send distinct markers on different computing devices and synchronize markers across the devices and applications. Here are guidelines and some examples to use LSL with EMOTIV Brainwear®.

Prerequisites

How to work with LSL Outlet

Configuration

After connecting your EMOTIV Brainwear® headset on EmotivPro, go to Settings > LSL > Outlet as below:

  • Stream name: Set the stream name for transmission. The stream name consists of the prefix "EmotivDataStream-" combined with data types such as: EEG, Motion, Performance-Metrics, Contact-Quality or EEG-Quality.

  • Data stream: Choose the data stream for transmission and select between supported EEG, Motion, Performance Metrics, Contact Quality, EEG Quality Data. Each one will create an individual LSL stream.

  • Data format: Currently, 2 types are supported: cf_float32 or cf_double64. But if you choose type cf_float32, the timestamp might not be correct as expected because the timestamp value is out of range(-16777216 to 16777216) which mentioned in LSL doc.

  • Transmit type: Set the transmission type by selecting between Sample or Chunk. For Chunk, you can set the Chunk size to be 4/16/32/64/128/256.

Data Output format

The data output format as below table:

Stream type Data output format Sample rate Notes
EEG {"Timestamp", "Counter", "Interpolate", , "HardwareMarker", "Markers" } 128Hz/ 256 Hz Description of EEG channels at link. The Markers channel is supported from V3.0 and it is marker value of marker object included on EEG data.
Motion {"Timestamp", "Counter", "Interpolate", "Q0","Q1","Q2","Q3", "ACCX","ACCY","ACCZ", "MAGX","MAGY","MAGZ"} 32 Hz / 64 Hz / 128 Hz Description of Motion channels at link
Performance-Metrics {"Timestamp", "Engagement","Excitement","Focus","Interest ", "Relaxation","Stress"} 2 Hz for high resolution / 0.1 Hz for low resolution Description of Performance metric at link
Contact-Quality {"Timestamp", "BatteryPercent", "Overall", "Signal", } 2 Hz Description of Contact Quality at link but the order of channels changes a bit.
EEG-Quality {"Timestamp","BatteryPercent","Overall","SampleRateQuality", } 2 Hz Description of EEG Quality at link

How to work with LSL Inlet

Configuration

After connecting your EMOTIV Brainwear® headset on EmotivPro, go to Settings > LSL > Inlet as below:

After sending marker via LSL, You can see the stream name in the Inlet page. Choose one then click the Connect button. After that, you will see the marker being added to the data stream as below:

Data Input format

Currently we only support sending markers to the Inlet with 2 options:

  1. A simple marker value - Double / integer type is expected but EmotivPRO will extract only the integer part before adding into data stream.
  • Expected format of data: {"MarkerValue"}
  1. Marker with time for timing synchronization - The marker event is a vector with 3 elements:
  • MarkerTime is the epoch time of the event in double type.
  • MarkerValue is value of marker. Double / integer type is expected but EmotivPRO will extract only the integer part before adding into data stream.
  • CurrentTime is current epoch time (double type) when the marker is being pushed to the Inlet. It is usually later than the MarkerTime.
  • Expected format of data: {"MarkerTime", "MarkerValue", "CurrentTime"}

Examples

There are some guidelines and examples on 3rd party applications:

Reference

Release Notes

See here.

labstreaminglayer's People

Contributors

diepnd94 avatar hoangphamemotiv avatar patemotiv avatar tungntemotiv avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.