	HCOLOURSßINDEXπ	PROGRAMSOTHERΓ
TUTORIALS	HARDWARE└DRIVERSCHLPDEM░HLHYPF	HLPHLPó
DNLS+SBPR]ABT╡CLHERE²NOTICESnTRACK¡IINDEXBACKsFORWARD		FILEFORMΦEEXIT
INTRODUCTION@SLINTROôQINFOΦRUKNê	CONGRATS# 	BOOSTERSα 	INPUTSYSQ#SE35X,MOUSEí,SWAV╪.PRCEp2BBSC3XBBSS`6TIPSÇ6FASTN:QREDw:	TUTORIAL╠:	SUFFIXES╢G	PROBLEMSαLINSTBIN7QINSTDR╟SPHILOSOPHY▐^PLAYERïcMUSIN)hSFTCRåhPRNEWiSLiREVALTFzSEHIST{CLKNp{SE350Xε{CMPLRæ├QR$─AUTDTü┘OVHDΘ┘BTCH█┌SI█SßCOMPL≤ΣSQCCΩSX╥≥SPROM±⌡SPKQ@∙POWSÖ∙TRISERΣ∙APPLS√SOB$ⁿEPRS ²SLXÉ²DISTRIB:	TECHINFOLSTANDALONE∙	OUTREDIRXBINDKEYBIND?DSKEMS'EMSUSE╬'HBNG╙)COMAG*BACKGROUNDæ*
BASICGAME╒7HEADPHONES»<KNOWNPROBS7BEMSOLECOOKINGxFAMSDES░FSHAREWεFUKTM╦MINTS60█MQMRCN
VOICEMAILLNLIMDES▐OPRTOP1POWNPROG3QCONTNUƒ{HELP╟¡EARTHSL┤PWX`┤CHEAP⌠─PPORTh┼FIDO╫┼SBLAª╞THND0╟WAVFV╚WINEN?╔DRVINu╦VSP$╬PIFS¬╧SFTS≤╧CPROG╨CACHEy╨OTHPR<╥OP1α╙OP2H╒OP3Θ╒OP4<╓OP5∞╓OP6Ö╫ENDa╪.Programs,PROGRAMS.Help on Help,HLPHLP
.Other,OTHER.Editor,SE350X
.Compiler,QR.Librarian,SL.File Player,S.Library Player,SLX.Speaking Clock,SX.(SQF) Player,COMPL.Index Player,SI.Keyboard Player,PLAYER.EPROM Convertor,SPROM.WAV Convertor,SWAV.Output Redirection,OUTREDIR.Key Bindings,KEYBIND.Tutorials,TUTORIALS.Drivers,DRIVERS.Hardware,HARDWARE.Obtaining Help,HELP
.Our BBS,BBS.Problems and Fixes,KNOWNPROBS.Notices,NOTICES.Technical Info,TECHINFO.Windows Operation,WINEN.SoundBlaster Pro,SBPR.Other Products,OTHPR.Congratulations,CONGRATS.Beginners,TUTORIAL.Suffixes & Prefixes,SUFFIXES.Philosophy,PHILOSOPHY.BASIC Game,BASICGAME.File Format,FILEFORM.Tips,TIPS.Help,HELP.Your Programming,OWNPROG.Boosters,BOOSTERS.Input System,INPUTSYS
.Mouse,MOUSE.Headphones,HEADPHONES.Standalone Units,STANDALONE.Pulse-Width Units,PWX.Installing BIN driver,INSTBIN.Installing TSR driver,INSTDR.Programming Drivers,OWNPROG.Using EMS,EMSUSEThis is a popup - providingsome incidental information.Now click on the little buttonon the top corner of this boxto get back to where you were.#HYP is a complete hypertext system'designed to allow the rapid generation#of hypertext help. Starting with a&plain text file, an author can create&a fast hypertext file in a very short%space of time. This entire SoftSpeak!help system was created from the%original manual in a couple of days,&excluding the time spent on expandingon the original!\┌────────────────┐\\\│The HELP system │\\\└────────────────┘\\QThe help system is adapted from \hyp\@HLHYP\, a help program developed in the UKEby Peter Scargill. Operation is (hopefully) simple. You got this farDby clicking on a menu item. There are also buttons to click on, and4certain text items also respond to the mouse click!HThe above is plain text, try clicking on the paragraph above then click!on \this coloured text\@HLPDEM\.,Click on the \FORWARD\\ button to continue..MRight, you are now on a new page, same subject. Try using the \FORWARD\\ and5\BACK\\ buttons to cover all the pages in this area.,Click on the \FORWARD\\ button to continue..IAs well as moving back and forth within a subject, and having the optionEto invoke small popup windows, you can always us a hypertext link toCchange subjects completely (the track button will bring you back).Try clicking \here\CLHERE\.Dynamic Noise Limiting System+The DNL system employed in SoftSpeak is of*proprietary design and provides excellent-noise reduction on speech signals. There are.many benefits to using the DNL, not the least,of which is improved compression when using.the compiler or compression utilities, due to.content reduction.  The cleaning up operation/performed by the DNL system is vastly superior*to the simple silence packing employed in*the compressor. Additionally, DNL is used+in the stand-alone EPROM files to increase,storage capacity without degrading quality.┌──────────────────────────┐│SoundBlaster Pro Operation│└──────────────────────────┘EIf you have a SoundBlaster Pro card, you may find the sound a littleDmuffled when playing back our samples through the Pro card. This isCbecause despite the fact that it is supposed to be compatible withCthe SoundBlaster, there is a low-pass filter turned on by default.EAssuming you have an SBPRO directory, go t othat directory and type:        \SBP-SET /DNFI:OFF\\CThis will release the output filter and improve the clarity of theHsamples. You may car to put that line in your \AUTOEXEC.BAT\@ABT\ file."REM Turn Off SB-Pro Output FilterC:
CD \SBPROSBP-SET /DNFI:OFFCD \\HYou are now in a completely new subject area. This particular demo areaDhas only one page involved. You could get back to where you startedCwith the TRACK button, or you could invoke the main index with theGINDEX button, or I can take you back to your original subject (page 1)if you click \here\HLPHLP\.=\This line is simply highlighted. It does nothing special.\\.Voice Mail,VOICEMAIL.Shareware,SHAREW.Distribution,DISTRIB%The TRACK (T) instruction allows you&to re-visit sections you have visitedpreviously.(The INDEX button (I) pops up a complete&menu system which allows you to go tothe relevant section for help.-BACK (B) is the opposite of FORWARD, ie each'section may have a number of sub-pages)associated with it and you can move backand forth between them.'When you are taken from one section to&another either by a hypertext link or'a menu item, you will always be dumped%into the first page of that section.)If the FORWARD (F) button is active, youcan move from page to page.)\File Format - SoftSpeak Indexed Files\\<As you can make stand-alone .EXE files from .SOF files, and?as we provide drivers to play them, this help section does not=cover the format of .SOF files. You may however wish to make;use of .SIF files for your own purposes where the standard>utilities are not sufficient. This discussion assumes you are>familiar with binary file manipulation. The format is simple,Bthe first 4 bytes comprising a LONG number, indicating the number>of entries. That is followed by an array of structs, as shownover....        long    entries;        struct {                long offset;                long size;                char name[8];                } entry[255];CFor non-C users, the first 4 bytes in the file comprise the numberBof entries (a byte would have sufficed), followed by sequences ofA4-byte offset, 4-byte size, 8-byte word name, etc etc 255 times.BAccessing a word is easy, find the name, get the offset, apply it@to the start of the file and you have your address. The size ofthe speech is also available./EXIT (E) returns you back to the main program.8                   \SoftSpeak II+ Release August 1992\\>       Copyright (c) 1989,92 Quantech Ltd. All Right Reserved;                  For HELP, click on the \INDEX\INDEX\ key0                       \SE350X.EXE THE EDITOR\\k       (KEYS:- T=\TRACK\@TRACK\, I=\INDEX\@IINDEX\, B=\BACK\@BACK\, F=\FORWARD\@FORWARD\, E=\EXIT\@EEXIT\)9                    \SoftSpeak II+ Release August 1992\\>       Copyright (c) 1989,92 Quantech Ltd. All Right Reserved;                  For HELP, click on the \INDEX\INDEX\ key0                        \SL.EXE THE LIBRARIAN\\k       (KEYS:- T=\TRACK\@TRACK\, I=\INDEX\@IINDEX\, B=\BACK\@BACK\, F=\FORWARD\@FORWARD\, E=\EXIT\@EEXIT\),                             \Information\\,                             \───────────\\=          \SoftSpeak II+ August 1992 - All Rights Reserved\\3                 Design Peter Scargill, Aidan RuffG   For technical assistance ring our technical hotline between 2pm andI     4pm UK time on \(UK)\@RUKN\ 091-4990920, or ring our 24 hour BBS onC         091-2280427 (1200-14400 baud - HST - 8 bits, 1 stop bit). Ringing from overseas, dial the"country code, then 91-4990920, or#for the FAX, ring the country code#then 91-4990961 - but remember thetime difference!!\Congratulations\\JCongratulations on purchasing \SoftSpeak\@SFTS\, the best low-cost speechCpackage on the market.... Designed in the UK by Peter Scargill andAidan Ruff of Quantech Ltd.\Using the Sound Boosters\\DIf you have purchased a sound booster, you may care to plug it intoDthe printer connector on your PC (LPT1 for example). Otherwise skipthis section for now.BLets assume you have created mydemo.exe as described in the paper
manual...        \mydemo\\>The above example will send sound to the internal PC speaker.        \mydemo 1\\.EAssuming the small dongle unit is plugged into the printer port withEthe speaker unit plugged in and switched on, the above will send the@sound to LPT1 (you may also use 2 for LPT2, 3 for LPT3 or S for5SoundBlaster, \Thunderboard\@THND\ and compatibles).\The Input System\\EIf you have purchased the input system, you can go straight into the2editor and try it out. If not, skip this section.EThe input system will probably be battery-powered and have an on-offGswitch. Plug the unit into your printer port (LPT1, 2 etc). Run up theeditor...type:-        \se350x\\.AClick on the mouse to remove the opening screen and look for theObutton marked Install. Now select the input \printer port\@PPORT\ that appliesDto your installation (the system comes set up for LPT1 so if you'veBplugged into LPT1 (the 25 way connector on your PC marked LPT1 or=PARALLEL PRINTER) you can probably leave the settings alone..FRight, back to the main menu. Make sure the input unit is switched onCand the microphone RED connector plugged into the MIC input on theDunit (the black lead, if attached is not required, though it CAN beDplugged into one of the booster units if purchased). . Click on theCsample button. You'll be asked to press a key to record... hit theDspace bar. You will see a line moving from left to right across the,screen, in the middle of the speech window..FSpeak into the microphone and you'll see the line move up and down inFsympathy. Speak quietly and the line will stay green in colour, speakEloudly and the line will change to red. A good recording will have aGmixture of both. Crisp speech is the goal here, not hi-fi! Try holdingEthe mic about an inch away from the mouth. Speak slowly and clearly.GPress the space bar when you've finished (otherwise the recording willFterminate when available memory runs out, usually after 50 seconds orso)..MYou should see the \waveform\@WAVF\ on the screen, if not, check that you'veGconnected everything properly and that the battery (if it is a batteryGunit) is connected - they are shipped disconnected. . If everything isEnow ok and you have a recording, click on the play button and you'llEhear the sound come from the PC internal speaker. The quality of theGsound will depend on how well you recorded the original as well as theDsize and positioning of the internal PC speaker. As time progresses@you'll gain an understanding of the link between the wave imageGon-screen and the sound. For further information about the editor, see#the section on \se350x.exe\@SE35X\@Click on the top left of the screen or press Q to quit from theeditor.!The full-screen waveform editor!
\The Mouse\\IOne important message before we look at the programs provided... we have=designed the editor around mouse drive for your convenience.AThe speech system runs in the background under interrupts. GuessFwhat.....the mouse uses interrupts.  We figured you'd rather not hearBnasty clicking noises when the speech is running, so the mouse is+switched off while speech is being played..EInterestingly, the early Amstrads although supposedly PC-compatible,Eare different in sufficient ways that we had to specially modify the!programs to detect Amstrad mice.\SWAV.EXE The WAV convertor\\@With the advent of Windows 3.1, the .WAV file format has become@popular not for any technical reasons but because the files are>supported by the Windows media player. These files are simple@8-bit data with a header block. SoftSpeak files are recorded at>somewhat under 10Khz whereas WAV files are generally recordedBat 11Khz and 22Khz. The utility SWAV.EXE converts .SOF files into?the .WAV format at 11Khz, producing a slightly bigger file. On@slow machines this may take a few seconds depending on the fileDsize because of the \processing\@PRCE\ involved. The resulting .WAVAfile will playback using any Windows multimedia utility. Use theDoption /Q to produce output files of lower volume than normal, with$correspondingly reduced distortion.See next page:.9   \SWAV </option> filename_of_sof_file_without_suffix\\   ie:=   SWAV /Q FRED             - where FRED.SOF exists already.,And it is involved...groups of samples have.to be interpolated to expand the file without.introducing the distortion that you would get-by simply adding in repeat samples every nowand then... as some folk do!\The BBS\\GThe bulletin Board is a service provided by Quantech to give our usersFFAST feedback. It is impossible for us to remain available 24 hours aEday and many users work from home. There is nothing more infuriatingDthan realising at MIDNIGHT that you have a problem and you can't doAanything until the next morning. We discourage users from makingFtechnical telephone enquiries in the morning (so that we can actuallyGget on with the job of improving the products!) and of course weekendsCare out as we use that time for relaxed development.. usually in aFpub! However, now you can leave a note on the BBS and be assured thatGit will be read first thing the next morning! We run at speeds of 1200"to 14400 baud 24 hours every day.:The BBS is part of the \FIDO\@FIDO\ \BBS\@XBBSS\ network.BBS───Bulletin Board Service\Handy Tips for Beginners\\HWhen you see the symbol <enter> this indicates hitting the \Enter\\ keyCon the keyboard.  When a character is prefixed with a carat, ie ^RGthis  means the Ctrl key and R keys are pressed simultaneously.  TheseFabbreviations are intended to make the text more readable, not to addjargon..
Of interest,		{	Brace	<	Angle Bracket	[	Bracket	(	Parenthese		^	Carat
	&	AmpersandEThis stuff is just for information, but for example, we use brackets-to indicate options throughout the manual..."        \qr\@QRED\ [/option] fred.EThe brackets are never actually used, but they indicate a command orEparameter that can be missed out entirely... it is commonplace in PCCliterature to use brackets this way. Similarly, angle brackets areDused to indicate an operation.... <enter> which is an indication toEpress the \enter\\ key, not to type in the word \enter\\... etc etc.
Lesson over!!Fastening the words together one"after another. Generally the join"does not provide a major problem.QR.EXE──────'Quick-Record is the command-line basedspeech recorder and convertor.\Tutorial\\L\SoftSpeak\@SFTS\ uses a "stored-speech" system where the reproduced soundsEtogether with the dialect and intonation of the original speaker areDretained. Packages for the Commodore Amiga offer 8-bit recording...Fthat is, 8 digital bits are used per sample, and the sound is sampledFanywhere between 4Khz (4,000 samples per second) to 22Khz. On the PC,Gthe RealSound people use 5-bit samples, and others have simply shifted-8-bit samples simply divided down to 6 bits..GFor the IBM PC, 6 bit samples are all the internal speaker can handle,Oand 6-bit sound is generally pretty poor. \SoftSpeak\@SFTS\ uses a proprietaryBsystem developed by Peter Scargill and Aidan Ruff of Quantech, toFoptimise the sound to for the internal speaker. The results..., well,judge for yourself..FCards such as Soundblaster and \ThunderBoard\@THND\ allow you to makeCrecordings, but their real specialisation is music and they aren't=much use if you don't have the card on every target machine.GThe editing facilities that come with such cards is generally limited.KOnly \SoftSpeak\@SFTS\ gives you the tools you need to successfully use PCMrecorded speech.  \Bolting\@FASTN\ the words together with the librarian canGoften provide acceptable results with no further editing, depending onEthe application. Recordings made with our input unit sound perfectly	natural..FIt is even possible to bolt together parts of words (much in the sameGway as the phoneme-based systems work) by extracting your own phonemesMfrom the existing material. \SoftSpeak\@SFTS\ provides you with an excellentEfull-screen editor (not limited to 64k like other editors) to adjustGthe results to your taste by mouse push-button control ...you can evenDmake up completely new sounds from the existing library if you wishD(if you purchased the input unit, you may still like to create your!own library of words and sounds..DThe software-only package provides you with a library of words (andCsounds) and both packages offer a set of tools to manipulate those=words.  You can join and tear apart sounds with ease.  SoundC"packages" up to the (DOS) available memory of your machine can be/stored, recalled, manipulated and played back..J\SoftSpeak\@SFTS\ applications are endless, be your interest games (we've>included a few gunshots in the software-only package for good>measure), instruction, control, marketing, security or simpleamusement..\The Speaker\\K\SoftSpeak\@SFTS\ can usually provide very respectable sound from the tinyFspeaker inside your PC, but results may vary from machine to machine.GIf you are in an environment other than a quiet office you may requireFan external speaker (some PC's {Amstrads, some COMPAQs} will give out6high volume levels but the clones vary tremendously)..ETAKE CARE WITH SPEAKERS - the magnets can erase disks if brought tooEclose. If you plan to use \SoftSpeak\@SFTS\ for stand-alone (non-PC)Bapplications, please contact Quantech for details of our low-cost'playback cards (and we mean low-cost).CAlternatively, the package supports output to the printer port andESoundblaster-compatible cards - and we can supply booster units thatFsimply plug into the printer port and give you LOADS of volume shouldJyou need it. We can of course supply the \Thunderboard\@THND\ - give us aring.\File suffixes\\FWe constantly refer to index files (.SIF suffix) and data files (.SOFCsuffix).  Here is a short explanation. You'll find a more thoroughdescription elsewhere.   \.SOF Files\\DThese files are simple data files, ie they contains speech or soundDin a format suitable for the editor and the playback utilities. The@sounds can be played back only in one piece, ie they contain noindexing information.. \.SIF Files\\B .SIF files contain a list of each word or sound in the file, itsE name, length and location within the file.  These files are used byE various utilities to create variable output, ie the speaking clock, etc.. \.SQF Files\\BYou won't find any of these on the distribution disks but you can@create them yourself with the S246COMP.EXE utility. These are aAspace-saving  compressed version of .SOF files which can only beAplayed back with the S246.EXE playback utility. In practice, the>compressed .EXE files are generally considered a better idea.. \.SOX Files\\BYou won't find any of these on the distribution disks but you canBcreate them yourself with the SQC.EXE utility. These are the very<latest format, offering vast saving  of space in return forAslightly reduced quality. They are a version of .SOF files which;can only be played back with the SFP.EXE playback utility.\Problems\\EIf you have any problems with the speech system, notably appreciableHnoise during playback, you may care to check config.sys or autoexec.batEfor resident programs that may attach themselves to interrupts.  The<kind of programs that could possible do this are pop-up tsrG(terminate-stay-resident, such as side-kick etc) programs and keyboardHenhancers.  Any such programs should preferably be removed when you areusing the speech system..CAlso check protected-mode programs that leave you in a virtualisedGenvironment (ie a DOS box in Windows gives you access to DOS but slows=down several operations such as interrupts and port accessesPconsiderably). See \Windows\WINEN\ for info on the driver for \enhanced mode\\.CApart from the saving in memory gained by removing tsr programs, aCkeyboard enhancer for example can cause interrupts to occur duringGspeech playback, this will typically cause a scratching noise.  We useFinterrupts to ensure a steady flow of data to the speaker and freedomEfrom system speed dependency. Other interrupts can cause interactionand degrade the sound quality..\Installing SPEECHDR.BIN\\CYou will need to edit the device driver in your CONFIG.SYS file inDorder to load the speech device driver.  For example, if you have a;subdirectory called SOUND on your C: drive, make a copy ofFSPEECHDR.BIN in the ROOT directory of drive C: then you need to add a>line to your config.sys file (located in the root directory):
So, firstly,        \copy *.bin c:\\.FThen, using your favourite text editor (shareware editor QEDIT and PD>editor TPE are both excellent) add the following line to yourconfig.sys file:)        \DEVICE=SPEECHDR.BIN [/option]\\		(or for AMSTRADS...)+        \DEVICE=SPEECHDR.BIN [/option] A\\.\Installing SPEECHDR.COM\\ESPEECHDR.COM is the software interrupt driven speech driver. It doesEnot require the presence of SPEECHDR.BIN and does not install itselfEinto DOS, but rather remains a separate entity and is controlled andFaccessed by making use of a facility of the 8086 processor in your PCFknown as a software interrupt. Many of you will have used DOS's int21?system function to access some low level DOS functions such asCKEYBOARD entry or DISK access, especially if you program at all inassembler..EWe have provided a similiar interface to the speech functions in our?driver. This is described in the section on using this driver.BInitially, however, the driver must be installed. DOS allows us aGsmall number of software interrupts which are not allocated so we mustEattach our driver to one of these. We have given you a choice of oneDof interrupt numbers 60h, 61h, 62h, 63h or 64h. You must inform the7driver at installation time which one you want to use..?To install the driver using int 60h, at the DOS prompt, type:-         \speechdr [/option] 0\\EAssuming that int 60h has not already been assigned to another task,Gthe driver will simply respond with the QUANTECH copyright message. IfCint 60h has already been assigned, a message informing you of thisFwill be displayed. You should then try another interrupt number, eg:-         \speechdr [/option] 1\\GThe above command will attempt to assign int 61h to the speech driver..COnce the driver has been successfully installed, used and finishedBwith, it can easily be removed from memory to avoid clogging your8system. This is performed by typing at the DOS prompt:-        \speechdr u\\0The driver will then unload itself from memory..
\Note:-\\DIf you have installed a library into main memory, using LIBINST.BATGyou must first unload this by typing LIBINST with no arguments. If youCdo not do this you will fragment your systems main memory and willEfind that some applications will no longer run, until rebooting - ofEcourse. If you have an EMS based library, you will no longer be ableDto retrieve its EMS handle from the driver and so will be unable to/de-allocate it. Again, LIBINST will remove it..FIf you are using one of the range of AMSTRAD IBM compatibles, you mayFfind that your computers real time clock is showing the time as beingBincorrect after using the speech system. If this is the case, you3should install the driver with an 'A' prefix, eg:-#          \speechdr [/option] A0\\<will install an Amstrad version of the driver onto int 60h.>Users of earlier versions of the driver note: the environmentDvariables are no longer applicable. Output control is done directlyFthrough installation switches and commands. You can set, for example,Cthe output to LPT2 either when loading the driver, or by a commandlater.... or both!\Philosophy\\CThe basic package consists of an editor, compiler, librarian, someGutilities and two different basic kinds of speech files.  You may wellCask why we did not make these into an integrated environment, much&like many other  modern environments.=Well, the major difference between speech and other forms ofBcommunication such as text, is simple.  Speech is real-time.  YouFcan't go off spooling to disk if you have insufficient memory (not onFthe PC without internal hardware support anyway)...the gap would be a,terrible annoyance, even on a fast machine..FSo we have kept the files separate so as to reserve as much memory asGpossible for speech.  Not a major problem on the faster PCs but due toFcertain design "annoyances" in the early Intel chips (64K boundaries)Bwe decided to make everything as fast as possible to keep overallDperformance on slower machines acceptable.  The screen routines areFwritten for EGA and are totally compatible with VGA. Where available,;the EGA/VGA editor will make use of EMS memory to speed up(drastically) menu operations.FVGA is the standard, but there are still a lot of EGA folk out there.0We think the editor is a reasonable compromise!,\Player - The Index File Playback Utility\\CPLAYER.EXE is a very simple program; you call the command from DOSGwith the name of an indexed (.SIF) file. You should have enough memoryGto hold the program and the data file. The program loads the .SIF flieEinto main memory and then sits waiting for key presses.  <ESC> takesDyou back to the operating system, any alpha key (ie A-Z) selects anFappropriate sound from the indexed file in the order they were saved..GThe example file provided with the software-only package, GUNS.SIF hasEGREAT samples from a certain movie which you will enjoy using if youCare into warfare.  The first few keys of the alphabet will produceDindividual gun noises.  By hitting them in sequence, you can createAbrand new effects easily.  The GUNS sample responds to keys A-G.FEspecially effective with the boosters or sound card, this is a greattension reliever!@A more useful example of the use of PLAYER is that of a musicalPinstrument\*\@MUSIN\, using stored notes, or for testing index files. Hitting aAkey while a sample is being played allows you to "terminate" theAoriginal sound and begin a new sound. Pressing ESC allows you toreturn to DOS.Within limits of course as thepackage isn't really intendedfor the reproduction of music.'The library you create when installing'the software-only version of SoftSpeak'or one you may have created using .SIFindexed files at a later date.The printout facilitywas not previously availablein the graphics-based versionof the librarian.\SL - The Librarian\\I\SL.EXE\\ the LIBRARIAN (yep, we know it sounds like Conan the BarbarianE- remember!) offers a number of features to manipulate sounds in theFlibrary, as well  as the ability to play back sections of the libraryor even play complete files.S\SL.EXE\\ always uses the default library components \SOFTLIB.*\@SFTCR\ - if theseFare not present on the current directory, then new, empty empty filesDwill be automatically created. (They are NOT present when you firstCunpack the files onto your system). You can make up a library withGthis name from ".SIF" files or by loading and naming individual ".SOF"Gfiles (you will have done the former when you first load up the system%as initially no library file exits)..FOn loading SL.EXE (type \"SL <enter>"\\) you will be presented with aDnumber of options.  At any time you may hit the F1 function key forhelp.CNote that no arguments are required when invoking SL.EXE, in whichMcase the default library \SOFTLIB.*\@SFTCR\ components are either created orFopened as appropriate.  Specifying a library name (up to 8 charactersC- NO SUFFIX) will create or use a different library system.  Files@that are not available on the default drive will be created andinitialized  automatically..SL.EXE Commands>  Make a new Speech File          Add to existing Speech File7  Add  to Library                 Speak a Library Item2  Replay a file                   Library Listing9  Library List Printout\*\@PRNEW\           File Listing<  Indexed File Addition           Create a New Indexed File/  Append to Existing Index File   Modify Entry/  Where to send output            Zap an entry'  Help (F1)                       QuitEMost of the commands are self-explanatory, but a few are listed herewhere clarification is needed..\Indexed File Addition\\FThis the first thing purchasers of the software-only system will haveGdone when installing the package, adding indexed (.SOF) files of words/to the library. Duplicate words are discarded..\Library Listing\\ETo see what words are available (none after initial loading), selectEthis option either by highlighted letter or hitting <enter> when theGoption is highlighted, you will see a list of words, along with simpleEexplanations  where appropriate.  Hitting any key will show you moreDwords until the list is exhausted.  Note that the list is in sortedCalphabetical order - it remains that way when new words are added.CMake a note of the names of a few words that interest you (anotherDoption allows you to print the lot out to the printer) and from the0menu select the \speak a library item\\ option..\Speak a Library Item\\AHaving selected this option, enter one of the words you selectedBearlier.  On pressing the <enter> key the word or sound will playback..\Replay a File\\FThis runs something like the stand-alone S.EXE program and plays backAthe .SOF files. To look at all .SOF files select the option FILE	LISTING..\Make a New Speech File\\ESpeech file creation is the most interesting of the options.  HavingCplayed about with the sounds with the SPEAK A LIBRARY ITEM option,Eselect a few to make up a short, simple sentence.  You will be askedBfor a file name, which you should make 8 characters or less.  YouEwill then be asked for a series of words to put into the file.  WhenDyou have finished entering the words, simply make a blank entry, ieChit <enter> without typing anything.  Assuming you called the fileCMYDEMO,  you can then use the "SPEAK" option to play back your newDfile (which will automatically have the .SOF extension added). NextCstep would normally be to tidy the new file up with the editor, or;perhaps "compile" a finished speech .exe file using QR.EXE.\Modify Entry\\EThis allows you to change the name of an existing entry or introduce4the description that may be attached to that entry.FADD TO EXISTING SPEECH FILE and APPEND TO EXISTING INDEXED FILE allow4you to add sections to files you have already made.DIf that were the end of it, this collection of programs would be ofBlimited use.  The full-screen editor, however, allows you all theflexibility you need...EFinally, you can use either the internal speaker for playback or, ifGyou have one of our booster systems you can output the sound to LPT1-3as preferred.Don't forget you can alter thespeed of the reverb to obtain many special effects. Try usingreverb on the same sample morethan once.. Also try using it from a slightly different startposition (left cursor).)(Sound Editor 350 lines eXperimental)...-except that it is now FAR from experimental.'The clicking noise will not occur when'the package is running in a DOS box in%Windows 3.x enhanced as the mouse is
disabled.*\┌────────────────────────────────────┐\\*\│SE350X.EXE - The Full-Screen Editor │\\*\└────────────────────────────────────┘\\FSE350X.EXE is a full-screen graphics-based, mouse-driven editor whichGallows you to modify the waveform that makes up the sound. The name is\historical\@SEHIST\.BThe sound you replay through your speaker is a varying electricalFsignal representing the original sound.  The  signals' rate of changeEand amplitude (level) varies in sympathy with the original sound. OfGcourse, you don't need to know this to use the editor but maybe you'llfind the knowledge useful..EAssuming that at any instant the sound can be at any of 60 levels ofGamplitude, silence rests at the half-way point, ie an amplitude of 30.CThe sound is represented on-screen by a waveform which varies fromCthat centre point. The bigger the variation, the louder the sound.DAt this point you should have something on screen to follow...type:!        \se350x mydemo <enter>\\GYou will see the editor pop-up and the waveform of the file mydemo.sofBwill be displayed after an initial sign-on message with your nameE(trying to remove this will do nasty things).  The waveform seems toEwave up and down the screen from left to right.  This represents theGvarying voltage (and also the movement of the speaker cone in and out,as it happens)..@SE350X loads the mydemo.sof file into main memory. For speed ofFoperation, only main memory is used by the editor. Certain operationsGwould be significantly reduced in speed if we were to use EMS or otherFextended memory. Typically you can load a file of up to 50 seconds or!more into SE350X for processing..BSome basics for DEVELOPER and PRO system users... in order to getDmaximum volume from the speaker, the waveform should be as large asFpossible.  Too small and it will be quiet, too large and parts of theDwave are flattened against the top and bottom of the waveform frameDand you get distortion (shown in RED on the waveform).  The AVERAGEDlevel of the waveform (ie where it seems to originate) should be inEthe centre of the display area. A good waveform will have some peaksEat the limits but not too many! Exp erience is the best guide and itcosts nothing to experiment!.GRemember, nothing you do will damage the original file unless you SAVEByour results, so don't be shy, you'll learn a lot in the process.GAs you enter the program, the entire waveform will be shown on-screen.CThis  may represent a mere fraction of a second of speech or 40 orEmore seconds depending on the size of the file.  You will notice theAvertical cursors on the left and right of the speech frame.  TheEscreen cursors can be moved about by use of the LEFT and RIGHT mouseEbuttons simply by moving the mouse into the waveform window area and6hitting the LEFT or RIGHT mouse buttons respectively..CExecuting any command by mouse is as simple as pointing inside theEcommand box and pressing the left mouse button. The on-screen button1will appear to depress just like the real thing..\Play\\APlay allows you to play the speech or sound between the cursors.EMoving the cursors about allows you to play segments of the original:sound.  To STOP the sound, you need to hit the SPACE bar.EIMPORTANT NOTE: Do not move the mouse while speech is playing.  ThisOmay cause an annoying \clicking noise\@CLKN\.  In any case, the mouse will not=operate while the speech is playing.  If you wish to try outDautorepeat you should use the keyboard (P) play key rather than themouse..\Zoom in\\DZoom In allows you to zoom into the area covered by the cursors, toFlook at the sound in finer detail.  Set the cursors to cover the areaFyou wish to view in detail and hit the ZOOM IN button. If the area isCmore than half of the existing screen the ZOOM IN command will not	operate..\Zoom out\\GZoom Out is the opposite of zoom-in, zooming out in the opposite orderDto the way you zoomed in (as it were!).  Whenever a ZOOM IN occurs,Ethe start-end position and cursor positions are noted by the editor.8When you ZOOM OUT, the previous positions are restored..\Cursors\\DThe cursors allow the movement of the left screen cursor across theGscreen, as does the mouse.  You are not allowed to set the LEFT screen%cursor past the RIGHT screen cursor..
\Insert\\CInsert allows you to insert a section identical to that within theDscreen cursors, assuming there is enough room in memory to hold theAextra data. Pick a complete word by moving the cursors about andClistening to what lies within them. Having covered the word by theDcursors, hit the INSERT button. Immediately after the word you willsee a duplicate.CTry moving the cursors out and listening to the result.  Handy forFinserting a bit more space when needed between words.  This operationAmay take a second or so if the machine is slow.  A more suitable4command for actually inserting blank space follows:.\Insert Blank\\BThis command is like insert, but deliberately blanks the inserted	section..
\Delete\\DDelete allows removal of an entire section of sound.  Simply selectGthe section to be removed (use ZOOM IN and ZOOM OUT and the cursors asEnecessary) to get the exact positions of the start and end, then useBthe DELETE command.  Very quickly (depending on machine speed and*sample size) the section will be removed..	\Clear\\CClear will make everything within the cursors flat, ie a flat line1will result, which will produce no sound output..
\Expand\\DThis command must be used with care.  As mentioned, in order to getDmaximum output, the waveform should go right to the upper and lowerFlimits.  If the waveform or part of it isn't centralised in the firstGplace, then it's going to hit the top or bottom first when you use theEEXPAND command. Before using this command you may care to select the<OTHER MENU and REMOVE DC OFFSET to minimise the distortion..\Blank Search\\=Use of this command will advance the left cursor to the next+appreciable quiet section of the waveform..\Reload File\\GUse this to reload the original file, either for experimentation or ifAyou make a severe mistake.  It is difficult if not impossible toFprovide the customary UNDO command without sacrificing speed, as yourCdatafile may take up all of the memory and UNDO would take up morePspace.  The RELOAD command is fast, in fact, if you have \disk-cacheing\@CACHE\Git will be more or less instantaneous. You may also use the command toGload a new file, after having studied the directory with the File Listcommand (other menu)..\Save Block\\FThis command allows you to save (with a file name) the sounds betweenEthe cursors only, rather than the whole file. The file will have the*suffix .SOF automatically appended to it..
\Save File\\AUse this to save the entire file, not just the sounds within the?cursors. You  will be asked for a file name, you may enter the7original file name if you wish to update the original..
\Reverb\\DReverb  is a kind of fast echo and provides the sound image betweenDthe cursors with a "roomy" feel reminiscent of the sounds you mightFhear in a large empty room.  Remember if you place the cursors over aCword or phrase to include a small section of blank to the right to allow for the \reverb\@REVALT\..\Echo\\FSee the instructions for REVERB.  This echo facility operates only onEthe sounds between the cursors so allow plenty of blank space to theDright for the echo itself.  Both REVERB and ECHO (and REVERSE ECHO)Acan be repeated and used together in any combination for specialFeffects - if you overdo it you will ruin the sound - be selective butDby all means EXPERIMENT. Note that, for your convenience, there areEdelay-adjustment buttons (the up-down arrows to the right) to adjustFecho, reverse echo and reverb. Adjusting the ECHO parameters will notaffect REVERSE ECHO..\Reverse Echo\\BSee instructions for ECHO, this novel effect brings an echo soundCBEFORE the original to provide an eerie effect.  For best results,Dmake sure there is some blank space BEFORE the waveform and include this space between the cursors..
\Expand\\'(Large Up-arrow bottom left of screen)BExpansion is not simply a lift of volume.  Because of the limited=dynamic range of the IBM hardware, this would prove not veryDeffective.  For  applications where maximum volume is required, andFwhere a little distortion can be accepted, the EXPAND command greatlyAraises the overall volume of the waveform between the cursors by3applying a non-linear amplification to the signal..\Reverse\\EThis command allows the time reversal of the information between theDcursors.  Identical to the effect of playing a tape backwards, thisEeffect is reversible.  This gives you the opportunity to play aroundGwith reverse reverberation, etc. by reversing the sound, performing an)operation on it then reversing it again..\Cut\\DThe command stores the information between the cursors on disk to aFtemporary file, automatically named - it does not actually remove theCinformation from the screen, you can do this with DELETE. When youFselect CUT, you will be offered a choice of 20 buffers (A-T) to whichDyou can save the area between the cursors. Select any one you like.GOnce a buffer has been used you will find a '*' character to the rightof the letter option..	\Paste\\DWith this command, you can copy a segment of data already stored toFdisk by the previous  command (CUT).  This segment can be of any sizeGas long as there is sufficient memory to the right of the cursor entryBpoint to handle the section you are to add. You will be offered aDchoice of 20 buffers (A-T) from which to retrieve information. Only@use a buffer that has previously had information stored to ('*'<character to right of option letter denotes a used buffer)..\Quit (Q)\\GDoes not save any files, simply returns to the operating system - makeFsure you've saved any important work. The small button topleft is the
quit button!. \A word about indexed files!!\\>As you will see later, it is possible to make your own customAcollection of words into an indexed file that can be accessed byDeither SI or the device driver.  A set of commands are available toallow you to do this..DBy index we mean an internal list at the start of the file, tellingFthe program where each word is and giving it a name.  These files can@be used by the SI.EXE utility and the device driver, to provideDcontext-related speech output for alarm systems, interactive query,6etc.  A typical (short) file may contain the words...>"THERE IS A FIRE IN THE BATHROOM, KITCHEN, LIVING ROOM HALL.".CHaving created a straight-forward ".SOF" file, say with SL.EXE theAlibrarian, you would load the file into the editor, surround theFvisual representation of  "THERE IS A FIRE IN THE" by the cursors and3use the following commands to manipulate the data:.\Append IDX\\GAppend Index will ask you for a name for the entry.  You could respondGwith the name "FIRE" (maximum 7 letters).  You would then surround theFindividual words "BATHROOM", etc and use the APPEND IDX command againto save them, etc. etc..\Review IDX\\BAny entry can be verified with the REVIEW  IDX command (you'll be@asked for an entry name and it will be played back immediately..
\Reset IDX\\EYou may scrap any collection of indexes built up, with the RESET IDX	command..\Save IDX\\?You may save a special indexed file with the SAVE IDX command,Cwhereupon you'll be asked for a filename.  This file will have theFsuffix ".SIF" automatically added and you can then use this file with<the SI.EXE utility as follows:  Assuming the file is called"FRED.SIF".   \SI  FRED FIRE BATHROOM\\.AThe utility will join up the relevant entries to form a completeFsentence.  Of  course, this was a simple example, the number of words@in an indexed file is limited to 255 or the amount of availableFmemory, whichever is least.  You can, in fact, pull out partial wordsDand join them together into new words once you have some experience@with the package.  How  good the finished result sounds will beDdependant on your developing sound editing skills. If you listen to3the speaking clock, you will see how bad we are!!!.FAt any time (in the editor), when speech is being output, hitting theDSPACE bar will cancel the speech.  We cannot use the mouse for thisCpurpose as mouse movement causes noise - reading the mouse buttons#causes noise as well, so we don't!.\Cue and Review\\GThe two allow you, if you have ZOOMED IN, to move around the waveform.9These buttons may be held down and they will autorepeat..\Low Pass Filter\\GThe filter is a mild treble filter that operates over the area coveredFby the two cursors. You may use it over and over to create a dramaticDfiltering effect if you require. Handy for improving noisy original<signals or for smoothing waveforms that have been "hacked"..\Dynamic Noise Limiting\\@The area covered by the 2 cursors is subjected to dynamic noise@limiting. This has been optimised for voice. There is usually aBbackground noise when making SoftSpeak recordings. This is causedDpartly by the ambient noise in the room in which you are making theFrecording and partly by the recording process itself. The noise takesCthe form of a hiss. Dynamic noise limiting can reduce or eliminateHthis noise by a process of selective filtering. An auto-tracking filterEis applied to the signal whose effectiveness varies with the overallAoutput level. As the level increases, the filtering is cut back.DThe effect can be startling and the best way to find out the effectAis to try it. Press \6\\ on the keyboard or select \other menu\\then \DNL\@DNLS\!.\Triangle, Square\\@These allow you to insert BEEPS of varying frequency. The PITCHBbuttons (Up and Down arrows to the right of the waveform buttons)Gallow you to change this frequency (you'll find the triangle wave moreDlimited in range than the square wave). Simply position the cursorsDfor the length of waveform you require and hit the relevant button..\Envelope\\GThis feature allows you to put a slowly decaying fade envelope betweenFthe cursors. Specifically included to enhance the square and triangleAwaves (see over), the effect is very much that of a simple fade,Fbeginning at the left cursor and ending at the right. If you include,Bfor example a burst of square wave, move the left cursor say, 25%?along the waveform, put the right cursor at the end and selectFenvelope. Now play the entire burst - the effect is self-explanatory..\Remove Clicks\\GFinally, the button marked REMOVE CLICKS should only ever be used when>you are saving a .SOF file and don't intend to modify it. TheGoperation will put a slope on each end of the waveform and effectivelyBeliminate the clicks that can occur at the beginning and end of aAstored sample. The values are optimised to have a similar effect:even when outputting to the Soundblaster or Thunderboard..\Other Menu\\EPress the OTHER MENU button IN THE EDITOR and you will be given somechoices....\Raise and Lower\\EThese are gimmicks, pure and simple. You can adjust the speed of theGsample between the cursors but the quality will degrade. When loweringDthe speed, make sure that there is some blank space to the right ofEthe sample to allow the slower (hence longer) sample room to expand.ESpeeding a signal up then slowing it down will result in distortion..\Chop\\EThere are two buttons that allow you to chop the waveform up (createEalien effects), with differing periods. These are again gimmicks butEif you wanted the effect and we hadn't provided it........ try theseon a section of speech..\Remove DC Offset\\DWhen you make a recording, for one reason or another the signal mayBnot be exactly half way between the top and bottom of the displayAarea. If you expand the signal you may be clipping one side moreCthan the other, leading to excessive distortion. You can of course?move the average DC level up and down with the relevant buttonBcontrols, however when you look at the waveform on the screen youEare only looking at a representitive sample, not every point (unlessFyou are fully zoomed-in). This function checks the average level overAthe area of sample enclosed with the left and right cursors, andDadjusts the signal optimally. On a slow machine with a large samplethis may take a short while..\Tidy Up\\DThis is in fact a very important function. In the process of makingFa .SIF file you will perhaps make a recording that might go somethingGlike this... "nought....one....two....three" etc. You will end up withF"lumps" of waveform on the screen, with silence between. Well, thats'Dthe idea anyway. In practice the "silent" bits will have backgroundCnoise from your computer, or the rain outside... when what you are@really looking for are isolated sections of speech with perfectEsilence between. The usual way to approach this is to experimentally?find the start and end of a given sample and BLANK the area inGbetween. Study also the section on dynamic noise limiting \DNL\@DNLS\..:In certain circumstances, the editor may be able to help.GGiven a short section of speech or sound, surrounded by silence, placeAthe cursors over the active area, making sure you leave a little=margin on either side. Select the second menu and "Tidy Up"..?You will notice that the leading and trailing noise disappearsFautomatically. If this is not the case then the noise was at too highCa level. For most "clean" recordings this command will prove to beFinvaluable. On several occasions we have used this command to get ridFof rubbish. Consider a kids' alphabet trainer... you need a file withFthe letters "A...Z" in sequence from which you'll create a .SIF file.CThe "Tidy Up" command makes light work of cleaning the file before-collecting up letters or words for indexing..BFinally, going back to the main menu, note that there are 4 largeFarrows bottom left, we've detailed the up-arrow expand volume level).FThe down- arrow is reserved for now, the other two allow you to reset.the left and right cursors to their extremes..\Install\\EThe Install button allows you to select input from the parallel portBLPT1 (default) or other LPT ports. Output normally goes to the PCGspeaker but can be routed to a parallel port if you have purchased oneMof the booster systems, or to the \Thunderboard\@THND\ or Soundblaster card.A COMPILER in the strict sense!of the word, takes in a computer!source code and converts it intoeither assembly language ordirect machine code."\QR.EXE - The Recorder/Compiler\\%The program is command-line driven:-        \qr fred\\GThe example above will allow you to record from the LPT1 input system.CThe example makes a file called fred.exe from speech input via theFmicrophone, When the program starts up it will wait for the SPACE BAREto be pressed. Pressing the key will start record, which will eitherFterminate when memory is exhausted or if you hit the SPACE BAR again.FEither way, the file will be saved and the program terminated. QR.EXE)is very useful for producing voice-mail..ENot a \compiler\@CMPLR\ in the strict sense, this program produces aBstand-alone speech .EXE file from your speech files or microphoneBinput. Given existing .SOF files to compile, QR.EXE allows you toAconvert these into stand-alone files. Simply enter the /f option followed by a .SOF filename. ie        \qr /f redal\\FGiven that you have the file REDAL.SOF in the current directory, thisGproduces the program REDAL.EXE which contains both the information andFthe mechanism to allow it to speak. When run, the program will simplyFplayback whatever was in REDAL.SOF without any external drivers. Such7files may be used and distributed without restriction..CA topical use of the file input facility is to import Windows .WAV
files....        \qr /q /w /c chimes\\B        The above example will pull in the Windows 3.1 CHIMES.WAVAfile and convert it into a much smaller .EXE file. The /q optionAstops the compiler from boosting the sound, which would increaseAthe distortion slightly. The /c option compresses the file using6PKLITE or LZEXE as available in the path. See over....AThe /q option allows you to automatically compress the .EXE fileDusing either LZEXE which is provided free or PKLITE if in the path.#This takes a trifle longer to run.        \qr /f /c redal\\IStand-alone .EXE files can do their own redirection. by placing '1', '2'Ior '3' or 'S' after the standalone filename you can re-direct the outputHto LPT1, LPT2 or LPT3 (PS/2 compatible) or Soundblaster/Thunderboard as
required.        \redal 1\\.CWe produce a range of output units including a simple plug-in unit?that offers an output suitable for any amplifier, and a small,Dself-contained booster unit. Very few machines (Compaq for example)Dmay give a weak output from the internal speaker, in which case youFcan obtain a dramatic improvement by the use of one of these units or5the Thunderboard all of which are reasonably priced..MThe production of .EXE files adds a very \tiny overhead\@OVHD\ to the speechDfile, but you may distribute standalone files such as these withoutGany restriction. The BIG advantage of producing standalone files comes'when you make use of DATA COMPRESSION.BThe utility file LZEXE.EXE is provided free with the package, hasDFrench instructions, is available in an earlier version in English,Eand has to be one of the best compression utilities in the World!! -FThere are no restrictions on its' distribution, except that it CANNOT	be sold..COn the assumption that you have the file REDAL.SOF on disk, make astandalone file...        \qr /f /c redal\\FLook at the size of the final REDAL.EXE file. This will run as normal;but will be much smaller even than the original .SOF file..FNote: Please note we cannot accept responsibility for any damage thatFmay arise if you try using LZEXE on  any normal .EXE files. In theoryDthe program will compress normal .EXE files but we are distributingGthis free of charge in accordance with the authors wishes so we cannotGaccept responsibility for its use, nor offer assistance in using it inDany way other than described above. We have thoroughly tested it on)our speech files and it works perfectly..?Compression enthusuasts may also care to look at the sharewareGcompression utility called PKLITE.EXE - This is shareware so we cannotGdistribute it here, however it does a faster job than LZEXE! In the UKByou can pick it up from our BBS, together with lots of other fineGcompression programs. If PKLITE.EXE is in the current path, it will be6used in preference to LZEXE.EXE by the program QR.EXE.FThere are a number of other command line options available to QR.EXE,'which must be separated by spaces.....> /f      Use a .SOF file for input rather than the microphone6 /s      Generate a .SOF file instead of an .EXE file  /c      Compress the .EXE file' /2      Use LPT2 for microphone input' /3      Use LPT3 for microphone input/ /m      Take in a .SND file recorded at 22KhzA /w      Take in a .WAV file recorded at \22Khz or 11Khz\@AUTDT\/ /n      Take in a .SND file recorded at 11Khz7 /v      Take in a Soundblaster uncompressed .VOC file. /q      Don't boost the level of a .VOC file> /l      Use dynamic noise limiting \DNL\@DNLS\ on the sample.)\Dynamic Noise Limiting - new addition\\?The recording or existing sample is subjected to dynamic noise@limiting. This has been optimised for voice. There is usually aBbackground noise when making SoftSpeak recordings. This is causedDpartly by the ambient noise in the room in which you are making theFrecording and partly by the recording process itself. The noise takesOthe form of a hiss. Dynamic noise limiting \DNL\@DNLS\ can reduce or eliminateBthis noise by a process of selective filtering. A variable trebleDfilter is applied to the signal whose effectiveness varies with theCoverall output level. As the level increases, the filtering is cut#back. The effect can be startling./As of June '92, the compiler now automatically+detects 11Khz and 22Khz files and converts
accordingly.,The overhead associated with the production+of .EXE files is minimal. There is a fixed*overhead with all .EXE files and then the*driver which we add. Compared to the size,of even a small .sound file the addition isnot worth thinking about!For more information on batch files, consult the DOS manuals.\SI.EXE - The Index Player\\ESI.EXE is a simply player, like S.EXE except that it handles indexedfiles.  The format is:%        \SI FILENAME WORD WORD etc\\        \SI  FILENAME ?\\@The first version will actually speak in quick succession thoseDsegments of the file requested.  This is a quick way of testing out?work sequences and can be made useful in a \batch\@BTCH\ file..FThe latter form will not speak at all but will simply print on-screen'a list of all the entries in the file.FSI.EXE requires file names to be entered without the suffix and makes*use only of files with the ".SIF" suffix.DAs a matter of interest, we have built a little editor into SI.EXE.FIf you key "SI ^" you will be asked for a word, then the program willGwait for an entry.  No help here as this program had to be kept short,Dbut the characters "," and "." will alter the start position of theword..GYou will hear the result and the characters "<" and ">" will alter theFend position.  You may have to repeat these a few times to notice theDdifference.  The character "S" for SAVE will update the result, theESPACE character will let you hear the sound again and simply hitting(<enter> will ask you for the next word.HHitting <enter> again will save the lot and return you to the operatingEsystem.  This is a really handy way of making last-minute changes toEan indexed file, once you become familiar with the system.  You are,Gof course, not changing the amount of space used by the file, just the%start and end pointers to the words.\S.EXE - The Simple Player\\GS.EXE is a simple file player, it will play files with ".SOF" suffixes@although you must not actually enter the suffix.  In operation:"        \s [/option] <filename>\\.8A number of lines saved in a batch file can be used forGdemonstrations.  At 40 seconds per speech file and a mere second or soDto reload, with a big enough disk you could leave the thing talkingEall morning! Handy for testing out demos (you can produce .EXE files?for the real thing as these can be freely distributed. With anAexternal speaker (and perhaps amp) you could set up a batch fileFtogether with some graphics to make impressive demos for exhibitions,"etc - multimedia on a shoestring!EFor an alternative, and one which does not involve you with problemsAof distribution of copyright software, consider using the SPEECH&COMPILER (QR.EXE) detailed elsewhere..FThe file is provided for compatibility with old packages only. Please.see the section on \SQC.EXE and SFP.EXE\SQCC\F\S246.EXE - Compressed-File Compiler and Player (S246COMP and S246)\\CExactly the same as S.EXE but used to playback files with the .SQF>suffix. These files have been produced from .SOF files by theES246COMP.EXE compression utility. In playing back such files you mayFnotice a slight delay after loading, before you hear anything, as theFfile is loaded then decompressed into memory. This delay should be noDproblem except perhaps for very large files on the slower machines.@The files are provided for compatibility with old packages. The@compressed file retains 100% of the original information and is@therefore suitable where quality is absolutely critical. PleaseFsee the section on \SQC.EXE and SFP.EXE\SQCC\ for better compression..HThe associated comressor utility allows you to produce compressed files5for playback with the S246.EXE utility. Simply type:        \S246COMP <filename>\\Bwhere <filename> is the name of the .SOF file (minus the suffix).DThese files are compressed to a degree that varies according to theEamount of variation in level and the amount of redundant informationCin the file. 50% compression is possible. Of interest, the programBcompresses files by a sliding-scale delta coding system developed<specifically for the sound files used in \SoftSpeak\@SFTS\.D\SQC.EXE and SFP.EXE - The new compression and Playback Utilities\\CSQC.EXE is the new speech compressor, capable of reducing files to@less than 25% of their original size. The amount of compressionDaffects the quality as methods such as silence encoding are used toCsave space during quiet periods. It is not recommended to use thisEcompression system on files containing other than pure voice, unless@the lowest level of compression is used (though please try, youwon't do any harm!)..?SQC.EXE is easy to use, given that you have a .SOF file calledTEST.SOF, simply type:        \sqc FRED\\9There are 9 levels of compression 1-9, the default is 4.        \sqc FRED 5\\.ALevel 1 is very slow to compress, produces excellent quality butCnot exactly startling compression (though still worthwhile). LevelG9 produces excellent compression and completes usually within seconds.BThe quality takes a dive at this level, which should be used onlyDwhen space is at an absolute premium. Original recordings should beEvoice only and be quite crisp and clean. For dictating purposes thisFlevel of compression is ideal! The file produced has the same name as&the original but with the suffix .SOX.I\SFP.EXE\\ is the player, replacing \S.EXE\\ as a general purpose playerDor SOF and SOX format files. Operation is identical to S.EXE exceptEthat the player will look for a .SOX file first if no file suffix isgiven.        \sfp FRED\\        \sfp /s FRED\\        \sfp /1 FRED\\        etc.GSFP.EXE uses slightly more memory than S.EXE, as it has to de-compressHdata on-the-fly. Extremely large files may cause a disk access to occurCduring speech playback. This will cause only a slight pause in theFspeech from hard disk and there may be a slight click on SoundBlasterHboards as the speech stops and starts. This only occurs with VERY largeGoriginal files. The advantage of this approach is that you can connectGtogether severla .SOF files, way beyond the limits of memory, compressDthem and playback as a whole!!! It is up to you to connect the .SOFCfiles together. In this way you could fill a 1.44Meg floppy to theBlimit with a massive compressed file, but beware of access delays?from floppy as the player could ask for up to 500K at a time!!\SX.EXE - The Speaking Clock\\CA simple (and not particularly brilliant) demonstration program isAprovided called SX.EXE which will tell the time, from the systemDclock.  It currently sounds a little dis-jointed (however it is WAYAbetter than some other attempts we've heard).  This gives you anDopportunity to test your skills.  The file TIMEBUF.SIF is simply anEindexed file and you can replace it or modify it as you require. The?sequence of words in the file is (and must remain) as follows:F1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30, 40, 50, "AND",&"SECONDS", "THE TIME IS", "PRECISELY".CThe program simply reads the system time and picks the appropriateCwords, taking into account zero seconds, minutes, etc. There is no8reason why a completely new file cannot be substituted.$\SP_ROM.EXE - The EPROM Convertor\\>SoftSpeak files, both .SOF and .SIF are converted into a formFsuitable for use with our \stand-alone boards\@SOB\ using the utility=SP_ROM.EXE - large files are automatically split up into the;relevant-sized chunks depending on the \EPROM\@EPRS\ used.>You use the package as follows, given that you have a .SOF ora .SIF file ready..               \SP_ROM filename size option\\3Type SP_ROM on its own for a full list of options.\Applications\@APPLS\See over for typical layout....-  ┌───────┐                   ┌────────────┐=  │\Speaker\@SPKQ\├───────┐     ┌─────┤\Power Supply\@POWS\│-  └───────┘       │     │     └────────────┘              ┌───┴─────┴──┐              │QSB01 Board │              └─────┬──────┘                    │?                    └─────── \Trigger or serial input\@TRISER\+Speaker 3-15 ohms. Any speaker from 2" dia-upwards will suffice, the larger the better.(Simple 9-15 volt PSU, smoothed. Standby"current of a  few milliamps only./The board may be operated in stand-alone mode,1ie it will playback a given message on power-up,2or it may be triggered by a level change. Finally2it may be set to operate with serial signals from0any PC or terminal. A simple RS232 input at 3005baud will trigger a specific message from the board.)Applications to date for our stand-alone*boards include door entry systems, ticket-machines, emergency warning systems, burglar.alarms, toys... you name it. Contact Quantech)for pricing information - they ARE quite,inexpensive and all you need is a PC and anEPROM programmer.-Our stand-alone boards offer you the ability*to take SoftSpeak speech files, converted*with SP_ROM.EXE and blown into EPROMS, to*make possible the creation of stand-alone(applications. The cards can handle both(simple datafiles and indexed datafiles.EPROMS suitable for use withthe stand-alone board include:27256 (32k)  (A)27512 (64K)  (B)27024 (128K) (C) \SLX.EXE - The Library Player\\DNormally, you would not consider playing back disk library words orGphrases in real time, this is because of the access delays involved inGgetting the information from disk, etc.  Because the Btree system usedLin \SoftSpeak\@SFTS\ is FAST, in certain circumstances you may find this anOexcellent tool.  In particular, anyone with a disk \cache\@CACHE\ program willDfind the access delays almost un-noticeable.  This program then, inGthe right circumstances, allows access to the largest number or words,virtually unlimited, in fact..FIn the simplest case, you would key SLX followed by a carriage returnCand the program would prompt you for input.  Note that there is noAvisual interaction, this program is intended to be used in batchGsituations for example in training systems.  You may key words one perGline, in which case they will be echoed immediately, or you may key inGup to a full line of words (no more than 120 characters please). Words3unavailable in the library will simply be ignored..=The real power in this program is the ability to accept textEredirected from an ASCII file (text file).  Assuming you have made aFsimple text file called FRED, you can feed it to SLX by the followingmethod:         \SLX  < FRED\\EThe contents of the file will be played without further interaction.AThe optional keyword MISSING if entered will print to screen all'missing words as they are encountered..CIn many circumstances this facility will prove invaluable.  Error-<reporting is a fine example.  Your program can generate the)information, then SLX can speak it out!!FConsider data-logging and other related possibilities. Word Endings -Prefixes and Suffixes.EYou will find that a lot or words have common suffixes and prefixes.EAn obvious suffix is 'ness' as in 'likeness', 'smoothness', etc.  IfGyou wish to construct a composite word using a prefix, the word shouldGbe terminated with the underscore character '_'.  You will see, in theFpre-defined libraries words such as 'pre_ ' and 'post_'.  You can addGthese words to any other without separating them by a space character,eg. 'pre_face', 'post_fix'.CIn the same way as for prefixes, you can add suffixes to any word.FThese have a hyphen as a first character, eg. -ness, as in like-ness.<The use of the hyphen rather than the underscore is used to?distinguish between a prefix and a suffix.  This allows you to@construct many more words than you actually have in your speechClibrary without using any more memory or disk space.  How well theGwords and their suffixes (or prefixes) fit together depends largely on?how careful you are with editing.  In most cases i t should be-possible to make a completely natural sound.\Distribution\\EPlease note that you are not permitted to give away copies of any ofGthe component sections of the package (except as detailed below).  YouDhave purchased a licence simply to use these for your own purposes,Inot for any commercial or second-party activities. The \SoftSpeak\@SFTS\Cpackage is neither"shareware" nor "freeware" but a fully supportedEcommercial program suite and as such is subject to the relevant lawsDgoverning the sale and use of commercial software. However, you mayBdistribute free ly any composite ".EXE" speech files that you may%create (NOT the original libraries)..EYou may also provide users with the DEVICE DRIVER for NON-commercialFpurposes, provided you fully acknowledge Quantech Ltd and include our>name, number, product name, telephone and FAX numbers in yourFdocumentation very clearly.  This means that you may give the abilityDto play a fixed pre-compiled message or messages that you have madeEfor them, but you may not give them the original library material orEany program in the suite. (you may of course distribute LZEXE.EXE as*this is supplied totally free of charge)..DCommercial users - Important Information:- We have been pestered toFdeath about offering the device driver commercially, so we've come upCwith this... If you distribute the device driver for free, it willChave our name in it and we can offer not a scrap of advices or anyFguarantee that we will not change the system. We will eventually findFyou and hound you to death legally. As an alternative, for every copy@of your program that you sell, and that incorporates the deviceGdriver, send us five pounds sterling (excl. tax ie VAT) within 60 daysFof the sale of the program. This will guaranttee our goodwill, health@and happiness, and we'll offer any help or advice you may need.\Technical Information\\EBy default, output goes directly to the speaker in a convoluted way,Dhowever, digital output goes directly to the parallel port (via theGINSTALL option in SE350X, menu options in SL or command line option in"the other packages) is available..EIf you have purchased our booster box, you can simply plug this intoAyour printer output, and give the packages the option /1 and theGoutput will now come straight from the booster instead of the internalAspeaker, with the added bonus of more volume and  better qualityBoutput. If you are really keen (but tight) and you want amplifiedBoutput without purchasing a booster card, use a small 600-600 ohmFtransformer (also happens to be handy for connection to the telephone%line, but don't say we told you so)..GIf you wish to convert input files from another machine such as a MAC,Das long as the information is in 8-bit form we can probably offer aconversion program.\Stand-Alone Hardware\\FOk, so you've created a file that sounds wonderful, if only you couldDuse it in a burglar alarm, well, you can. We can provide you with aEsmall card which contains a pair of EPROM sockets, suitable hardwareIand a connector. You put a processed version (using SP_ROM) of your .SOFEfile into the EPROM and plug the EPROM into the board, then plug theEboard into a supply - 9-15 volts, and plug a speaker into the board.AThat's it, loud speech (with buzzers and beeps if you like) in a>stand-alone environment. Think of the applications - museums,Gdemonstrations, games, instruction..... If this appeals, get in touch.FThe stand-alone board (which is the size of your average packet of 105cigarettes) is available, supported and inexpensive..CNot only can you put a single message (.SOF) file into the EPROMS,@but we also do a version whereby can use a converted .SIF file,Eallowing you to have up to 64 messages onboard, selectable by simple?300 baud serial. As of June '92, boards going out will operateEdirectly from the serial RS232 of your PC (or any computer, terminalor control system).\Output Redirection\\MAll \Softspeak\@SFTS\ packages now have the ability to send output to places?other than the internal speaker. This applies to the followingutilities:?S.EXE, SE350X.EXE, SL.EXE, SX.EXE, SLX.EXE S246.EXE and SI.EXECSE350X and SL have their own configuration and neither require norrespond to the redirection..EBy default, output will go to the internal speaker. If you want moreEvolume, fit a better speaker, if that isn't loud enough for you, theFoutput can be fed to the parallel ports LP1-3 (printer outputs) or to?a SoundBlaster or compatible such as the \ThunderBoard\@THND\.FThe printer-port output is a digital signal which can be fed to a D/A9convertor - conveniently, our (optional) output BOOSTER..BUsing the program S.EXE and filename MYDEMO as examples, standard
options are:/        \S MYDEMO\\        - Output to speaker,        \S /1 MYDEMO\\     - Output to LPT1,        \S /2 MYDEMO\\     - Output to LPT2,        \S /3 MYDEMO\\     - Output to LPT34        \S /S MYDEMO\\     - Output to SoundBlaster4        \S /s MYDEMO\\     - Output to SoundBlasterOReferences to the SoundBlaster apply equally to \ThunderBoard\@THND\ and otherSoundBlaster-compatibles. ie:- which keys are attached towhich buttons!Key \Bindings\@BIND\GUntil this point we've ignored those who don't have a mouse. Well, sadDto say, more and more applications require a mouse, and with pricesDdropping there is less excuse than ever not to buy one. The packageESE350X is hideous to use without a rodent, but, for those of you who@don't agree, here is a command list for the package and its keybindings. Good luck!!.$     De-Click                    F4$     Record                      F2(     Information Page            CTRL-I#     Select Input                !#     Other Options               ?(     Increase Echo               ALT-F5(     Decrease Echo               ALT-F6)     Increase Reverb             CTRL-F1)     Decrease Reverb             CTRL-F2(     Increase Rev.Echo           ALT-F7(     Decrease Rev.Echo           ALT-F8#     Review                      R#     Cue                         C.#     Cut                         U)     Paste in New File           CTRL-F7#     Paste                       A#     Reverse in Place            V#     Reload File                 L(     Reverse Echo                ALT-F4(     Echo                        ALT-F1(     Reverberation               ALT-F3$     Reset Index                 F7$     Add Index                   F5$     Verify Index                F6#     Save ROMable file           F$     Save Indexed File           F8(     Toggle Precision            CTRL-P.#     Far Set Right Cursor        +#     Far Set  Left Cursor        -#     Blank Search                B%     Delete                      DEL%     Insert                      INS#     Insert Blank                I$     Save Block                  F3#     Save File                   S#     Quit                        Q'     Stop Speech                 SPACE$     Move Left crsr Left         BS)     Move Left crsr Rt           ALT-FWD)     Move Right crsr Left        CTRL-BS*     Move Right crsr Right       CTRL-FWD.%     Clear                       F10$     DC Shift Up                 UP$     DC Shift Down               DN#     Expand                      X#     Speak                       P)     Loop Speak                  CTRL-F9&     Zoom In                     PGDN&     Zoom Out                    PGUP+     Increase Jump               CTRL-PGUP+     Decrease Jump               CTRL-PGDN&     Reset Left crsr             HOME%     Reset Right crsr            END(     Chop (fast)                 CTRL-T.(     Chop (slow)                 CTRL-D(     Increase Freq.              CTRL-W(     Decrease Freq.              CTRL-X#     Low Pass Filter             W#     Envelope                    {)     Increase Pitch              CTRL-F3)     Decrease Pitch              CTRL-F4)     Triangle                    CTRL-F5)     Square                      CTRL-F6 EMS - Expand memory, as against!extended memory. Expanded memory is available in PAGES on any PC equipped with either a software!or hardware-based EMS system andsuitable memory.\EMS Use\\Q\EMS\@DSKEMS\ is used where possible in the SE350X.EXE editor to store temporaryFinformation. You will notice if you have EMS that the menus will workBconsiderably better than if you have no EMS. Because of the largeOamounts of disk useage, either EMS or a disk \cache\@CACHE\ is recommended foroptimal operation.CThe device driver and interrupt driver can both make use of EMS toGstore and replay libraries, making it practical to have huge libraries2in place while retaining full use of main memory.Unless he/she had a severecold in the nose! Commodore Amiga - games machine well suited to sound productionas it has built-in hardware to do the job independantly of themain processor.\Background\\DComputer speech falls into two broad categories, those of SYNTHETICFspeech and STORED SPEECH. The former relies on the ability of a pieceDof hardware or software to produce sounds akin to those produced byCthe human vocal chords. Stringing such sounds together can produceBsomething that sounds remotely like speech and has the tremendousFbenefit that little storage is required. Assuming hardware is presentCto produce the basic sounds or PHONEMES, all that is required is aBcharacter or two to trigger each phoneme in series to produce thedesired sound..EOf the many problems in achieving a decent likeness to a human voiceBusing phoneme-based hardware or software, one of the thorniest isAthat of RULE generation, ie there are rules as to how sounds fitDtogether in human speech. Simple systems may use as few as 30 or 40@rules, complex systems may use hundreds (there are also lots ofDexceptions as no human language is perfect). At the end of the day,Cthere are one or two systems available that can produce acceptableNspeech - but no-one would ever mistake such a system for a \real\@HBNG\ human@being! So, for the short term at least, and with the increasingBavailability of cheap memory, the stored-speech concept offers an<alternative approach, one a lot less fraught with problems..LIn stored-speech systems (such as \SoftSpeak\@SFTS\) words or even completeDphrases are stored inside a computer and played back when required.EWhen mixing words or phrases electronically, the longer each phrase,Gthe less artificial the sound becomes. A prime example of real speech,Gstored yet manipulated to good effect is the kind of stuff you will noGhear from the automated telephone operators. Quite often the result isEtotally acceptable if less personal than a "real" operator. At least-stored-speech systems don't have "off" days!.JStored-speech has been available for the \Amiga\@COMAG\ and other "games"Cmachines for some time, due to their dedicated sound hardware (the?Amiga is particularly good). The IBM machines have lacked thisFcapability as the output to the internal speaker is simply a "bit" ieFa single TTL-level digital output, good for producing harsh tones andbeeps but not much else..DIn the early days, many technically-minded people experimented withEstored speech, twiddling the output bit up and down at high speed toBachieve something that passes for speech. The idea is to vary theF"mark-space ratio" of the resulting square-wave output to simulate anFanalog sound. As you may have learned, these efforts in the past haveDfailed. For one thing, the output speed depends on the speed of theFtarget PC and as you know the market now has everything from a humble88Mhz 8088 Amstrad to powerful 80486 50Mhz workstations..=At this time, all manner of "expert" are spouting that sound?production on the PC was never REALLY a problem - but the factNremains, \SoftSpeak\@SFTS\ has taken the market by storm and produces by someGway the FINEST stored speech for the IBM PC and clones. No adjustmentsCare required for any machine and the package comes complete with a>range of tools never assembled together before. No doubt whenBmulti-media comes of age (Windows 4??) we will look back on theseFattempts with a smile - but then, multi-media will n ever be as cheap@as this!!! Enjoy using the package. We are always available fortechnical support and a chat.\BASIC Game\\FThe following example program was provided by a user as an example ofAprogramming in BASIC. The example of course needs a .SIF file toDoperate and is only intended as an example of BASIC programming forspeech.        CLEAR RESET        WINDOW OPEN        WINDOW FULL        WINDOW TITLE "THROWDI"        LABEL beginn        CLOSE #3         OPEN #3 OUTPUT "SPEECH"..        BOX 5;5,8400,6500 COLOR 2 FILL WITH 8,        SET FONT 1 POINTS 20 COLOR 0 MODE 23        LOCATE 5;10:PRINT "Throw a 6 if you can !"        GOSUB throw)        LOCATE 5;13:PRINT "It was a ";di%        ON di GOTO 10,20,30,40,50,60B        10 PRINT #3 " ONLY  spacer1 1  spacer1 TRY AGAIN":GOTO 70B        20 PRINT #3 " ONLY  spacer1 2  spacer1 TRY AGAIN":GOTO 70B        30 PRINT #3 " ONLY  spacer1 3  spacer1 TRY AGAIN":GOTO 70B        40 PRINT #3 " ONLY  spacer1 4  spacer1 TRY AGAIN":GOTO 70B        50 PRINT #3 " ONLY  spacer1 5  spacer1 TRY AGAIN":GOTO 70+        60 PRINT #3 "WELL  THROWN":GOTO 70         70 FOR i=1 TO 5000:NEXT.        GOTO beginn        LABEL throw        di=INT(RND(6))        RETURNGEnd of dice-throw program! The .SIF file and this source are available7on our BBS in the speech area under the title DICE.ZIP\Headphones\\GIt has been suggested that a useful addition may be the ability to use;headphones for previewing sounds. Well, if you are feelingFadventurous, the speaker output from the average PC is quite suitableDfor headphone use. Interested readers with a mechanical inclinationBmay care to buy a 3.5mm "panel-mounted" jack socket. These have 3Fcontacts, with two of the contacts normally closed (touching). If youFwere to connect these to the existing speaker on the PC such that theFsingle contact went t o one of the speaker leads, and the closed pairEacted as a "break" in the second lead... the general idea being thatAwhen the headset is connected the speaker connection is broken!..DAll you have to do is make sure you get the two closed contacts theGright way around otherwise the headphones will not operate. Any of theBmodern cheap headphones will work, no point in going for anythingEspecial. If the output is too loud, try a 100 ohm resistor in seriesGwith one of the headphone leads. If too "tinny" try a 100 ohm resistorDin series, then a 1uf capacitor across the phones themselves (checkFpolarisation with a meter - the levels are DC). Of course if you haveEour combined mic/headset you can use the black lead! If you have our7booster units you can plug the black lead straight in!.EAnyone wanting more info can leave a note on the BBS - we can always*send a sketch as a PCX file or something.\Known Problems\\DOver time we've solved most of the problems that can occur with theBpackage. You'll find that the speech will not work in Windows 3.xFenhanced, ie a '386 or '486 machine running enhanced mode, unless you9have installed the \VSPKD.386\@VSP\ driver into Windows.Click on FORWARD for more!.GYou may think that a 386 machine is necessarily faster than an 8088 orGa '286. However, moving up to a 386SX at 16Mhz can sometimes result inBproblems with speed. A customer recently had problems with speechFrunning slowly on his machine when outputting to a SoundBlaster card.DOn request he renamed his CONFIG.SYS and AUTOEXEC.BAT files and lo,Dthe speech operated perfectly. \Click here for the Solution\@EMSOL\It turns out that the lineDEVICE=C:\DOS\EMM386.EXE RAM"was causing the problem! Softwarespeech takes up quite a bit of!processor time on slow machines.Rarely, some drivers will addoverhead that stops the speech!from completing in the available#time. It then drops to half speed.#This also happens in ENHANCED mode%on a 386 if you forget the VSPKD.386driver!Don't computer people comeup with some strange terms!Alan Michael Sugar Trading.Just thought you'd like toknow.\Copycats\\DThere are one or two shareware attempts at emulating the innovationJpresent in \SoftSpeak\@SFTS\. This is natural. SoftSpeak was the first PCFspeech system (and is the ONLY system) to offer quality hardware-freeDspeech playback (most of the BBS samples are ours!). Competition isDgood and keeps us on our toes, as you may have noticed. We will notEattempt to compete with "freeware" merchants who offer packages freeBof charge... but with no support. We must therefore bring to yourCattention that we are in no way connected with any range of speechNproducts other than SoftSpeak and \QMRecord\@QMRC\, our hardware and softwareFare NOT compatible with any other packages and our only guarantee forFfuture compatibility is that registered users will always obtain freeDupdates and support if for any reason we decide to change formats!!.CWe run a BBS with access to laser disks. As such we have access toFmany hundreds of megabytes of free and shareware software. The author>has personally spend thousands of hours studying the range ofFavailable packages.... nothing changes.... the expression "nothing inElife is free" could not apply more to computer software if it tried!FWith some MARKED exceptions, it can be said that "freeware" generallyFdoes not work, and "shareware" sometimes works but beware! CommercialCSoftware vendors get away with a lot compared to other industries.GSurely we should all be striving to IMPROVE minimum standards to thoseEof other industries?? Comments invited via our BBS or directly to meOat my \FIDO\@FIDO\ address of 2:253/406. Overseas customers please check timesJ- 6pm-8am \our time\@UKTM\, or if you are lucky enough to have a modem atChome, 24 hours weekends. Looking forward to hearing your views....United KingdomNormally not used, we'veselected this range ofinterrupts.A Question-Mark productusing SoftSpeak PC speech.\Voice Mail\\NVoice-Mail is easy with \SoftSpeak\@SFTS\. Because the stand-alone .EXE filesEwill operate on any system you can be sure that you can ship them toCsomeone and they'll be able to play back the files with no special'requirements other than a standard PC.FFor best results make sure you have Phil Katz's PKLITE in your speech>directory and use the QR /c option to compress the .EXE file. LIM - Lotus/Intel specification for memory management. Referredgenerally as EMS.Port operations requirethe presence of a boosterunit fastened to the parallelprinter port. We can supplythese at reasonable rates ifyou need to boost the outputfrom SoftSpeak. A Thunderboardis a slightly better solutionbut of course more expensive.*\Using SoftSpeak with Your Own Programs\\\Introduction\\MTo successfully incorporate \SoftSpeak\@SFTS\ speech or sounds into your ownGsoftware, a number of things must be fully understood. All programmingFexamples shown will be in C. Apologies to none-C programmers, howeverAsufficient information will be given to allow you write your ownBequivalents. If you use the SoftSpeak support bulletin board, TheDOlive Grove, you will find a lot of like minded people doing things@with SoftSpeak, who will probably help you out with programmingFexamples. We have a number of PASCAL and DBase programmers out there.DYou may also leave requests for help in the SoftSpeak conference on2CIX - no guarantees, but we will try to help out!.\Device Drivers\\DAs is mentioned elsewhere, there are two device drivers supplied onCthe distribution disks, one is a kosher DOS device driver which isBaccessed by standard techniques in much the same way as you wouldGaccess a DOS data file, the other attaches itself to a system softwareDinterrupt and is then accessed by generating the relevant interruptEand passing parameters in CPU registers - this technique the same as<the one used by DOS in its' int 21H functions, for example.AThe reader who is unfamiliar with these methods of accessing DOSFfunctions and device drivers is directed to one of the many excellentbooks on DOS programming..\Requirements\\\Memory Limits\\I\SoftSpeak\@SFTS\ generated speech can only be played back directly fromDmemory. Thus, it is necessary for the programmer to locate and loadAinto memory whatever he wishes to play back. Both of the driversGsupplied can make use of either the system main memory which exists upPto the one megabyte limit, or EMS which conforms to \LIM\@LIMDES\ specificationA3.3 or greater. The memory below the 1 MB limit obviously placesEconstraints on the amount of playback time allowed, since the speechBsystem requir es approximately 10,000 bytes per second, then 1 MBFwould give 100 seconds of playback time. In practice, even this isn'tFpossible as DOS requires memory, the display adapter takes up addressAspace, along with other hardware and software including your own	program..\Speech Buffers\\AYou will probably find that segments of speech no longer than 30Bseconds will be achievable , without recourse to EMS. In reality,Ghowever, this rarely creates a problem because most programs use shortFsegments of sound which are no longer than a few seconds - say a helpGmessage or sound effect. This permits the use of a small memory bufferGinto which sound samples can be overlayed when required. A buffer size@of 64 KB is generally sufficient. However, if instant access isBrequired to larger numbers of samples, then EMS must seriously beconsidered..(\Types Of Speech File - the .SOF file\\JIf you have been experimenting with \SoftSpeak\@SFTS\ at all, you will beGfamiliar with at least one type of file generated by the speech editorD- the .SOF file. Speech Output Files have the suffix .SOF, for selfFevident reasons. These files have a simple binary image of the speechBwhich they represent and can thus only be played back as one long segment of uninterrupted sound..(\Types Of Speech File - the .SIF file\\CThere also exists a second type known as a .SIF, or Speech IndexedCFile. This type contains an index or list of different segments of5sound within itself which may be accessed and playedAback individually. Each sound has a name which consists of sevenFcharacters, not including commas, full stops, hyphens, underscores or>spaces - these characters are reserved for use as separators..AYou may not incorporate any of these characters into your speechEidentifiers, however, you may define them as having a sound of theirEown. This is useful for introducing pauses into speech, for example.GYou could define the comma as a half second and the full stop as a oneCsecond pause. This would then introduce an element of flow controlinto your speech output.."\Loading The Sounds Into Memory\\\Supplied Software Method\\FYou are supplied with a batch file called LIBINST.BAT. This initiatesAa sequence to load a speech library into main memory or EMS. TheFresultant speech becomes memory resident, if loaded into main memory.FYou will notice that the amount of free memory is reduced by the sizeBof the speech library. The library will remain resident in memoryFuntil specifically removed. This may not be particularly desirable inDsome cases. An EMS based library is often preferable, assuming thatEsufficient EMS is a vailable. The LIBINST program will always try to>access EMS unless specifically forbidden to by putting the /N0parameter on the command line when invoking it.. Thus:-     LIBINST MYLIB.SIF /N?will overide the EMS checks and force a load into main memory.FLIBINST will also determine which of the two device drivers have beenBloaded and will fulfill the next requirement. That is to pass theFspeech librarys' address in memory, or its' EMS handle, to the loadeddevice driver.EOnce the library is in place, the speech can be played back by using#one of the methods outlined below..-\Removing The Speech Library Using LIBINST\\FTo remove a speech library from main memory or free up an EMS handle,Finvoke LIBINST without any parameters. If you have used a main memoryCresident library, you must take care. If you have loaded other TSR?programs, such as a mouse driver or pop-up program similiar toGSIDEKICK, you may find that your memory is fragmented. This memory mayAbe then unavailable until you reboot. This is not a bug with theM\SoftSpeak\@SFTS\ driver, but is a feature (fault!) of DOS memory allocationEwhich will occur with any TSR programs which are not unloaded in the)reverse order to which they were loaded..&\Using The DOS Speech Device Driver\\(\Accessing Speech From The DOS Prompt\\GYou may get started quickly with your own speech output by loading theEdevice driver SPEECHDR.BIN with your CONFIG.SYS file. With a libraryFinstalled into memory, you may use the driver to read the text from aDstandard DOS text file. Do this by incorporating the following lineinto CONFIG.SYS:-&        DEVICE=SPEECHDR.BIN [/option].JIf you have a PC of \AMSTRAD\@AMSDES\ manufacture and you find that afterDgenerating sound, your system real time clock appears to be fast or&slow, then use the alternative line:-(        DEVICE=SPEECHDR.BIN [/option] A@This should correct any time problems, as the 'A' switch on theGcommand line informs the driver to perform a different time correctionFfactor when the speech is finished. The reason that the time needs toNbe corrected is due to the method employed by \SoftSpeak\@SFTS\ in generatingCthe sounds. Note that most other processor-intensive sound systems%make no attempt to correct the time!.BThe next stage is to construct a .SIF file using the sound editorD'SE350X' or perhaps the speech librarian, 'SL'. This should contain2the entire vocabulary required by your text file.@You are now ready to install a library of sounds and words intoCmemory. Use LIBINST to load the library into memory. A simple copyBcommand will now make the driver speak any word in your text file?which it recognises. From the dos prompt, type the following:-        copy MYTEXT SPEECH.DThis will send the text file MYTEXT to the SPEECH device driver andAwill start it speaking. Any word which it doesn't recognise willsimply be ignored.BDefault output of the driver when loaded is the internal speaker..
Options are:$        \/1\\      - LPT1\*\@PRTOP\$        \/2\\      - LPT2\*\@PRTOP\$        \/3\\      - LPT3\*\@PRTOP\7        \/S\\      - SoundBlaster/\ThunderBoard\@THND\/        \/s\\      - SoundBlaster/Thunderboard6\Accessing The SPEECH Driver From Your Own Programs\\GNow that the basic sequence of events has been understood, you need toFknow the specifics to allow you to inform the SPEECH driver as to the4location of a speech buffer and what to do with it..\Initial Requirements\\EIn your own programs, treat the SPEECH driver as a buffered file or,F more exactly, stream. You MUST open the driver in raw (binary) mode,B so that your compiler/interpreter will not perform any characterO translation. Many \cooked\@COOKING\ (ASCII) mode file operations will replaceE essential characters with strings of characters. Thus, for example,E character 13 (carriage return) may well be replaced with a 13 and aA 10, ie a carriage return then line feed. This could create someF wonderfully confusing problems if you were setting the speech buffer address, for example..  eg. SPEECH stream opening.  {  int speech_driver;2  speech_driver=open("SPEECH",O_WRONLY+O_BINARY);'  if (speech_driver == -1) goto error;  else  goto start_talking;   }.GYou will find it more successful to open the driver in write mode onlyDwhen sending commands. If you do need to read any values, close theEstream - which will flush the buffer - and then re-open it in binaryread mode.FAnything which you write to the SPEECH stream will not be immediately?transferred to the driver, but will be placed into a buffer ofEtypically two kilobytes in length. Once you have written commands orFdata to the driver, you must flush the buffer. The simplest way is toFsend an End-Of-File,  character number 26 (CONTROL-Z). This will thenEflush the buffer to the driver and allow the requested operations toEbe performed. Most programming languages have a flush command, whichCmay be more convenient, consult your language guide for specifics..\Device Driver Commands\\BAt the time of writing, there are nine different driver commands,Gthese are detailed below as the need arises. All commands consist of a5single byte followed by arguments of varying length..=\Problems Caused By Out Of Sequence Commands To The Driver\\BThe driver keeps an internal check of how many bytes each command?requires as an argument. If you break of in mid command during@experimentation, or whatever, the driver may interpret the nextFcommand that you send as data. To circumvent this, there is a commandGnumber <03>, which is used to reset an internal command counter. This,Ehowever, in an out of sequence condition, may also be interpreted asGdata. Since the maximum number of argument bytes in a command is four,Eyou should send the reset command <03> at least five times in a row.@Do this when your program initialises and you will not have any
problems.."\Loading The Sounds Into Memory\\%\Setting The Speech Buffer Address\\?Once the driver has been loaded and successfully opened, it isGnecessary to allocate a speech buffer - ie. a place in memory to storeEyour speech samples. This may take the form of a large data array orFmay be allocated using the run-time memory allocation command in your9programming language - eg. malloc() or farmalloc() in C.Click to \CONTINUE\CONTNU\eg. Speech Buffer Allocation.        Using malloc()
        {'         unsigned char *speech_buffer;*         unsigned int speech_file_length;         int speech_file;-         /* open the SPEECH driver stream */+         speech_file = open("MYFILE.SOF");,         if (speech_file == -1) goto error;.7         /* determine the length of the speech file */7         speech_file_length = filelength(speech_file);,         /* allocate some room in memory */5         speech_buffer = malloc(speech_file_length);'         /* load in the speech file */?         read(speech_file, speech_buffer, speech_file_length);
        }.        Using an array
        {$        speech_buffer_array[30000];)        unsigned int speech_file_length;        int speech_file;*        speech_file = open("MYFILE.SOF");+        if (speech_file == -1) goto error;6        speech_file_length = filelength(speech_file);.H        /* can't use speech files greater than 30000 bytes long in this           example */4        if (speech_file_length > 30000) goto error;D        read(speech_file, speech_buffer_array, speech_file_length);
        }ENote that the first example will only permit the use of speech filessmaller than 64K..(\Using DOS memory allocation - BEWARE\\AIf you attempt to write a program which will use the DOS int 21HEmemory allocation, please remember that an EXE file normally alreadyGowns all of available memory, unless it has been specifically told notEto by your linker - which is rarely the case. So, remeber to free upGall memory not required by your program and its' variables, before youCtry to allocate a speech buffer in far memory, otherwise, you willBfind that your memory allocation attempt will fail due to a falseshortage of space..A\Sending The Address Of The Speech Buffer To The Driver - .SIF\\CThe driver can entertain two different types of speech buffer at aGtime. One must be an indexed version in .SIF format and the other mustBbe in the .SOF format. This allows the programmer to keep a largeGindexed library in EMS and then load in, for example, sound effects on2an 'as required' basis, into a fixed buffer area.DCommand number one is used to set the address of the speech libraryGbuffer. A single byte <01> is sent to the SPEECH stream, followed by aDfour byte address, consisting of the offset and then the segment ofCthe address in least significant then most significant byte order..>        eg. To set the library address to 20F3:0100, send the5        following sequence. <01> <00> <01> <F3> <20>GThis same command is used to send the handle of a speech library whichCresides in EMS. In this case, the segment of the address is always<zero and the handle is sent in place of the offset address.A        eg. To send EMS handle number 03 to the driver, send the5        following sequence. <01> <03> <00> <00> <00>.A\Sending The Address Of The Speech Buffer To The Driver - .SOF\\EThe format of this command is identical to command <01>, however theCrelevant command in this case is <04>. The length of the buffer isFthen set using command number <05>, in the same format as for commandGnumber <02> - see below. In the case of a .SOF format buffer, you MUSTEset the length of the buffer, otherwise the driver will not know howmuch speech to playback..*\Changing The Speech Output Destination\\CThis command <7> will allow you to vector the output of the speechEprogram to another port address. Normally, the output address is setFto the internal speaker, however, you may want to output to on of theHparallel printer ports, or to the SoundBlaster or \ThunderBoard\@THND\..?To redirect to LPT1, set the argument to '1', '2' is LPT2 etc.;To change the destination, send command 7, followed by theEdestination, '0' for the internal speaker, '1' - '3' for the printer(ports, 'S' or 's' for the Soundblaster..,eg. To set the ouput port to LPT1 - ie '1':    Send <07> <31>."\EMS/main memory library switch\\DOnce you have set the buffer address or EMS handle, you must informDthe driver as to whether your speech resides in main memory or EMS.@Command number 8 indicates EMS, command number 9 indicates mainmemory.        eg. EMS, send <08>#        eg. Main memory, send <09>.FWhen the driver is initialised at a warm or cold boot, the default isBfor the library to be in main memory. However, do not permit yourCprograms to count on this, otherwise you may find that a prior runAprogram may well have changed the setting and have not reset it..8\Using Both Speech formats, one in EMS, The Other Not\\FIf you have set two speech buffers, one for a .SIF format and one forFa .SOF format and either one is in EMS and the other in main memory -Gnote this is not mandatory, both can reside in main memory, or both inAEMS - when you want to generate speech from either one, you mustCinform the driver as to the location of the relevant buffer, usingCcommand <08> for EMS and command <09> for main memory, as detailedabove..,\Setting The Length Of The Speech Library\\EOnce you have initialised the buffer adddress, you must then tell th>driver how long the buffer is, in bytes. This is not strictlyGnecessary in a stand alone program with a non-resident speech library,>but if it is not set in a resident situation, then it becomesFdifficult to de-allocate it at a later time. The command in this caseGis <02>. It requires a long (32 bit) length as an argument. This must,'again, be sent lower order byte first.F        EG. To set the buffer length to 0023D417, send the sequence:-!        <02> <17> <D4> <23> <00>.\Making It Talk -.SOF\\DTo start the driver speaking from a .SOF format buffer, use command(<06>. eg. Send <06>, with no arguments..\Making It Talk -.SIF\\EThe SPEECH driver doesn't require an explicit command to speak usingBan indexed speech library. You simply send the character sequenceDwhich corresponds to the words in the library, separated by spaces,Acommas, hyphens or underscores. Note that you CANNOT use the TABDcharacter as a separator, since this will be interpreted as command
number <08>..Geg. If you have the words, "hello there, how are you" in your library,Fsimply send the words as they appear above to the driver, in the sameIway as you send commands. Note however, that DOS will most likely bufferGup the words, so you should send an end-of-file (EOF) character numberG<26> to terminate. DOS will then flush the buffer across to the SPEECHIdriver. Alternatively, use whatever buffer flush command is available inyour programming language.A        eg.     fputs(speech_driver,"Hello there, how are you");*                fputc(speech_driver, 26);A        or.     fputs(speech_driver,"Hello there, how are you");                flush();.%\Using The TSR driver SPEECHDR.COM\\CThere exists an alternative to the DOS system driver SPEECHDR.BIN,Cthis is the TSR driver SPEECHDR.COM. This program may be installedFafter the system has booted and may also be easily removed at a latertime, unlike the other driver..\Software Interrupt Driven\\EThe TSR driver is not accessed in the same way as the system driver.FYou pass commands and parameters in CPU registers and call the driverCusing a software interrupt. The driver can attach itself to one of&interrupts \60H through 64H\@INTS60\.CThese interrupts are specified by DOS as free for user software toEprogram and hence won't cause any problems for DOS. However, anotherAprogram may already have taken over the interrupt, so the driverEchecks before making itself memory resident. You should really checkEthe interrupt location before calling the driver, you will find thatDan unprogrammed interrupt will have a segment and offset address ofzero..FIf there are no free interrupt vectors, you may read and store one ofDthe vectors and then set it to zero. Installing the TSR driver willFthen succeed. When your program is finished, it must then restore theAold vector or whatever software was attached to it will  then beunaccessible.FThe above features tend to make the TSR  driver more suitable for selEcontained programs, because you can install the driver directly from@your program using a DOS system call - or whatever command your?programming language uses to access DOS commands from inside a4program, eg. "DIR" to generate a directory listing..0        eg.     system("SPEECHDR [/option] 0");@Note the command line argument '0'. This tells the driver which5interrupt to attach itself to. 0 = 60H, 1= 61H, etc..\De-installing The Driver\\CWhen your program needs to terminate, you should re-invoke the the,driver with the command line parameter 'u'."        eg. system("SPEECHDR U");AThe driver will then attempt to remove itself from its' residentstatus in memory..*\Device Driver Loading/Unloading Errors\\EWhen an attempt is made to load or unload the TSR driver, the resultCis returned as a DOS errorlevel. The meaning of these is explainedbelow.FErrorlevel 0, means that the load or unload operation was successful.EErrorlevel 1, means that the command line parameter was unrecognised@or corresponded to an interrupt number out of the range 0 to 4.=Errorlevel 2, means that the interrupt requested was alreadyDprogrammed In the case of an attempt to remove the driver using theA'U' switch, errorlevel 2 means that the driver wasn't previouslyinstalled..DErrorlevel 3, will occur if you are attempting to unload the driverFusing the 'U' switch. This will occur if the driver detects a damagedDor missing link in the memory control block chain which defined theEdriver. This will generally only occur if some badly behaved program@has been mucking around in memory. TSR Device Driver Commands -Parameter Passing.FThe TSR driver is accessed by generating a software interrupt, eg int@60H. Before doing so, however, the programmer must first set upEvarious CPU registers. The required function number is passed in theGupper byte of the AX register, known as AH. There are twelve differentBfunctions as detailed below. Each individual function will not be>discussed at length, so please refer to the DOS system driver3description, as the basic functions as equivalent.DPlease note, that all 16 bit, single parameter values passed to theFdriver are in the DX register, all single parameter 32 bit values areApassed in the DS:DX register pair. Any additional parameters areGpassed in the ES:BX pair. All 16 bit return values from the driver are'in BX and 32 bit returns are in ES:BX..7\TSR Device Driver Commands - Functional Description\\, Function 0 - playback a .SOF format bufferC        AH = 0, DS:DX point to the buffer, buffer length in ES:BX.        No return value6 Function 1 - playback a string of .SIF format sounds<        AH = 1, DS:DX points to a zero terminated string of        word keys.;        Returns AL = 0, if successful, 1 if speech library        address is not set..> Function 2 - set EMS/main memory flag for speech data source@        AH = 2, AL = 0 - means main memory, AL = 1 - means EMS.6        BEWARE, if you have no EMS handler installed,;        your system may hang if you issue this command and&        request an EMS based library.:        Returns AL = 0, if successful, AL = 1 indicates a%        problem with the EMS driver.< Function 3 - set the .SIF format library bas address (main;        memory) AH = 3, DS:DX = address of speech library.        No return value.: Function 4 - set the handle for an EMS based .SIF format*        library AH = 4, EMS handle in DX.        No return value3 Function 5 - read main memory .SIF format library        address AH = 5;        Returns address of library in main memory in ES:BX9 Function 6 - read EMS .SIF format library handle AH = 6!        Returns EMS handle in BX.3 Function 7 - change the speech output destination<        AH = 7, speech port destination in DL - this allows@        redirection of sounds from the default internal speaker@        to one of the printer ports - for use with the externalC        speech output unit, SoundBlaster/\ThunderBoard\@THND\ etc.)        DL= '0', '1', '2', '3', 'S', 's'        No return value@ Function 8 - return the PSP address of the driver AH = 8, thisB        function is used mainly to facilitate removing the driver5        from memory when it has finished being used."        Returns PSP address in BX.: Function 9 - set the size of the speech library. AH = 9,?        library size is in DS:DX. This is used mainly to allow<        the removal of a resident speech library at a later        time.        No return value= Function 10 - read the size of the speech library. AH = 10.'        Returns library size in ES:BX.: Function 11 - indicates whether the speech library being3        used is in main memory or in EMS. AH = 11.=        Returns BX = 0, means main memory. BX = 1, means EMS+\Getting Help With SoftSpeak Programming\\BYour route to go through when requiring help with programming thedevice drivers is:-H        \1.\\      Try to define your problem properly and then re-read7        the device driver section of the manual again!M        \2.\\      Consult the online manual in the \SoftSpeak\@SFTS\ editorD        SE350X. This will normally be at least as up-to-date as the        printed version..H        \3.\\      Send a fax to us on 091 4990961 (UK), +44 91 4990920A        (international) and describe your problem, please try toD        enclose a printout of the code which you are having troubleE        with, together with a description of what it is that you areE        hoping to achieve. Please try to remember that we are mainlyO        \C/assembly\@EARTHS\ programmers and aren't really conversant with the5        like of multitasking, concurrent APL, etc!!!.L        \4.\\      Send a message to our \SoftSpeak\@SFTS\ support bulletinF        board, known as the Olive Grove - "a place to relax, converseE        and think" - address it to either of Peter Scargill or AidanI        Ruff. This operates on 091 2280427, between the hours of 6PM and        9AM, GMT.E        \5.\\      Send a message to AIDANR on CIX. UKNET address is#        AIDANR@CIX.COMPULINK.CO.UK.J        \6.\\      Send a message to Peter Scargill on Compuserve, numberD        100016,2301 or netmail his \FIDO\@FIDO\ number of 2:253/406*        \7.\\      Read the manual again!I        \8.\\      Ring the Quantech help line on +44 91 4990920 outsideF        the UK or 091 4990920 in the UK, between the hours of 2PM and        4PM, GMT.Salt-of-the-Earth!-\Hardware-Assisted Speech - The PW-X board\\M\SoftSpeak\@SFTS\ is specifically designed to provide hardware-free internalFspeech on the IBM PC. There may be however occasions when you requireEthe speech to be amplified externally. There are a number of optionsand these are explained below.	Options:! 1. Replace the internal speaker. 2. Re-direct to parallel port dongle+booster. 3. Re-direct to Thunderboard or SoundBlaster$ 4. Output the file to a PW-X board.DThe first three options are dealt with adequately in the manual. In@essence the sound is manufactured by the same process involvingEinterrupts. This can cause problems when operating in an environmentGlike Windows 3 for example when a "virtualised DOS" (or no DOS at all)@is available. Accessing the real-time-clock is monitored by theAoperating system, even if you go directly to the ports. For thisCreason, we provide you with a complete set of tools to do the job..DYou may however have your own application and want to have absolute@control and understanding of the sound. For this reason we haveCdeveloped a small booster system which can take raw .SOF files andEoutput them to a speaker. At the time of writing the board is new soring for details and pricing.EIn directing speech to the internal speaker or LPT1, it is essential3to tie up the machine, as sound production is veryGprocessor-intensive. In fact we end up interrupting the processor justGunder 20,000 times a second even though the data rate is actually half<of that (one of the many reasons we obtain superior sound)!.FIf any other interrupt-related operation takes place while the speechEis playing, noise results. You'll see this take place in some modernAgames which use REALSOUNDtm, a software-only speech system. Even>accessing the screen RAM causes a noticeable amount of noise.DAlternatives exist, such as SoundBlaster and ThunderBoard, that canCgive hardware assistance to the sound. By plugging a card into theFcomputer, you can offload the responsibility for the sound productionGfrom the PC. The disadvantages are obvious.. firstly, you have to plugEa card into each machine, secondly the cards are \expensive\@CHEAP\..BWe have created an alternative, a small board that plugs into theEprinter port, and goes some way to offloading the responsibility for2accurate timing, while providing amplified sound.GTo send speech to the PW-X board is really simple and involves readingFand writing from and to the printer port only! Even Windows, with itsAcomplex protected-mode operation can easily be told to leave theprinter port alone!.GIn operation, you send the .SOF file directly to the printer port. ForDtiming, you simply read a bit on the port before sending each byte. In English:-4        - wait until a specific input bit goes high&        - send next byte (plus bit 6)-        - wait until same input bit goes low:        - loop until finished all bytes in the .SOF file.. In \C\@CPROG\:-;        outportb(0x378,64);             /* turn unit on */        while (count--)
        {,          while ((inportb(0x37a)&0x40)==0);*          outportb(0x378,(*buffer++)+64);,          while ((inportb(0x37a)&0x40)!=0);
        }<        outportb(0x378,0);              /* turn unit off */>        (Bit 6 when high turns the unit on, when low turns it?        off. Normally the printer port defaults to all outputs        zero!).DWe could show the example in a number of languages (C isn't exactlyDelegant when it comes to simple I/O operations) but it is so simpleByou'll probably get the point. The small card takes in the valuesG(which may be sent at any time in the cycle, no need for exact timing)Fand outputs them firstly as a digital pulse-width-modulated signal atAdouble the frequency, then filters that output and feeds it to aDvolume-controlled amplifier, all on a small, inexpensive board. TheEresult, clear speech with variable volume, even though the PC itself@only has to manage a data rate of 10Khz. Operation in Windows 3Eenhanced is possible even on slow systems. We can provide a sample CBplayer program together with source code with the board, which isDpriced to make speech possible where software speech is impractical'and sound boards simply too expensive..Though in fact we do sell the ThunderBoard at,a rather nice price! Ring during the day on091-4990920 for pricing.
PRINTER PORT
────────────-By printer port we mean the parallel printer'connectors at the back of the machine.FIDO──── Fido is a large organisation ofenthusiastic BBS operators!worldwide. If you have access to#NETMAIL you can leave messages for%Peter Scargill by addressing them to him at FIDONET number 2:253/406
SOUNDBLASTER
────────────)The SoundBlaster board is a very popular-music board. We offer a low-cost alternativecalled the ThunderBoard.
THUNDERBOARD
────────────"Thunderboard is a card that plugsinto your PC and offers good%SoundBlaster compatibility. That is,$the card will operate with the vast%bulk of games available today. It is"supported directly by Windows 3.1$and is available from Quantech at avery competitive price.	WAVEFORM	────────%The onscreen waveform represents the!electrical signal that forms the$sound. When this is a straight line"there will be no output. The lineshould be in the middle of the%screen and represents the speaker atrest.\Windows 3.x Operation\\\─────────────────────\\IThe packages will operate in a DOS box under Windows (create \PIF\@PIFS\Bfiles specifying full-screen exclusive operation) but in order to@run in enhanced mode (the default mode of Windows operation forD386-based machines) a driver must be present. The use of the driverCwill be totally transparent. It may be left there permanently. TheFdriver is only required if you are running enhanced mode Windows on aB386 (though it will do no harm to have it in place on any Windowssetup).Click for \installation\DRVIN\#\Windows 3.x Driver Installation\\#\───────────────────────────────\\GIn your \WINDOWS\\ directory you will find a file called \SYSTEM.INI\\7If you edit that file you will find a line as follows:<                                                \[386Enh]\\G\Add a line just after that as follows:\\          \DEVICE=VSPKD.386\\KSave the file. Copy the file \VSPKD.386\@VSP\ from your sound directory toAyour WINDOWS directory. If you are doing all of this from withinGWINDOWS you'll need to re-start WINDOWS for the driver to take effect.JNothing magical will happen but when you run one of the \SoftSpeak\@SFTS\Gplayback programs or one of the standalone files, they'll simply work!)VSPKD.386 is a special driver written by1Craig Brown and Copyright (c) 1992 Quantech Ltd.+You may install it on any machine that you)own and are likely to send speech to. Ie%if you own a network you may install%VSPKD.386 on all the machines in the(network. You may NOT, however generally)distribute the file, which provides info)to our files as to the machines' currentmode of operation..For more information on PIF files consult theMicrosoft Windows manual.+SoftSpeak Copyright (c) 1992 Quantech Ltd.2The C programming language is used extensively in'modern DOS and WINDOWS-based programs.'A DISK CACHE is usually a program that'allows buffered disk reads and writes.'That is to say, when you read a sector'on the disk, it will be held in memory'for a while. If, sometime later you go(to read the same sector again, then the&disk will not be activated. There are&some very simple disk caches and some%very complex ones. A good package is*HYPERCACHE which is shareware. It appears+to perform better than most, even allowingdelayed writing!Other Products──────────────F\Quantech\\ design and manufacture a range of products as well as the6speech system itself. Amongst our other products are:J        \Standalone Speech Systems\@OP1\       \Video Overlay Cards\@OP4\O        \MPU-Controlled Door Entry\@OP2\       \Teletext Display Systems\@OP5\<        \Custom SC Development\@OP3\           \Other\@OP6\0Click on any of the above for brief information/Our stand-alone speech systems include a small0board that takes in SoftSpeak speech files into6an EPROM and plays them back for custom applications.4Up to 50 seconds (or more) of speech can be stored.3The boards offer a low-cost solution to industrial3speech yet require nothing more sophisticated than8a SoftSpeak development system and an EPROM programmer.4Our door-entry systems may not sound as exciting as7PC-speech, but in fact are leading edge products using5stored speech alongside traditional display methods.,Custom single-chip micro developments using&a range of modern single-chip micros.5Our overlay systems QLOCK II and QLOCK III offer low/price and reliable operation. The boards offer4superimposed time, date and message on the originalincoming video signal.(Our CAROUSEL teletext system is a self-,contained board that will allow the editing+and replay of many teletext-style pages in-remote monitors. No PC required for editing!*We are always on the lookout for exciting)new projects. Since developing the first,ever video jukebox way back in 1981 we have+been involved in leading-edge products andwill continue until we drop!