SBaGen -- Binaural Beat Brain Wave Experimenter's Lab

Intro | Mailing lists | Downloads | FAQ | TODO

Intro

Welcome to the world of Binaural Beats!

The theory behind binaural beats is that if you apply slightly different frequency sine waves to each ear, a beating affect is created in the brain itself, due to the brain's internal wiring. If, in the presence of these tones, you relax and let your mind go, your mind will naturally synchronize with the beat frequency. In this way it is possible to tune the frequency of your brain waves to particular frequencies that you have selected, using of the four bands: Delta: deep sleep, Theta: dreaming and intuitive stuff, Alpha: awake, focussed inside, and Beta: awake, focussed outside.

Here is a table from Calleman on how brain-wave frequencies relate to Earth layer boundary resonant frequencies:

Layer Radius Frequency Brain waves Magnetopause / Plasma sheet 60000 km 0.8Hz Delta Outer Van Allen Belt 25000 km 2Hz Delta Inner Van Allen Belt 12000 km 4Hz Delta-Theta boundary Earth's crust 6370 km 7.5Hz Theta-Alpha boundary Outer core 3500 km 13.5Hz Alpha-Beta boundary Inner core 1200 km 40Hz Gamma

It is also possible to produce mixtures of brain waves of different frequencies by mixing binaural tones, and in this way, with practice and experimentation, it is reportedly possible to achieve rather unusual states, such as out-of-body stuff, and more. See the books by Ken Eagle Feather, and the Monroe Institute site for more details. The Monroe Institute have apparently put 40 years of research into these techniques. Centerpointe have also done research into binaural beats, concentrating more on improving overall well-being, health and holistic functioning rather than reaching unusual states.

I should add that I have only read about the more advanced and unusual uses (OOBEs and so on). My own experiences have not reached quite that far, but still I feel that I benefitted immensely from using these techniques over the years that I worked with them in a concentrated way: from simply getting my head clear in confusing moments, to the energy boosts that came at times, to more general emotional clearing, and occasional very intense dreams (although not quite lucid).

So, SBAGEN is my utility, released as free software (under the GNU General Public Licence) for Linux, Windows, DOS and Mac OS X, that generates binaural tones in real-time according to a 24-hour programmed sequence read from a file. It can also be used to play a sequence on demand, rather than according to the clock, or to write a WAV file for playing later. Pink noise, MP3 and Ogg files (since version 1.2.0) may also be mixed with the binaural beats to provide background sounds. (Two files of randomly-looping river sounds are provided from version 1.4.0 onwards). This tool is ideal for anyone who wishes to experiment with these techniques and do research into this for themselves, so long as they don't mind editing text files.

My original idea was to use this utility to play a programme of different tones throughout the night, hoping to improve dreaming and dream-recall, and then to bring myself up into Alpha rhythms to (hopefully) make a good start to the day. I am now using it more for shorter focussed sessions of about an hour, both during daytime and at night. However, other people have used this software in many different ways. For example, one person suffering constant pain from historical injuries appreciated the way that he could tune the frequencies very accurately to his needs to help him sleep better at night. Other more unusual uses have included: mixing the sounds in as part of musical compositions, and generating ambient sounds during live DJ sets.

USE AND EXPERIMENT WITH THIS UTILITY AT YOUR OWN RISK!

Downloads

Available to download are:

NOTE: The extra tone-sets and sequences based on the document that appeared on USENET claiming to have measured the frequencies of the Monroe Institute Focus Levels are now included in the same archive as the program - see the files "focus.txt" and "wave.txt".

I have a TODO list of ideas which people have suggested. However, don't hold your breath -- I have limited time right now, although I do hope to do a rewrite at some point in the future.

Additional information:

A bit more background on binaural beats, from my reading and experiences so far.

Centerpointe appear to have put a lot of work into developing binaural beats into a balanced and well-tested programme. Certainly, from my own experiences with binaural beats, I can recognise the value of their approach to all this. Their site (including the new slide show) is worth looking at for a nice simple introduction to using binaural beats for meditation and health.

The Monroe Institute, who have done a lot of research into Binaural Tones. Their original Hemi-Sync (TM) pages, and the links off them, were particularly interesting on the subject of binaural beats. You can find them archived on the Wayback Engine HERE. Their new Hemi-Sync pages are HERE (until they re-organise their site again!).

