Skip to content

jooray/OpenBCI_GUI_Neurofeedback

 
 

Repository files navigation

Neurofeedback widget for the OpenBCI_GUI

This version of standard OpenBCI_GUI adds a tone neurofeedback for alpha band (7.5-12.5Hz) for all channels. It also has an option for negative feedback on beta channel (meaning that based on weight you set in the GUI, the beta waves will lower the tone and alpha waves will increase pitch).

The tones are hardcoded. The feedback is both with amplitude of the tone and slight changes of frequency. The tone is different for each feedback channel. This is a pretty basic, but working feedback proof of concept.

Setup:

banner

  • I recommend turning unused channels off before starting (use keys 1-8)
  • Tune down your system volume when starting :)
  • I recommend either turning off the BP filter or setting it to 5-50Hz
  • Turn off Smoothing in FFT panel, it is important that the feedback has no delay
  • Select the neurofeedback widget, start with alpha+ feedback, then you can switch to "alpha+ beta-" when you are comfortable with it

The code tries to detect artifacts (like jaw movement) by ignoring "superloud tones" over a certain maximal amplitude - when the tone goes over this threshold, the tone is actually set to total silence (Cutoff level). Try to relax your muscles, especially on the head, face and neck. If you are cutoff (hear no tone because the amplitude is too high), some of your muscles are probably tense.

There is also an option to have hemicoherence tone. You would set up A and B channels in the GUI with channels corresponding to the same position on both hemispheres. The difference between these two signals is the opposite to coherence, the lower the number, the louder the tone.

Installation

You can use this software instead of official and the neurofeedback should just work when you select the neurofeedback widget in the GUI :).

For installation instructions see the original documentation on running OpenBCI_GUI from Processing. Please note that in addition to running it from the IDE, you need to copy libraries and the sketch to the right directory and download and setup OpenBCI Ganglion Hub for Ganglion boards, the documentation is pretty specific on what to do, if you follow it, it will work!

If you do not see any Ganglion Bluetooth devices and you have Bluetooth on, it probably means that Ganlgion Hub is not set up correctly - you need to put it into the correct directory and not run it as a standalone app!

Released under original MIT license, (c) 2017 Juraj Bednár

Original README follows.

The OpenBCI GUI

banner

Provide a stable and powerful interface for any OpenBCI device

Welcome!

First and foremost, Welcome! 🎉 Willkommen! 🎊 Bienvenue! 🎈🎈🎈

Thank you for visiting the OpenBCI GUI repository.

This document (the README file) is a hub to give you some information about the project. Jump straight to one of the sections below, or just scroll down to find out more.

What are we doing?

The problem

  • OpenBCI device owners want to visualize their brainwaves!
  • Many of the researchers, hackers and students alike who purchase OpenBCI devices want to use them to acquire data as soon as their device arrives.
  • Users use macOS, Windows and Linux to acquire data
  • Users want to filter incoming data in real time
  • Users want to make their own experiments to test their awesome theories or duplicate state of the art research at home!
  • Users struggle to get prerequisites properly installed to get data on their own from OpenBCI Cyton and Ganglion.
  • Users want to stream data into their own custom applications such as MATLAB.

So, if even the very best researchers and hackers buy OpenBCI, there is still a lot of work needed to be done to visualize the data.

The solution

The OpenBCI GUI will:

  • Visualize data from every OpenBCI device: Ganglion, Cyton, Cyton with Daisy, and the WiFi Shield
  • Run as a native application on macOS, Windows, and Linux.
  • Provide filters and other data processing tools to quickly clean raw data in real time
  • Provide a networking system to move data out of GUI into other apps over UDP, OSC, LSL, and Serial.
  • Provide a widget framework that allows users to create their own experiments.
  • Provide the ability to output data into a saved file for later offline processing.

Using the OpenBCI GUI allows you, the user, to quickly visualize and use your OpenBCI device. Further it should allow you to build on our powerful framework to implement your own great ideas!

Who are we?

Mainly, we are OpenBCI. The original code writer was Chip Audette, along with Conor Russomanno and Joel Murphy. AJ Keller, Gabriel Diaz, Richard Waltman, and Daniel Lasry have all made major contributions as well.

What do we need?

You! In whatever way you can help.

We need expertise in programming, user experience, software sustainability, documentation and technical writing and project management.

We'd love your feedback along the way.

Our primary goal is to provide a stable and powerful interface for any OpenBCI device, and we're excited to support the professional development of any and all of our contributors. If you're looking to learn to code, try out working collaboratively, or translate you skills to the digital domain, we're here to help.

Get involved

If you think you can help in any of the areas listed above (and we bet you can) or in any of the many areas that we haven't yet thought of (and here we're sure you can) then please check out our contributors' guidelines and our roadmap.

Please note that it's very important to us that we maintain a positive and supportive environment for everyone who wants to participate. When you join us we ask that you follow our code of conduct in all interactions both on and offline.

Contact us

If you want to report a problem or suggest an enhancement, we'd love for you to open an issue at this github repository so we can get right on it!

Find out more

You might be interested in:

And of course, you'll want to know our:

Thank you

Thank you so much (Danke schön! Merci beaucoup!) for visiting the project and we do hope that you'll join us on this amazing journey to provide a stable and powerful interface for any OpenBCI device.

Installing

Follow the guide to Run the OpenBCI GUI From Processing IDE. If you find issues in the guide, please suggest changes!

System Requirements

Hardware

  • 1.6 GHz or faster processor
  • 2 GB of RAM
  • 400 MB of hard drive space (minimum)

Platforms

OpenBCI GUI has been tested on the following platforms:

  • OS X 10.8.5 or later
  • Windows 7, 8.1, and 10 (32-bit and 64-bit[recommended])
  • Linux Ubuntu Desktop 18

OpenGL acceleration is required.

Troubleshooting

  • When making an issue here on GitHub, please use an Issue or New Feature Template. Otherwise, the issue will be closed and you will be asked to make a new issue using a template. This maintains a standard of communication and helps resolve issues in a timely manner.

  • The OpenBCI Hub comes installed in recent versions of the GUI. When running the GUI from Processing code, please follow these instructions for getting the critical piece of software called the OpenBCI HUB for Mac/Linux/Windows. Thanks and happy hacking!

  • If you are on a Mac and you seem to get a "spinning wheel of death" when trying to open a dialog box to view files (example "SELECT PLAYBACK FILE" button), please update your Java Runtime Environment. This happens because Java was not packaged with a version of the GUI producing this error.

  • For more on GUI troubleshooting, head over to the GUI Troublshooting Doc.

License:

MIT

About

OpenBCI Neurofeedback based on OpenBCI_GUI

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HTML 55.3%
  • Java 26.9%
  • Processing 17.3%
  • Python 0.3%
  • CSS 0.2%
  • JavaScript 0.0%