Ever had your mother constantly nagging at you while playing something interesting? Well, now you can improve the situation by having the Spectrum do the same. Impossible? Not any more with the Microspeech unit. The only difference is that the voice will sound like a Dalek rather than a Siren (your mother) and that you can switch it off whenever you feel like it (Try that with your mother)!
Considering the power of voice, the unit is very compact and installing it is kid’s stuff. You also gain a beep amplifier, because the sound is directed through your TV speaker. The detailed Programming Manual and Demonstration Tape display the whole ‘voice’ Spectrum at your disposal and if you can’t get to grips with it, try listening to your mother now and again.
Technically the unit is an allophone system, which means that like you and I it doesn’t care about the writing or spelling of the words, but simply speaks by concatenating speech sounds (allophones). To this purpose the string variable s$ has been reserved, which can be assigned by a LET statement:
LET s$ = "ssaavEE": PAUSE 1
and on pressing ENTER the unit will detect with the PAUSE period the s$ and the inbuilt allophone interpreter will convert the allophone symbols within the string into speech code and place this into a FIFO (first in first out) buffer. The code in the buffer will automatically be output to the speech chip, while the BASIC program continues.
The FIFO buffer resides near the top of memory between RAMTOP and UDG area and depending on the length of the buffer RAMTOP will have to be lowered with a CLEAR statement. The speech unit initialises RAMTOP on start-up to allow for a 256 byte buffer (RAMTOP = 65111 on a 48K machine) but this can be increased to the detriment of the BASIC memory area. There are 64 allophone codes and therefore 64 allophone symbols to choose from.
A one step intonation facility is provided (Daleks also get excited and raise their voices!) by using upper case letters (adds decimal 64 to the allophone code). You can create a word or phrase library by assigning string variables consecutively to the reserved s$ string (always with PAUSE 1 in between), or you can concatenate individual string variables to form s$. A more compact solution is to use a string array and concatenate and even slice the individual array elements.
If you don’t mind operating with allophone codes directly, you can bypass the interpreter and operate directly on the FIFO buffer by POKEing the codes directly into the buffer memory area. Once loaded you set the stack pointer to one below the last item in the buffer to be voiced by POKEing the stack pointer and — bedlam! Your Spectrum becomes an instant party killer! Loading the buffer can be executed with a small BASIC loader program either via INPUT command or via DATA statements:
10 LET a = 65361 20 READ b: LET x = b 30 FOR n = 1 TO (x - 1): READ b 40 POKE a,b 50 LET a = a - 1 60 NEXT n 70 POKE 65365, 255 80 POKE 65364, (65361 - a) 100 DATA 21,41,39,24,24,24,37,1,16,70, 41,39,53,3,19,55,3,34,14,20,13,55 10 LET a = 65361 20 INPUT "INPUT "; (65362 - a); ". CODE = "; b: IF b - O THEN GO TO 80 30 POKE a, b 40 LET a = a - 1 50 GO TO 20 100 FOR c = 65361 TO (a + 1) STEP -1 110 PRINT c, PEEK c 120 NEXT c 130 PRINT a, 65361 - a: PRINT: PRINT "PRESS S TO RUN" 140 IF INKEY$ = "s" THEN GO TO 200 150 GO TO 140 200 POKE 65365,255 210 POKE 65364,(65361 - a)
Whatever way you choose, always make sure your stack area doesn’t drop below RAMTOP or your BASIC program will crash... In a similar way the machine code afficionado can (man) handle the FIFO and stack pointer directly from assembler or native code and so incorporate voice into his silent Dalek game. Mind you, in space nobody can hear even the Spectrum scream!
If all this is softwearing you down and you are ‘first and foremost’ a game player, have no fear: The Currah Microspeech is rapidly becoming an industry standard add-on and the list below gives a hint of the games which already include voice facility. But beware of using the speech unit in combination with non compatible programs: BASIC and m/c programs will undoubtedly crash or develop unwanted and potentially dangerous side effects due to the clashing of the FIFO buffer area with the program’s own stack or program area (Play DEATHCHASE or ATIC ATAC and you’ll know what I mean).
If you’re wondering where to plug in your joystick interface, be ready for a surprise: Neither Kempston nor Protek, or most of the other joystick interfaces make provision for an extension edge connector except AGF Cambridge and Sinclair (Interface II). It would appear that most of these companies rely on the fact that they are the last link in the add-on chain and can price their products more competitively due to the cost reduction. And since Currah would appear to have been thinking along the same lines, it will be up to you the games player to sort out the bottleneck: The only sensible solution is a 56 way flat cable loom which plugs via a 28 position doublesided 0.1" IDC edge connector socket to the Spectrum with two or three IDC edge connector plugs along the length of the loom, so that the various add-ons may be connected up together (A motherboard with several edge connectors ports will also do). Certainly not a cheap solution. Considering the fact that a games player will almost certainly require a joystick and the speech unit, this is definitely a huge drawback.
Throughout the usage of the Currah Microspeech you will become increasingly neurotic and paranoid, believing to hear each and every word or thought repeated by an inhuman voice. Before consulting your psychiatrist, try entering LET keys = 0 and you will find immediate remedy and absolute tranquility while you key in your latest software creation: This command will disable the voicing of all the BASIC keywords and printable characters and you will instantly be able to hear yourself think again...
Simple and small unit. Also acts as only a sound amplifier by diverting BEEP sound to TV loudspeaker. Easy programming from BASIC and m/c as the unit is totally independent. It only requires feeding of a stack and setting of a stack pointer. But, as stack pointer and flagbytes reside in top of Spectrum memory: A) in BASIC, RAMTOP has to be moved down to protect this area; B) in m/c games, this area may already be used and system will crash or go funny. Fortunately more and more software houses take this into account. Allophone set is limited, but works well (for English language). Intonation limited to one step only. Various buffers may be used, switching between them by changing the stack pointers.
Price: High for a Spectrum add-on, but considering the complexity of the unit (speech chip controlled by allophone symbol interpreter/microprocessor) a small miracle. The unit comes packaged in an attractive card box with transparent window, complete with demonstration cassette, programming manual and all necessary connections. May be used with either 16K or 48K Spectrum. Price £29.90.
|BIRDS & BEES||Bug-Byte|
|3D MONSTER CHASE||Romik|
|THE GOLDEN BATON||Digital Fantasia|
|THE TIME MACHINE||Digital Fantasia|
|ARROW OF DEATH I||Digital Fantasia|
|ARROW OF DEATH II||Digital Fantasia|
|GRAND PRIX DRIVER||Britannia|