ABThinkGear – Mind Reading with the computer


Use the force Luke… In Xojo! ABThinkGear is a wrapper around the ThinkGear engine to use the NeuroSky Mindwave device in Xojo.

Full source code and demo on my blog:
Alwaysbusy’s Corner

Related Post:
https://forum.xojo.com/11861-controlling-apps-with-the-mind/0#p87710

MindWave is a really great company. Glad to see more people are discovering it. :slight_smile:

I’ve been using it to experiment with coma patients (really excellent results), and in collaboration with a Xojo CGI webapp to “speak” with Chimpanzees :slight_smile: By using the “mobile” app, the reserve has had a decrease in chimp aggression and attempted escapes; since they can more effectively understand the needs of the primates.

Below is Henry, one of my favorite Chimpanzees. He enjoys using the app to communicate, and playing games on mobile devices (Bug Smasher and Tap Pigs are his favorites). He waits by the glass door each week for our visit & I taught him how to smile for the camera :slight_smile: You can also see a pic of me teaching him new symbols I’ve added to the reserve application. :slight_smile: Each symbol is unique in its shape, and associated with a real-world object/concept. On the wall inside the reserve is a tablet build-in with a webcam so the needs can be specified to each chimp “per request.” They express concerns/fear, hunger, boredom (wanting to play), and all sorts of emotions through the application by “clustering” symbols to formulate concepts. Chimps are known to have longer memory retention than humans for symbols, and better motor-skills earlier during development.

I’ll see if I can’t find (or take) some pics of Henry with his customized MindWave headset doing mind exercises during our visits.

I defiantly urge anyone with an interest in exploring the “next phase” evolution of technology, to try MindWave. Its inexpensive and easy to use.

http://store.neurosky.com/products/mindwave-1

After reading the thread I was thinking of getting the unit. But, the reviews on Amazon are really bad for this product.

It all depends on what your expectations are. I had this device for about a half year on my shelf after initial testing because it could not be applied for the app that I had in mind. The glass demo brought it back to my attention.

It’s not a device that can read “Apple” because you are thinking about an apple. For this you need much more sensors. But as Matt stated, after some training, a Yes/No is possible, maybe even creating a “thumb” of a thought, although the wave readings (alpha, beta, etc) can sometimes jump around a lot.

It’s a fun cheap little device that is well worth the money if you want to spend some time on the subject, but its applications will be more limited than with a $3000 device.

Each individual’s thought patterns are very different. With focus, you can reasonably start forming “thought” fingerprints of concepts as they are thought. At the moment, its much like microsoft speech which initially required some “training” and functioned excellent. Now, years later, microsoft speech is plug-in and go (as all systems are after learning from their technology). For under $100.00 its not a bad choice. There are headsets in upward of $1500-$3000. You do get what you pay for. But for experimentation with the technology, comes new advances and new uses for such technology. If Henry Ford waited for the Mustang Cobra series before driving the model T…he’d have never driven. :slight_smile: Plus, most of those reviews are not from developers, and by people who do not grasp how the brain works, expecting it to “read their minds,” then being disappointed when it doesn’t. End users can never appreciate software/hardware as much as a developer can. MindWave also comes with a guarantee so if you don’t like it, or it doesn’t do what you want (moreso the way you want), you can always get a refund or exchange it for a more advanced headset.

It is a great tool to begin understanding how to decode brain-waves into actual thoughts through code. Some headsets can now control prosthetic limbs entirely with the mind. There are other companies also. Shop around if you’re interested.

Hello, i have recently bought a mindwave ‘headphone’ for lets say what is possible…
I did in RealBasic the first attemps… the ThinkGear.dll (windows) in the same directory as my app… this works… the
red leds turn into blue… when i pressed a code under a button.
But when i want the same code running on Xojo , i had to put the ThinkGear.dll in the C:/windows/system/ map…
Then i also get blue leds… with following code :

[code] Declare Function ABGetNewConnectionId lib “ThinkGear” Alias “TG_GetNewConnectionId” (id as integer) as Integer
dim gid as integer

call ABGetNewConnectionId(gid)

Declare Function ABConnect lib “ThinkGear” Alias “TG_Connect” (connectionID as integer, serialPortName as CString, serialBaudrate as integer, serialDataFormat as integer) as Integer
dim r as integer

r=ABConnect(gid ,“COM8”, 1200, 0)

dim gd as integer
Declare Function ABGetValue lib “ThinkGear” Alias “TG_GetValue” (connectionID as integer, dataType as integer) as Double
gd=2
dim test as integer
test=ABGetValue(gid,gd)
msgbox str("value : "+str(gd))

[/code]

But how do i get a number recieved from the options, when i press a button… so can you put a example code on this forum.

Thx

Its more like this what i meant:

Under a button this (connecting ,you should see turning the leds in a other color):

Declare Function ABGetNewConnectionId lib “ThinkGear” Alias “TG_GetNewConnectionId” (id as integer) as Integer

call ABGetNewConnectionId(gid)

Declare Function ABConnect lib “ThinkGear” Alias “TG_Connect” (connectionID as integer, serialPortName as CString, serialBaudrate as integer, serialDataFormat as integer) as Integer

call ABConnect(gid ,“COM8”, 1200, 2)

//Then on a other button this:

Declare Function ABReadPackets lib “ThinkGear” Alias “TG_ReadPackets” (h as integer, num as integer) as Integer

call ABReadPackets(gid,-1)

Declare Function ABGetValue lib “ThinkGear” Alias “TG_GetValue” (connectionID as integer, dataType as integer) as Double

test=ABGetValue(gid,5)

editfield1.Text=str(test)
//Thats all, good luck , and thanks to Alain… bye