Also check out the OpenEEG project, which aims to design a cheap-to-build EEG machine (

Intro | Mailing lists | Downloads | FAQ | TODO

Community

Thanks to SourceForge we have two mailing lists: sbagen-users for general discussion, and sbagen-announce for announcements of new versions. SourceForge also provides download space for the project files. SBaGen database, a collection of SBG files to download, with option to play live.

There are also various online forums that discuss binaural beats, for example Healing Beats.

Intro | Mailing lists | Downloads | FAQ | TODO

Also see the FAQ and TODO list

This includes the executable SBAGEN.EXE and full documentation and example sequences, tone-sets and background sounds. Since version 1.4.0 I'm trying out the free InnoSetup installer which should make things very much easier for Windows users. Any problems with this, let me know.

Note that the Win32 ZIP archive contains mostly the same files as the Linux TGZ archive below, except that SBAGEN.EXE is pre-built and all text files have been converted to DOS conventions. In version 1.0.11, Dirk Cloete's batch files replaced the UNIX script files, allowing Windows users to also run these examples. However, since version 1.2.0, Dirk's files have been replaced with the new .SBG files to match all the other sequences.

Scott of DreamCycle has kindly contributed a step-by-step guide to rebuilding the SBaGen source using Visual Studio. This should be useful to any VS-based developers who wish to make adjustments to the code:

The latest version (1.4.5) is an Intel build, as required for Lion. A disk-image file (DMG) is now used to make it much easier for Mac OSX users. The DMG includes a DEMO command-script you can run to get a quick taster, and a START command-script that sets up Terminal ready to play sequences. You'll still need to read the docs to understand more, but I hope this simplifies things a little. However, to use the earlier versions, you'll definitely need to read the docs.

Those attempting to make source-code modifications on OSX will likely find the following precompiled Ogg and MP3 libraries useful, to save the hassle of building them from source:

The TGZ file includes source, plus full documentation and some example sequences and tone-sets. Also included are pre-build libraries for Ogg and MP3 decoding on 32-bit x86 (Tremor and libMAD) to make things easier for some Linux users. The provided ' mk ' script should build on 32-bit Linux (you may need to change the order of args to cc sbagen.c $LIBS -o sbagen $OPT on some versions of GCC, and you might need gcc-multilib if you want to build 32-bit on 64-bit), but it will need adapting for 64-bit. Other platforms are mostly untested, but file output should be possible anywhere (including DOS), with real-time audio output on anything with Linux-style /dev/dsp, Win32 audio calls, or Mac OS CoreAudio. You will also need to download the river sounds TGZ if you don't already have these OGG files from a previous version:

Version 1.4.0 adds randomised looping background sounds, and built-in -p drop and -p slide sequences. Version 1.2.0 provides MP3 and Ogg mixing as well as many other improvements. Version 1.0.12 includes support for mixing in background audio from a raw or WAV file. Version 1.0.11 introduced support for Mac OS X 10.0 and 10.1, and included many example batch files for Windows thanks to Dirk Cloete. Version 1.0.9 added some new example sequences, Win32 support, and an experimental user-defined waveform feature. Version 1.0.8 added a CoolEdit-style pink noise helicopter-like effect. Version 1.0.6 added the features of accepting input from a pipe, outputting to a file or pipe, and writing WAV files directly.

The TGZ file contains the loopable river sound OGGs, required by everyone except Windows users (who have them already included in their installer). These are separate so you don't have to download them every time there is a new version. Put these in place of the dummy OGG files in the main archive:

Version 1.4.1 added ReplayGain settings.

There are three versions of SBaGen adapted to work with WinCE. The most recent has been done by Ivan Karamazov, and the previous two by Sam Lin (lincomatic). I don't have any WinCE machines myself, nor do I have the dev tools to create new executables, so you are mostly on your own with these.

Ivan doesn't wish to publish his E-mail address (so contact him through me if necessary), but Sam Lin has a SBaGen-PocketPC page which may have newer updates on his ports.

Version 1.4.4R from Ivan Karamazov. This includes OGG and MP3 support, plus extensions to support looping WAV files in addition to normal SBaGen OGG-looping. This is distributed as a number of ZIP files. To run it, you will only need to download the first two: the README ZIP, and the binaries. Please read the README files to understand how this port is intended to be used. You may also want to copy across the river OGG files and the standard example SBG files from a normal Windows installation of SBaGen.

The other ZIP files contain sources and build-environments and are only required for development:

Versions of SBaGen 1.4.3 and 1.0.9 from Sam Lin. Version 1.4.3: To install, see the SBaGen-CE page, or in brief: download the non-src ZIP, copy " sbagence.exe " to the PocketPC, copy the SBG sequences to 'My Documents', then tap "Open SBG" and select a sequence. OGG and MP3 playback are not supported, just binaural beats and noise.

Version 1.0.9: The binary is in " ARMRel/sbagence.exe " in the first ZIP file. The additional "sbagen-ce-data" ZIP file contains some experimental sequences that should be unpacked in "My Documents".

Here is version 1.4.5 compiled for Linux ARM, e.g. Debian. (This was provided by Cosmin.) I no longer have any ARM hardware to check that this works, so you're on your own with this:

This contains a 1.4.1 sbagen executable built for ARM Linux with OGG and MP3 support. It also contains the minimum source and libraries necessary to recompile it for ARM (with a cross-compiler). For all the sequences, documentation and river OGGs, please download the main Linux archive and river sounds archive separately. Building later executables would be possible, but I'm only going to do that if people ask.

Please see this site for a contributed build of SBaGen for Blackfin processors:

This is an old version (1.0.6) built for DOS thanks to the help of Notker Christoffel. Only WAV-file output is possible, but this may still be useful for die-hard DOS fans, as the Win32 version won't run on a bare DOS machine.

(See also my Bavsa tool for a visual analysis of binaural beats, which is probably easier to use than the tools below.)

For those who are interested in checking what binaural beat frequencies are present in a recording (e.g. for checking the output of SBaGen or other binaural-beat tools), and who are also willing to get their hands a little dirty, here are some improvised command-line tools for Linux (with source) that may help. These effectively do a very fine analysis on a small range of carrier frequencies that you specify, assuming that binaural tones are present in that range, picking out the binaural beat frequency and other parameters. Note that the code isn't perfect -- it may need tweaking to work well with some recordings.

SBGLIB is an attempt to create a more modern binaural beat generation library. This should fit in better with the callback style of modern audio APIs. It is possible to generate binaural beats which react to live events (see src/api.h ). It is also more rigorously tested with FFT analysis and gives higher quality than SBaGen (about 21-bits of clean signal above the noise floor for 16-bit output with dithering). However, noise generation, 'spin' effects and MP3/OGG playback are not yet supported. It uses integer maths for generation to support embedded systems like ARM.

Due to other commitments, work has stalled on this. If someone wishes to fund further work to extend this (at a reasonable hourly rate), I would consider it.

Also available is an experimental utility called rhybag, which can be used to generate smooth fast-changing binaural sequences, perhaps for inclusion with music. This is for Linux only, and it is somewhat alpha, although stable, with some documentation and examples.

Briefly, the difference between the two utilities is that SBaGen is designed for operation according to clock-time (although it can run in other modes), making smooth slow changes, whereas rhybag is designed to play sequences that contain very fast changes, without clicks or distortion, possibly mixing in samples. It uses a different notation more suited to this type of application.

Any comments on this experimental utility are welcome.

Intro | Mailing lists | Downloads | FAQ | TODO

These are ideas that people have suggested on way or another, not necessarily things I will ever actually get around to putting in. Many of these are fundamental changes, so this will all probably lead towards a new version of SBaGen (SBaGen 2), which will have to be a rewrite.

Add 'mixspin:' and 'mixbeat:' options. The first would apply the spin effect to the mix stream. The second would use a Hilbert transform and a 'twist' of the resulting complex waveform to shift the L+R channels up and down in frequency to create a binaural beat out of any recording. The idea seems sound, it just needs implementing and testing.

Give Mac users desktop access to the application, using double-click to run an SBG file, for example.

Possibly add JACK support (jackit.sf.net); this is yet another good reason to rewrite the core code to fit a callback model. This would lead onto easier CoreAudio and Windows audio support too.

Allow several channels that act independently, i.e. with independent slides going on through other activity on other channels.

Create a sbagenlib to do all the play-time sequencing and audio generation, permitting several different front ends to be created.

Make an 'easy' SDL-basd clickable GUI interface for Windows users, separate from the more powerful command-line interface.

Add support for triggering WAV/MP3 samples at certain points in the sequence: for example, "You have now entered Theta at 7Hz", or whatever.

Support clicking the mouse or pressing a key to make a record of interesting combinations of frequencies/tone-sets/etc, so that interesting points in the experience can be recorded without having to come out of trance.

Add random variation of frequencies within a range: "110+7.83 with softly RANDOMLY changing in 109-111, 7.75-7.85, but not like drop or slide." How to vary it exactly? Big question.

Command-line global volume control option, to adjust volume without having to edit the sequence.

Conversion to/from Gnaural XML files. (Not looked at them, so don't know whether this can be made reversible.)

More:

Maybe allow keyboard control to fade between different sequences in real-time. Actually this was suggested connected with rhybag. This might be achieved by a rewrite using SDL for the front-end and audio output code, effectively creating a completely new app.

Maybe add a screen that flashes in sync with the beats, as a cheap light-glasses replacement.

Maybe add a feature to record timing of user events during a session indicated by user clicks or keypresses.

Maybe add a feature to add modulation of the volume level in addition to the beating.

Add light glasses control with in the MagicJim / AudioStrobe method, i.e. adding high-frequency tones to trigger the flashes.

Suggestion: Add LPT1 light glasses control. The coding would be significantly different between Linux and Windows. Until I have some light glasses to play with, I can't see me doing this.

Suggestion: "sinusoidal, gaussian or user defined sweep in a frequency range" (!?)

Suggestion: Add coloured noise to SBaGen as mentioned on the mailing list.

Suggestion: Allow logarithmic fades (as in rhybag?). Allow noise modulation, both in amplitude and in pitch.

Suggestion: Implement isochronic tones. (Requested several times, but as I understand it, these aren't a true binaural effect, just a form of monophonic beating or pulsing.)

These pages and files, including applets and artwork, are Copyright (c) 1997-2019 Jim Peters unless otherwise stated. Please contact me if you'd like to use anything not explicitly released, or if you have something interesting to discuss.