Home » Art, Featured, Interesting, Mind Hacks, Personal Informatics, Quantified Self, Technology, Visualization

Neurosky Brainwave Visualizer

Submitted by on July 13, 2011 – 8:36 am 22,137 views 19 Comments

I recently purchased a Neurosky Windwave EEG device ($100 model).  The Mindwave measures your brain’s electrical activity, and can detect your level of focus (attention vs. mediation) and measure typical brainwave patterns (beta, alpha, theta, and delta).  There are a number games included, and a wide range of ones to download from their appstore.  I was surprised to see no immediate way to visualize or record the data coming from the device.  There is a project for Linux called Puzzlebox that emulates the Thinkgear connection protocol, however it seems to only support the Mindset (a more expensive Neurosky device that communicates over Bluetooth rather than RF).  There’s also a project called OpenVibe that let’s you visualize brainwave data (among other things), supports a number of other devices including Emotiv, however again only supports the MindSet.

I stumbled across a VERY cool hack ‘How to Hack Toy EEGs‘. As much as I eventually want to tinker around with some soldering and Arduindo hacking, this was a little more in depth with time permitting.  The key takeaway from this article was a very impressive Processing-based visualizer to grab data from the custom serial interface and display in real-time.  With relatively little work I was able to fork the version of code and interface with the Mindwave using the official ThinkGear Socket Protocol.  I also generated builds for Windows, Linux, and Mac so anybody can download and install. You can check this out at https://github.com/ericblue/Processing-Brain-Grapher.

Here’s the README with some more in depth info:

[Overview]

After purchasing a Neurosky Mindwave EEG device, I was surprised to see limited apps for
viewing and visualizing EEG output (brainwave activity for delta, theta, alpha,
and beta waves). Upon discovering 'How to Hack Toy EEGs'
(http://frontiernerds.com/brain-hack), I was
inspired by the Processing visualization of the Arduino-based serial output.
I wanted to visualize the same set of data, however decided to obtain it using
Neurosky's published ThinkGear Socket Protocol
(http://developer.neurosky.com/docs/doku.php?id=thinkgear_connector_tgc).

This fork of kitschpatrol's original code differs in that it doesn't use the
Serial interface to obtain brainwave data.  Rather, it communicates via the ThinkGear
connector using the ThinkGear Socket Protocol and requests data in JSON format.

[MindWave/MindSet Communication]

By default the ThinkGear Connector allows applications to connect over TCP
(default 127.0.0.1:13854) and request data in either binary or JSON format.
This application will connect to the ThinkGear socket,
and read the streaming real-time data.  Format:

	{
	"eSense":
		{"attention":91,"meditation":41},
	 "eegPower":
	 	{"delta":1105014,"theta":211310,
	 	"lowAlpha":7730,"highAlpha":68568,
	 	"lowBeta":12949,"highBeta":47455,
	 	"lowGamma":55770,"highGamma":28247},
	 "poorSignalLevel":0
	 }

The default IP and port will be used, unless alternatives are specified as
environment variables (THINKGEAR_HOST and THINKGEAR_PORT).  Port forwarding can
be used on the host Windows or Mac computer to allow remote servers to connect.
To allow other hosts to connect and run Processing, run ReplayTCP
(http://www.dlcsistemas.com/html/relay_tcp.html) OR, use netcat (windows or mac)
to port forward (clients can now connect to port 13855).
Ex:  nc -l -p 13855 -c ' nc localhost 13854'

[Required Libaries]

The following required libraries are included:

- ControlP5
- JSON (See http://www.blprnt.com/processing/json.zip)

[Binaries]

Binaries were creating using Processing's app builder
(platforms = windows, mac & linux)

[Todo]
- Re-visit previous todo from original code
- Add ability to record data (CSV, etc.)

Post to Twitter Post to Delicious

19 Comments »

Leave a comment!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.