Optical data cards for operating sound synthesizer system
CROSS-REFERENCE TO RELATED APPLICATION 
     This is a continuation of Patent application Ser. No. 08/033,642, filed Mar. 17, 1993, now U.S. Pat. No. 5,446,791. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention This invention relates to the field of optical data storage and retrieval. More particularly it relates to optical storage and retrieval of information to control a voice or sound synthesizer. 
     2. Description of the Related Art 
     The optical storage of information for controlling a voice or sound synthesizer is well known. Some systems in the related art scan alphabetic characters and then pronounce them by resurrecting bits of sounds that correspond to those alphabetic characters. More recent systems employ an optical wand to read conventional bar codes and control the synthesizer with information encoded in the bar coded material. While suited for their intended purposes, these systems do not provide a cheap and convenient way of getting lots of data into a voice synthesizer system quickly. Current voice and sound synthesizers require a high data input rate in order to produce a continuous output. 
     Games, advertisements and other applications which employ a voice or sound synthesizer have a need for relatively large amounts of data to be stored in relatively compact form. Accordingly, a need exists for an improved optical data storage and retrieval system which may be employed to control a voice or sound synthesizer. 
     SUMMARY OF THE INVENTION 
     The present invention is directed to an optical data storage and retrieval system which employs flat printed matter (&#34;media&#34;) printed with a plurality of parallel tracks of digital data. The parallel tracks comprise fields of contrasting printing, such as black and white, to represent digital data, such as &#34;1&#34;&#39;s and &#34;0&#34;&#39;s. A timing track is included as one of the parallel tracks. The timing track eliminates the need to scan the flat printed matter at a constant rate of speed. 
     According to one aspect of the present invention, the timing track includes an evenly spaced repeating mark and at each occurrence of the mark, the other data in the parallel tracks above and/or below the mark represent a byte of digital data. 
     According to another aspect of the present invention, a &#34;stop&#34; code is included in the final data byte contained on the media, a &#34;start&#34; code is included in the first byte and one or more bytes represent the number of data bytes contained in the media. 
     According to another aspect of the present invention, a cyclic redundancy check, checksum, or other error checking method is used to determine data integrity after reading the media. 
     According to another aspect of the present invention, a multi-track optical scanner utilizing physical indexing to determine the position of the parallel tracks is used to read the digital data contained in the media. 
     According to another aspect of the present invention, the media is manually wiped through the scanner and the scanner determines its timing from a timing track contained on the media. 
     According to another aspect of the invention, &#34;stop&#34; code, &#34;start&#34; code and number of data bytes may be read by the scanner. Additionally error detection and/or error correction may be included in the scanner such as by employing cyclic redundancy checking and/or checksum-type error checking systems. 
     According to another aspect of the present invention, data bytes read from the media are converted to synthesizer commands and transmitted to a synthesizer for generating synthesized speech or sounds responsive to data contained on the media. 
    
    
     Other and further objects and advantages of the present invention will appear hereinafter. 
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a front perspective view of the scanner unit. 
     FIG. 2 is a diagram of a data storage card (&#34;media&#34;). 
     FIG. 3 is a diagram of the scanner array of the scanner unit. 
     FIG. 4 is a diagram of one scanner element of the scanner array. 
     FIG. 5 is a block/schematic diagram of the processor package. 
     FIG. 6 is a software flow diagram of the software controlling the scanner unit. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS. 
     The optical data storage and retrieval system preferably comprises a scanner unit 10 and printed cards or &#34;media&#34; 20 scannable by unit 10. Unit 10 includes sensors, control switches, display lights, an audio output system and a processor package. 
     Turning to FIG. 1, according to a preferred embodiment of the present invention, scanner unit 10 preferably powered by batteries or an AC/DC adapter is provided. Unit 10 comprises an optical scanner and a voice and/or sound synthesizer. The optical material to be read is contained on readable cards 20 (FIG. 2) which are sometimes referred to herein as &#34;media&#34;. Batteries are preferably kept in battery compartment 30. An on/off switch 40 is provided. 
     The operation of Unit 10 will now be described with reference to the flow chart at FIG. 6. When powered on, unit 10 performs a power on self test 380 to determine that all its internal functions are operating correctly. The first check is preferably of the batteries, if present. If the batteries are low 390 then unit 10 illuminates its BATT LOW lamp 50. If the batteries have an adequate charge then unit 10 checks its other circuits including the sensors--with and without illumination, the data validity of the memory circuits, the data retention of the RAM 280, and verifies that the audio decode circuitry is operating. 
     If a problem is detected during the power on self test, unit 10 blinks its Error Lamp 60 in a sequence of blinks 400 and pauses to indicate the type of problem. For example, a repeating sequence of: 3 blinks followed by a pause--repeating--may indicate a problem with RAM 280. In addition to this blink-type diagnosis, unit 10 may be programmed to play an audio message 410 outlining the problem and possibly also give procedural information for service. The unit then halts 420. 
     If unit 10 has detected no problem during the power on self test it may then play an instructional message 430 if required. For example it could play &#34;Hi, I&#39;m fully functional, please swipe through your card&#34; or the equivalent. After this unit 10 will preferably enter a power down standby mode 440 awaiting an action from the user. Standby mode is provided to prolong the battery life by powering down all unnecessary circuitry. 
     Unit 10 can be re-activated again by one of 3 user actions: 
     1. Switching unit 10 off then ON again with switch 40--this will cause unit 10 to repeat the above initialization procedure and go to STANDBY again. 
     2. Press AGAIN button 70 (450 in FIG. 6)--this will cause the unit to replay the last audio message. This could be an error message, or the instructional message or the last message as swiped through. If there was no previous message the unit can respond by saying &#34;No message to re-play&#34;. After playing the message the unit returns to STANDBY mode 440. 
     3. Inserting card 20 into reader slot 80 (460 in FIG. 6)--Inserting card 20 into slot 80 causes the depression of &#34;leaf&#34; tracking spring 90 (FIG. 3) and this closes plunger 100 of triggering micro switch 110. The closing of micro-switch 110 re-activates the unit&#39;s other circuitry 470 thereby taking it out of STANDBY mode. This is a trigger on input action and removal of the card doesn&#39;t necessarily place the unit back into STANDBY mode. 
     Unit 10 then checks to ensure that card 20 is correctly positioned in slot 80 (480 in FIG. 6). This is done by checking that all the sensors are reading &#34;white space&#34;--i.e., no data. If a sensor detects data or &#34;black space&#34;, indicating the card is in the wrong initial position unit 10 activates error lamp 60 (490 in FIG. 6) and may play a message such as &#34;Error--Please position card at the end of the slot&#34; 500. After this error it would return to STANDBY mode 440. 
     Assuming the card is correctly positioned, the user would preferably slide it right to left in slot 80 as shown in FIG. 1. From the user&#39;s perception the insertion and sliding can be one continuous motion. Unit 10 reads the data off card 20 (510 in FIG. 6) with its 8 top data sensors 120a-120h in 2 step process by first reading the status of the bottom sensor 120i (the clock synchronization pick-up sensor) and using this varying signal status to synchronize when to correctly read the other 8 sensors 120a-120h. 
     How The Data Is Stored On Card 20 
     The data is arranged on card 20 in vertical stripes of data bytes. There are 9 horizontal tracks of data 130a-130i which are respectively scanned and read by sensors 120a-120i. Each data byte has an associated clock bit--preferably the bottom bit contained in horizontal timing track 130i although another track or tracks could be used. By monitoring the bottom (clock) sensor 120i unit 10 can determine when to read and store the associated 8 data bits from tracks 130a-130h. These data bits are then stored as an 8-bit byte in the RAM 280. As card 20 is wiped through slot 80 each consecutive byte is stored sequentially in memory until all the data on the card is read. The first and last bytes of data are given a predetermined unique code to indicate the start and end. Thus unit 10 can determine which of the two is the start byte and which is the stop byte and appropriately rearrange the data 520 if it was scanned backwards. Start byte 140 and stop byte 150 are shown on FIG. 2. 
     Read Failure Detection 
     If during the swiping process 510 card 20 is stopped or removed from slot 80, unit 10 it detects this by detecting a cessation of the activity of clock sensor 120i. Should this occur, unit 10 will then activate its error indicator 60 and may play an audio error message such as &#34;Error--Please re-swipe card&#34;. 
     Data Orientation 
     Once card 20 has been swiped through completely and the data successfully read unit 10 then determines in which order the data was read by checking the relative position of start byte 140 and end byte 150. If card 20 was swiped through backwards then unit 10 re-orders its sequential data in memory to the correct sequence 520. 
     The data in memory will then consist of first a start byte 140 followed by a count byte 160 which contains the number of data bytes in the sequence (0-511), followed by data bytes 170, followed by two bytes 180, 190 containing a checksum for data bytes 170 and finally stop byte 150. 
     Error Detection 
     The unit now performs a check on the data by using a conventional cyclic redundancy check type software algorithm 530 to determine the checksum of data bytes 170. The calculated checksum value is then compared to the value in the second and third to the last bytes of the string 180, 190. 
     If the values are different then the data is invalid and a read error has occurred. The unit will in this case illuminate error lamp 60 and may play an audio message such as &#34;Read error--please re-swipe card&#34;. 
     If the checksum values are equal unit 10 will then decrypt the data portion 170 of the string and store this as the final data string to pass to the audio decoder 540. 
     Each byte of the sound string is passed to the audio decoder in a sequential manner. Included in the ROM 290 are software routines to determine the timing, order and sounding characteristics of each byte of the sound string and this data is also passed to the audio decoder. 
     The audio decoder consolidates all this data and processes it into an audio frequency AC signal which it outputs through a pair of pins as a differential signal. This signal is amplified, filtered and then amplified again prior to playing as sound on the speaker 550. 
     After the audio message corresponds to the data bytes 170 has been played unit 10 returns to STANDBY mode 440. The message can be replayed by either wiping card 20 through slot 80 again (460) or by pressing the AGAIN button 70 (450). 
     The Sensors 
     The sensors 120a-120i are optical sensors. One is shown at FIG. 4. They consist of photo-darlington transistors 200. Each sensor gives a current output proportional to the amount of light presented to the sensor. Associated with the sensors are a series of illuminating LED light sources 210. These illuminate card 20 so that sensors 120a-120i can read the it. 
     When unit 10 is to read card 20 it activates the illuminating LED light sources 10 which flood the portion of the card in slot 80 in front of the sensor assembly 20 with light. After a few micro-seconds delay unit 10 then reads the output of the photo-transistors. If the portion of card 20 in front of a sensor 200 is reflective (e.g., white) then the unit will read a digital &#34;1&#34; and if the portion of card 20 in front of a sensor 200 is non-reflective (e.g., black) then the unit will read a digital &#34;0&#34;. After unit 10 has recorded in memory the value of each of the sensors 120a-120h it then turns the illuminating LED light sources 210 off. This whole process can be done within 5-10 microseconds. 
     Mechanically sensors 120a-120i are grouped together in a vertical stack arrangement as shown in FIG. 3 at 230. They are attached to &#34;leaf&#34; spring 90 which is normally curved up as shown in FIG. 3. Leaf spring 90 forms the bottom of card slot 80. The vertical distance between the top of the center 240 of leaf spring 90 and the center of the bottom sensor 120i is preferably made equal to the vertical distance between the bottom edge 250 of card 20 and the vertical center of the bottom horizontal data track (&#34;clock track&#34; or &#34;timing track&#34;) 130i. The other data sensors 120a-120h are arranged above sensor 120i so that they align with the vertical centers of the horizontal data tracks 130a-130h as printed on card 20. 
     Inserting card 20 in slot 80 causes bottom edge 250 to rest on leaf spring 90 and depress it. As card 20 is moved through slot 80 leaf spring 90 presses against bottom edge 250 of card 20 and as it is attached to sensors 120a-120i it causes sensors 120a-120i to track accurately the vertical centers of the data bits as recorded on the cord. This physical indexing system relative to the straight bottom edge 250 of card 20 makes it possible to read a plurality of parallel horizontal data tracks 130a-130i on card 20 simultaneously resulting in a relatively high data input rate. Other physical indexing systems and card-in-slot detection systems could be used. For example, a button in the well of slot 80 aligned with sensors 120a-120i could activate a switch much like microswitch 110. A coil spring could bias the button upward and thereby provide an upward bias to card 20. 
     Processor Package 
     Although any number of configurations of hardware could be used to implement the optically controlled synthesizer, the presently preferred embodiment is now described. A block/schematic diagram of the processor package is set forth at FIG. 5. A microprocessor 260 such as a Z-80, V20, or similar type manages all input and output functions. Microprocessor 260 is preferably equipped with an external oscillator crystal 270. RAM 280 is provided for intermediate storage of data read from card 20 with sensors 120a-120i and ROM 290 is provided to store pre-programmed instructions to control microprocessor 260. An address bus 300 and data bus 305 are provided to link RAM 280 and ROM 290 to microprocessor 260 as is well known in the art. An audio decoded synthesizer chip 310 is connected to microprocessor 260 with a data bus 315 and a control signal bus 320. Chip 310 may be a BESTspeech T-T-S chip with on-board ROM. Such chips are available from Berkeley Speech Technologies, Inc., 2246 Sixth Street, Berkeley, CA 94710. 
     The microprocessor software, after decoding the data codes into an ASCII string, which in one preferred embodiment is a text string, passes an address pointer to another software routine (available for control of the BESTspeech T-T-S chip from Berkeley Speech Technologies, Inc.) (&#34;replay routine&#34;) which is provided as an adjunct to the sound decoder chip 310. The address pointer points to the first character byte of the data string which was read from the media. The &#34;replay routine&#34; then checks the relative positions of characters in the string and other grammatical content as well as combing in embedded control codes and then passes a series of data bytes at predetermined intervals to the sound decoder IC 310 so that the sound is then replayed through the speaker. This is one embodiment of a text-to-speech synthesizer. Many others are known in the art and could be used as substitutes herein. It is also to be understood that this invention is not to be limited to text-only synthesis as non-speech sound synthesis is also supported by the sound decoder 310. 
     Differential signal preamplifier 330 amplifies an audio signal appearing as a differential signal on 2 pins of chip 310. Audio filter 340 filters the pre-amplified audio signal and amplifier 350 drives speaker 370 under the volume control of potentiometer 360. Optionally Digital Signal Processing techniques, as well known in the art, may be used to further process and massage the audio signal prior to amplification. 
     An optional feature shown in FIG. 5 at 560 may also be incorporated. An LCD or other visually perceivable display device may also be incorporated to provide a visually perceivable display of the information read from card 20. In a preferred embodiment, the visual display 560 may be an LCD panel display. Other display means could be used as well, such as CRT displays and the like. In a preferred embodiment, the text read from card 20 may be processed by decoder chip 310 which preferably includes an output suitable for providing text output to LCD display 560. In this manner, LCD display 560 would display visually what is being &#34;played&#34; audibly by the synthesizer, at least insofar as what is being &#34;played&#34; is text. It is also possible to have the microprocessor 260 directly drive display 560. 
     In a further preferred embodiment of the present invention, decoder chip 310 also includes the ability to store and play back sampled or pre-recorded sounds. According to this preferred embodiment, certain data, stored in data bytes of card 20, could trigger the playback of predetermined sampled sounds previously stored on decoder chip 310 (or on auxiliary devices addressed by decoder chip 310 or microprocessor 260) in addition to the playback of text and/or sounds by decoder chip 310. 
     While embodiments and applications of this invention have been shown and described, it would be apparent to those of skill in the art that many more modifications are possible without departing from the inventive concepts herein. The invention, therefore, is not to be restricted except in the spirit of the appended claims.