Coder Social home page Coder Social logo

openbci / openbci_gui Goto Github PK

View Code? Open in Web Editor NEW
691.0 55.0 250.0 634.05 MB

A cross platform application for the OpenBCI Cyton and Ganglion. Tested on Mac, Windows and Ubuntu/Mint Linux.

License: MIT License

Processing 20.36% Java 20.02% HTML 58.39% JavaScript 0.23% CSS 0.27% Python 0.64% C++ 0.06% Shell 0.02% MATLAB 0.01%

openbci_gui's Introduction

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:

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, Daniel Lasry, and Richard Waltman and 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][https://docs.openbci.com/Software/OpenBCISoftware/GUIDocs/#running-the-openbci-gui-from-the-processing-ide]. If you find issues in the guide, please suggest changes!

**Note: Now compatible with Processing 4!**s

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.15.7 or later
  • Windows 8.1, 10, and 11 (64-bit)
  • Linux Ubuntu Desktop 18 or later

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.

  • 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.

Diagram

Here is a Work-in-progress diagram outlining the most important parts of the GUI. Created using https://app.diagrams.net/.

banner

License:

MIT

Links

openbci_gui's People

Contributors

andrey1994 avatar biomurph avatar cfausn avatar chrisjz avatar conorrussomanno avatar coreygo avatar daniellasry avatar evaesteban avatar gabrielibagon avatar gerrievanzyl avatar github-actions[bot] avatar jartuso avatar joe-westra avatar jooray avatar jstuever avatar kkashiva avatar leanneapichay avatar liqwid avatar mmangold7 avatar philippitts avatar retiutut avatar sreeharan avatar sunwangshu avatar wherrera10 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openbci_gui's Issues

More playback control

A feature request is extended playback control, such as the ability to start the file from the beginning while still in the GUI, viewing data. When playing back files, I would often want to start at the beginning to re-examine the data I've seen so far; however, the GUI currently only allows for pause ("Stop data stream") and resume ("Start data stream"). The only way to start from the beginning is to exit the system and then restart the system. It would be great to have a "Reset"/"Start from beginning" option in data view mode.

Other options could be "jump back 5 seconds" to re-examine particular moments in the playback. Or set a marker to be able to start from (e.g. play back the data from timepoint 1:30).

Playback Mode needs networking option

I can see that there are a few lines referencing
netowrkingBoxPlayback
This would be super handy for developing on the receiving end and troubleshooting without having to be streaming live data.

Widget: Impedance

  • Four channels
  • Text feedback of impedance value
  • Visual feedback of impedance value (Green, Yellow, Red...)

Improved Interactivity

  • Right now the dropdown menus are frustrating ... we need to figure out some hover and mouse tracking action to have menus auto-close
  • Hover suggestions/explanations over buttons ... for people that don't know what various things mean! (thanks for the idea, Andrea) ... this could be a but attribute ... String helpText = "xyz" ... if helpText != "" ... then show helpText after ~1 second
  • Query screen size before setting default x, y of window ... to prevent initial GUI from being larger than display resolution
  • Have all buttons activate on mouseReleased() as opposed to mousePressed()

Widget: EMG Responsiveness

Improve the overall responsiveness of the EMG widget

  • Backend
  • Sliders
  • Stop circles from leaving window
  • Fix config window

Bug: Radio configure utility

Just tried using the utility and noticed:

  • Help tip popups show up behind the control panel and become unreadable
  • No disconnect button, when i tried to go back to the control panel to connect, I got was not able to because the util was still connected to the serial port.
  • No feedback that the board is attempting to connect

Widget: New Time Series Plot

New time series plot

Ganglion Mode

  • Remove Ohm when in Ganglion mode
  • Remove "hardware settings" from time series plot in Ganglion mode

Playback mode

  • Indicator of current place in time
  • Located on bottom of time series plot
  • Total time and slider like watching a youtube video

Clean up repo

  • Remove all files that are not needed.
  • Organize​ PDE files
  • Rename all widgets to W_Xyz.pde

Resizing the window will reset some button texts and values

Resizing the window during data streaming will reset the text to "start data streaming", which is supposed to be "stop data streaming" still.

Resizing will also reset both texts and values of "Vert Scale(uV)", "Vert Scale(Log)", "Polarity" and "Max Freq". It would be better if they remain the same after resizing, as the rest of the buttons do.

Before resizing:
screen shot 2016-07-18 at 5 12 31 pm

After resizing: (buttons in red are those that reset after resizing)
screen shot 2016-07-18 at 5 12 40 pm copy

Code Reorganization

  • move all button.isMouseHere() interactivity from interactivity.pde into respective isMouseHere() functions of parent objects ... ex: topNav.stopButton.isMouseHere() should be in the isMouseHere() function of the topNav instance.

Clean Up Control Panel

  • Add "Tutorial" Button that links to Youtube tutorial for getting started via control panel
  • Fix spacing and make sure radio utility doesn't have any bugs
  • radio config/utility has the "SET CHANNEL" list created by default ... it needs to be turned on/off so as not to appear during loading sequence ... it could also be a mode conditional that needs to be updated

New Feature: OpenBCI 32 bit Firmware Additions

  • Get channel # — tells you channel number of your host/device pair
  • Set channel # — sets host and device, if device present. In case of failure to change, reverts back to original
  • set channel override — only sets the host... use this in case of not knowing device channel # ...
  • set channel override LOOP — loop host through channels until it makes contact with device
  • Set poll time — in case you're running into programming issues / code to radios (Serial-related timing)... FAST / MEDIUM / SLOW / OTHER ___
  • Parsing soft reset message for firmware v2 — GUI needs to work with V1 & V2 firmware

Tracking: Ganglion Backend Integration

New Features

  • Building ganglion code as a binary. See electron
  • Launching binary from processing. See processing's launch()
  • Node process status checks
  • Impedance checking
  • Show no ganglion's found message in control panel
  • Pass channel changing messages to node

Bug Fixes

  • Going back to the control panel should disconnect the Ganglion BLE inside the node process, but not stop the node process.
  • FFT widget only goes to 100Hz max

BDF Working

Verify BDF output is working for both Ganglion and OpenBCI 32 Bit board

  • Pass through scale to BDF
  • Switch file ending to BDF
  • Switch file name to BDF

Updated Widget Organization System

An overhaul of the entire widget system

  • Drop down for widget layout
  • Within each widget, turn upper left button into dropdown to select the widget for this container.
  • Backend code to add/remove widgets if container quantity changes

Widget: Montage (previously head plot)

  • Ultracortex presets
  • Mulitple channels
  • 10-20 labeling
  • Drag and drop channel number to 10-20 position
  • Drag and drop reference adn ground
  • Impedance testing visual feedback

"Playback" automatically selects 8 channel view

I noticed that when playing back a 16 channel recording on the GUI, it automatically sets the GUI to read the first 8 channels of the data only. This could only be changed to the 16 channel version of the GUI when first selecting "Live (from OpenBCI)", selecting 16 channels, then clicking "Playback (from file)" and starting the system from there. This is unintuitive, since the option of "Channel Count" looks like it refers to the "Live" data source mode, but not to the "Playback" mode.

In short - the "Channel Count" option should also appear at the "Playback (from file)" panel, or have the program automatically detect that there are 16 channels (columns) of data being read.

Reset sampleCounter to 0 to avoid false missed packets

Tracking: Ganglion Frontend

Bug Fixes

  • FFT widget only goes to 100Hz max
  • Cannot change the file name for a new output file. (can't type in text box)

New features

  • Impedance check button
  • No ganglion found error message

Final stuff for prod

  • Weird signal for ganglion second time device is used in same session
  • Kill hub at start up
  • GUI crash Cyton error when board is off
  • Clear BLE list on refresh click
  • Ganglion not writing accelerometer data
  • Electron not able to reconnect to board if it lost power with a connection on.
  • Kill spikes #90

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.