Brainwave Machine
Brainwave Machine
Brainwave Machine
0.1 - 3 Hz
Theta
3 - 8 Hz
Alpha
8 - 12 Hz
Low Beta
12 - 15 Hz
Midrange Beta 15 - 18 Hz
High Beta
above 18 Hz
Gamma
40 Hz
By using light and sound to induce these brain states we are able to gain greater control and efficiency of brain
usage. Furthermore, improvements in relaxation, memory, creativity, stress management, sleep disorders, and
even ESP(!) can be had by utilizing a brain-wave machine.
Commercial brain-wave machines cost hundreds of dollars, but you can build your own using only a few dollars
worth of components. In this document I will walk you through hardware construction and software control of an
easy to build brain-wave machine.
Disclaimer: I am not an electronics expert or a biofeedback specialist. If you fry your hardware (or your wetware)
don't come whining (or drooling) to me. I assume no responsibility for what you do with this information.
Note: Radio Shack charges about $20 for 8 LED's. I got 20 LED's from a real electronics store for $3.
Circuit Diagram
Construction
1. Drill four holes in each lense in a diamond pattern as shown in
the diagram to the right. Make the holes just large enough for
the LED's to fit through.
2. Glue the LED's into the holes. Be sure there is room between
the LED's and your face when you are wearing the goggles.
Actually, the LED's fit tightly in 3/16" holes and I didn't need to
use glue.
3. Wire all of the LED's cathode leads together and connect (with a long wire) to a ground pin on the parallel
port connector. Pins 18-25 are all ground so pick any one of those. Note: the flat side of the LED is the
cathode lead.
4. Connect the LED's anode leads to the parallel port connector. Follow the circuit diagram above which
outlines which parallel port pin to connect each LED to. Use long wires, you are going to want to be lying
down when you use the goggles. (If you are using a printer cable you can use a battery and a LED to figure
out which pin each wire is attached to.)
5. If your parallel port wires aren't already in a bundle tie them together with wire-ties so they don't get tangled.
You will also want to provide strain-relief by attaching the wire bundle to the goggles so it doesn't get pulled
off.
Hmmm, they look kind of silly. But that's not the point, we're here to explore the phenomenon of biofeedback, not
for a fashion show.
Browse the Brain-Wave Machine Image Gallery for pictures of readers goggles as well as modifications and
variations.
BASIC
The PC parallel port has eight data lines out. These data lines can be turned on and off by sending a byte to the
port where each bit in the byte represents the on or off state of one of the data lines out. In BASIC you do this with
the OUT function. The OUT function accepts two parameters, port address and a byte in decimal format. The
most common addresses for LPT ports in hex are 378h, 278h, and 3BCh. LPT1 is almost always 378h, or 888 in
decimal. The address parameter can be in hex (i.e. OUT &H378, #) or decimal format (i.e. OUT 888, #). Now
let's take a look at bit patterns...
Bit (or data line out): 1 2 3 4 5
Look at the example bit pattern included in the table above. The byte 0101010101 will turn on all of the even
numbered data lines. To convert this binary byte to a decimal value we just add up the "on" bits. (2 + 8 + 32 + 128
= 170) So the function call would be OUT 888, 170. So, OUT 888, 0 will turn off all eight data lines (0 =
00000000 in binary) and OUT 888, 255 will turn on all eight data lines (255 = 11111111 in binary). For example,
the following code will flash all of the LED's fifty times with a short delay in between.
FOR i=1 to 50
OUT 888, 255
FOR x=1 to 500
NEXT x
OUT 888,0
FOR x=1 to 500
NEXT x
NEXT i
Obviously we need something better for timing than a FOR/NEXT loop. Unfortunately QBasic doesn't offer any
timing functions with millisecond accuracy. Note: hz and cycles/second both refer to the flashrate of the LED's, so
15 hz = 15 flashes/second. I've written a small sample application which demonstrates one method of dealing with
the timing issue in QBasic (using the SOUND function of all things). The program also has timed sessions,
selectable frequencies, and three different flash patterns. Feel free to experiment with it.
Sample QBasic App: BWM.BAS.
Brainstar 1: Smoother interface and more features. Edit, save, and load patterns. QBasic source as well as a
packaged run-time version are included. Contributed by Fractal (HardCore Software), May 6, 2000.
Brainstar 2: Now with audio support, graphical session editing, and more. Contributed by Fractal (HardCore
Software), October 4, 2000.
Note 1: QBasic can be found on your Windows CD under OTHER/OLDMSDOS or search for olddos.exe on microsoft.com.
Note 2: These programs will not work under NT unless a driver such as Direct I/O is utilized.
C / C++
piX brain-wave controller: Some C source contributed by piX, September 30, 1999.
meskalin: Simple brainwave machine app for Linux and FreeBSD. By dodo, December 25, 2002.
Atmel AVR Microcontroller implementation (AT90LS4433) of the brainwave machine written in AVR C and
compiled with avr-gcc: [Schematic] and [Source Code] by slax0r, 2005.
Brain Wave Machine v1.0 made with NI LabVIEW 6.1 software for Windows 95/98/NT/XP. By Tobio Tezuka,
January, 2006.
Audio Tools
BrainWave Generator shareware for Windows.
SBaGen - Binaural Beat Brain Wave Experimenter's Lab for Linux, Windows, DOS, and Mac OS X.
Meditation
between 4hz and 7hz, either cycle between a few, or stay at a particular
frequency for different results
Induce Sleep
between 4hz and 6hz for starters, then go into frequencies below 3.5hz,
settling on about 1.5hz to 2.5hz for sleep
Creative Visualization
Stress Reduction
Self Hypnosis
about 8hz to 10hz while playing any self-hypnosis tape, or guided meditation
Super Learning
about 7hz to 9hz while playing any learning tapes, like foreign language tapes,
etc. to increase comprehension
Subliminal Programming