11th January 2014       

Good Vibrations

A low frequency-modulated haptic therapeutic device.


My main interest in developing this device lies in trying to extend the range of electronic wetware therapeutic options to a wider non specialist public. 

Over the past 10 years or so I've mainly concentrated on building and programming electronic "WetWare" devices which can be relatively easily 

constructed by hobbyists. Nearly all these devices have to do with the modulation of either Sound, Light, Magnetic-fields or even High-Voltage Stimulation 

of various parts of the body in order to achieve the desired therapeutic goal. To this end I usually program these devices in Avr and Arm assembly code 

... just check out the rest of this website ;-)  Recently however I happened to stumble accross Rfo-Basic by accident and I  was immediately impressed 

by its classical elegance and by its essentially Open-Source nature.

Real world interfacing, in real time, using an interpreted Basic offers a series of interesting challenges to someone like me who comes from an

assembly-language background. The simple lack of speed being the primary one - thinking in tens of milliseconds instead of tens of nanoseconds - 

really takes getting used to. On the other hand, access to a potential world-wide community of one billion users can more than make up for this limitation ;-)

In view of the above observations, I decided to program a device, which can form the basis for a range of similar products, based upon the bare Android 

phone itself and using Rfo-Basic as the primary programming language. And thus the Good Vibes project was born :-) 

How it works:

The eccentric cam dc-motor which acts as a vibrator in the Android phone can be modulated in frequency between 1 Hz and 30 Hz.

The intensity (Duty-Cycle) of the motor hammer can be varied using pulse width modulation (Pwm) between 1%  to 99%.

The volume of the White-Noise mono-sound through the onboard speaker can be varied in a linear fashion between 1% to 99%. 

Both of these options can be accessed, using the two Sliders on the main form. A green dual- display counts down every minute 

from one of the four available time sessions accompanied by a decrementing yellow progress-bar. Eight programs are offered in 

total and these can be accessed, just like the Interval-Rates and Session-Times, by clicking on the appropriate touch button on the Top-Panel.

The programs offered are as follows:

1:   Alpha_Low from 8 to 10 Hz.

2:   Alpha_High from 10 to 12 Hz.

3:   Beta_Low from 12 to 20 Hz.

4:   Beta_High from 20 to 30 Hz.

5:   Delta_Low from 1 to 2.5 Hz.

6:   Delta_High from 2.5 to 4 Hz.

7:   Theta_Low from 4 to 6 Hz.

8:   Theta_High from 6 to 8 Hz.

At the end of each Interval-Rate a random number generator routine chooses one frequency from the bandwidth 

offered by the chosen program option and displays it along with the name of the selected program.

The four Program-Times are equal to the following:

1:   15 Minutes

2:   30 Minutes

3:   60 Minutes

4:   75 Minutes

And last but not least, the eight Interval-Rates offered are as follows:

1:     5 Seconds

2:     6 Seconds

3:   10 Seconds

4:   12 Seconds

5:   15 Seconds

6:   20 Seconds

7:   30 Seconds

8:   60 Seconds

Please bear in mind that this is my first ever published Basic program and that my programming style still leaves 

much to be desired. All mistakes and errors in the program belong exclusively to me alone and any thing or idea 

you might find interesting is to be credited to the wonderful Rfo-Basic community from whom I've learned so much.

Download GoodVibes100.bas:  www.ullasmann.eu\Zip\GoodVibes.zip  

Download GoodVibes100.apk :  www.ullasmann.eu\Zip\GoodVibes100.apk