neurofeedback - use existing software, write anew?
My primary interest in OpenBCI is for neurofeedback for mental/brain-health (and maybe peak performance training). I have some experience on the receiving end of neurofeedback in clinical settings, but the equipment seemed too far out of reach for home use.
Now I've got my OpenBCI (32-bit), and I'm trying to figure out what I need to do to get to practical applications.
The last time I looked at tools (while waiting for OpenBCI to ship), it seemed like the two most promising (open-source) platforms are BrainBay and OpenViBE. But, after having installed BrainBay and taken a second look at the documentation for OpenViBE, it seems like we're a ways away from being able to start one of those and click on a button that says "Start Alpha Training Session."
and while I wasn't willing to try to cobble together an OpenEEG unit on my own — I'm not that confident in my electronics skills — I can write software.
So from here it seems like the options are:
- write/document/publish neurofeedback session designs for BrainBay
- pros: BrainBay already offers some interoperability for related tools, already has an OpenBCI driver that allows full-precision use of all channels.
- cons: Windows-only. It's reported to run on OS X and Linux under WINE, but if I needed to do any development beyond what the existing components offer, I'd probably need Visual Studio and such. Kind of a drag given the otherwise open source environment of OpenBCI.
- write/document/publish scenarios for OpenViBE
- pros: Also integrates with a lot of existing stuff. OpenViBE runs on Windows and Linux. Can maybe even write components in non-C++ languages?
- cons: No OpenBCI-specific drivers yet.
- write a new thing
- pros:
- could potentially include Android in our targeted platforms, which would be neat given OpenBCI's form factor and Bluetooth connectivity.
- I like Python, and it seems like there are other Python fans around here too.
- cons:
- Not-Invented-Here syndrome, lose out on compatibility, wisdom, and mind-share from existing projects.
- lack of a diagram-based configuration system might be less accessible to non-programmers.
Am I missing things? Other tools I should know about? Am I over-simplifying the problem or over-complicating the solution?
Comments
I would like to second that. I will be using the OpenBCI for two purposes if possible.
Neurofeedback and a device for reading evoked potentials. The last one will be coming very close to the things this group wants. At the moment is see no other way to use brainwaves to manage devices or games as evoked potentials.
http://en.wikipedia.org/wiki/Evoked_potential
I can think of one other software program that would be very useful and that is Bioexplorer.
I would prefer to have some Linux software as well. Possible something that I can run on a Raspberry Pie :-)
But, and a very big one it is, I am not a programmer. I have seen 10000s of EEG's and know a lot of Neurofeedback. But the max I can do is write a BASH script. I have a nephew that is able to do programming, I hope he will help. And when I have a running device I will contact a friend of mine who is running a hackerspace in Almere (http://sk1llz.nl/blog/)
Also. for the evoked potentials I guess that we will be needing some kind of filtering. But I will look into that when I have the OpenBCI running. And that is not the case at the moment. I am RTFM-ing
Warm greetings,
Paul
There are a number of posts on the forum mentioning BioExplorer, BioEra, neurofeedback. Search box at lower right of topic page will find these. Pete Van Deusen's Bioexplorer neurofeedback protocols are well respected, documented, and in use by a large number of home-trainers. I use both BioEra and BioExplorer here with Pocket-Neurobics hardware. Bioexplorer (and BioEra, OpenViBE) will work as soon as we have OpenEEG emulation working as an option with the OpenBCI firmware (new command code character to enter OpenEEG mode.) Chip's V2 code to do this is on his Github. Just needs porting to V3 and integration with the command parser.
BrainBay is quite usable and already comes with a number of sample neurofeedback session protocols. See the CONFIGURATIONS/EEG subfolder. Pete's protocol library is way beyond this level, but Brainbay users will be able to get quite a good start, and later decide if they want to try a commercial package. Brainbay can be built with Visual Studio, but also with open source build chains. (See the developer pdf.)
I've looked at the function blocks in OpenViBE compared to the others mentioned above. OpenViBE is really geared towards BCI signal processing programmers. And would be a daunting platform for neurofeedback home trainers. It has limited functionality built-in for those wanting to do biofeedback protocols.
It's possible we could get Larry Janow (Bioexplorer author) to do a native driver for us. Unfortunately he is not very responsive to emails or queries. However if persuaded with the prospect of substantial new customers, he might be more open.
Jarek Foltynski, BioEra author, on the other hand is very responsive to new drivers / features for his BioEra package. However this is an advanced design environment and would not be the best choice for beginners.
I also support your idea of some type of new neurofeedback design environment, that would scale across platforms. It would not have to be necessarily VPL "visual programming language" (block wiring) oriented as the others mentioned above. But you would face a substantial amount of reinvention inertia to overcome. One thing I notice with the VPL oriented platforms, is that they work fine up to a modest level of complexity. But past a certain point, they become challenging to maintain the designs, as there is no concept of source control, diff-ing between versions, etc. Some type of "intermediate flow control" language would be beneficial. The same elements as the VPL blocks, but described say in terms like Python would, with nested paragraphs and 'arguments'. (Preferably with named / keyword arguments.)
A consideration of interpreted languages such as Processing / Python, is that some of the element blocks (such as filters) take considerable processing cycles. So if an interpreter is used, it will have to support callouts to C, C++ functions / libraries, that can handle the heavy lifting.
Best regards,
William Croft
https://www.google.com/search?q=realtime+signal+processing+python
http://bastibe.de/2012-11-02-real-time-signal-processing-in-python.html
--
Another realtime VPL (audio processing oriented) I did not mention is PureData / Max .
https://en.wikipedia.org/wiki/Pure_Data
http://www.pd-tutorial.com/ http://en.flossmanuals.net/pure-data/
--
Val Brown actually used another VPL, National Instruments LabView, to build his Zengar NeurOptimal system,
http://www.ni.com/labview/
There is now a LabView toolkit for OpenBCI, see
http://openbci.com/forum/index.php?p=/discussion/274/labview-openbci-toolkit
I will look into it when I have a running system. I am confident we can at least do something in this direction.
As to BioExplorer, there a lot of professionals in the Netherlands that use this program. I play around with it as well, but not on clients. The writer is notorious for slow email response though ;-) For windows a .dll would probably be enough.
As to Val's toy I can not say much about that without getting severe legal issues. I was the one that put a 10 Hz signal into his system, proving it did not do what he said it did at that time. He kicked me out of the forum and community for that ;-)
I go on and struggle with the documentation now to get a working system. Still a bit afraid for a RTFM.
Although I can't find the "M" :-(
Warm greetings,
Paul
Just wondering. How would you make a 2 channel design? I put A1 + A2 on one (1) SRB by using a cable to connect the both.
And does the test version of BioEra timeout or does it have less functionality?
Your name does ring a bell.
Warm greetings,
Paul
As I have said before, the beauty of open source software is that everyone can suit themselves. I will be working with anyone who wants to create great open source software written in Python. There are many good reasons for choosing this language, which i can go into if anyone is interested. There are several packages that we should be looking to link in with: mushu, wyrm and pyff as well as labstreaminglayer, Kivy and Psychopy. Pandas, Plotly and the iPython IDE could also fill the role of reporting, to give clients nice visual displays of their progress.
OpenVibe and BCI2000 are great but things have moved on since they were created and I think we can do something better.
Please don't mistake my bluntness for unwillingness to discuss any of these issues. I thought it was better to say exactly what my opinion is rather than try to be too diplomatic and not bring up the issues that I think are important.
It might be necessary to make a decision about if it should be simple for someone who knows no programming to start or if it should be configurable and open to experimentation but require a level of programming knowledge.
My main aim is to develop neurofeedback protocols and conduct research into Neurofeedback treatment.
I also want to use it for BCI.
I think the work Keturn has done is very promising and I'd be happy with the idea of Keturn being lead developer of this Python/Kivy software idea for the OpenBCI board. Opening this discussion is an example of how Keturn conducts things. I also like the look of the plans Keturn has for the future of the txOpenBCI project.
## Brain dump complete
http://openbci.com/forum/index.php?p=/discussion/90/brainbay-install-neurofeedback-design
William
I am checking sometimes, if there are any news around this thread and it
doesn't seem to develop since last year. I was recently very close to hire
someone to write a Bio Era support for OpenBCI, but I have to admit, I prefer
to have it open source. This being said, I also have to admit that I don't have any programming skills which makes all of that quite hard to tackle (I started to learn Python ones on my own, but I don't have any idea how much I would need to know/ time to invest, in order to be able to create something helpful :P). I would be
willing though to invest other ressources, if that can be helpful to advance
the process. I am really keen on using Open BCI in a clinical context, as I am
a psychotherapist and it's a pity that I couldn't so far. So, if you guys see
any way how I can contribute, shoot!!!
I would be also happy to be filled in, if there has been things going on
since last year.
That's it for the moment. Maybe this discussion can be revived.
Heike
http://openbci.com/forum/index.php?p=/discussion/469/neuromore-studio-new-free-visual-programming-language-vpl-for-openbci
What kinds of neurofeedback training have you done in the past and what do you hope to do with OpenBCI? The upcoming Ganglion operates at 256 samples per second, which has the potential to emulate one of the Bioexplorer compatible amplifiers (such as OpenEEG). This would then allow use of Pete Van Deusen's Brain-Trainer NFB protocol suite. But of course would require purchasing Bioexplorer and Pete's package.
[note on the forum software we use here: cutting / pasting from Microsoft Word often produces poor formatting; just type your post directly into the comment box. Or use a plain text editor.]
William