Meg is 94 and as stubborn as that proverbial mule. She lives in a small terrace house in Melbourne and “does for herself”. Four years ago she stepped into the path of left turning courier van. Six months rehab did wonders but didn’t mend a badly broken arm or fix a badly set leg. Still she will not tolerate even the mention of a nursing home. Then twelve months ago, she went blind. She is still “doing for herself” but her quality of life has taken a hit.
Meg’s two main joys are the cricket and talking at length on the phone to her family and friends. These days there is no TV but there is a radio in every room. As far as the phone is concerned she has become completely dependent on people calling her. She has tried all kinds of phones with various kinds of hot keys but she can’t even read the buttons on the monster Blind Society phones. Even less is she able to consult her trusty teledex. Telstra’s Directory Assistance is good but can be intimidating.
I trawled the net for ideas about a dialler for the blind. There are plenty of offerings for voice activated diallers but they don’t seem to be all that simple to manage and I couldn’t see Meg’s voice cutting the mustard; besides they are all rather expensive. What we wanted was something really super simple to operate and which would not depend on voice commands.
The solution consists of an old 100Mhz computer and a very out of date Maestro modem. Meg’s Tardis as we now call it has only a single ON OFF power switch and only one active key on the keyboard, the space bar. There is no monitor or mouse. When it is turned on Tardis boots up and starts reading out options, one by one with a two second gap between. When she hears an option she wants Meg taps the spacebar. The Tardis responds with a beep and proceeds immediately to read out the next level of options.
There are three progressive layers of options. The selections that are made in the two higher levels decide which one of many groups of specific names will be read out at the third level. Currently there are three choices (based on geography) at the first level and seven choices (based loosely on kinship) at the second level. This means that the present system caters for 21 groups at the third level. When Meg finally selects a name from a third level group the Tardis responds by asking Meg to pick up the phone. As she does so the modem dials the number. Six seconds later the modem hangs up but by now the call is under the control of Meg and her handset. The whole thing works amazingly well.
At present Tardis is loaded with about ninety numbers and more are being added every few weeks. We prepare the additional wav files (the sound bites) and the additional text files (the phone numbers) here and send them to Melbourne on a bootable self copying diskette. That process also works astonishingly well.
As part of its start up and before it the three levels described above the Tardis offers (by means of another sound bite) the possibility of redialling the last number selected. This speeds up coping with engaged signals.
We think we have nailed down every possible form of misuse of the system. All of them result in an automatic rerun of the programme. None requires a reboot. The system runs entirely in DOS and that means that the system can be switched off at any time without having to worry about a shut down procedure.
So much for the promo. Now I need to own up to how it was done. Real programmers should stop reading this right here lest they be seriously scandalised. This was my first effort at any programming and the result is truly not more than a lash up of a mini wav reader, a mini dialling programme, a scrappy piece of compiled Quick Basic all held together with two small batch files.
The wav reader is a little 65KB program called “ab” v1.11 dated 1996 written by a John A. Ball of Prince George, British Columbia. We use the sound editor “Goldwave” to record the wav files at a miserly 11.025 kbs, trim them, adjust the level and save them as 8 bit mono files. Most of the wav files do not exceed 30 KBs.
The dialler is even smaller at 20 KBs. It is called “comtool” and was written by a K.H. Weiss of Weingarten in Germany in 1994. “ab” and “comtool” are both available from those wonderful repositories on the Internet that are easily found with Google.
Start.bat is the first of the two bat files. It consists of:
Break ON
ab hello.wav Rem Initial Welcome.
hello.exe Rem Waits indefinitely for goahead.
ab recall.wav Rem Offers option of using last number dialled.
commence.exe Rem Mostly about Initiation
recycle.bat
Recycle.bat consists of:
If exist Restart.bat Restart.bat
If exist Dial.bat Dial.bat
CALL Play.bat Rem Reads out the next option.
Main.exe Rem Does all the counting etc.
Recycle.bat Rem Loops back after every pass.
Main.exe consists of three pages of Quick Basic code compiled with QB4.5. The details of Main.exe can only be described as byzantine. It keeps track of progress through the three layers of options and specifies which wav file should be played next. It does this be writing Play.bat on each pass. Dial.bat and Restart.bat are also written on the fly as the need arises. If any member of the Club wants to delve into the detail they are more than welcome to contact me.
Anyone contemplating doing something similar needs to be aware that the undertaking requires quite a commitment. Nutting out how the options should be designed, recording a wav file and preparing a txt file for every number in the system, getting it all to work in an ordinary household situation and doing the updates take time.
What improvements would I like in the present system? Well, I should have included a call counter so that I could gather statistics on what numbers are called more frequently. That would allow me to fine tune the presentation of the options so that popular options and numbers come early. An ability to add new numbers on line from here would also be nice but the diskette system of updates is working well. Perhaps most important is replacing the lash up of Quick Basic and batch files with something a lot more sophisticated and modern. Does anyone want to make a suggestion?