The software supplied on cassette or ROM gave the user 11 new RSX (bar) commands to manipulate the SPO256
either directly or using it's 'text to speech' ability (with questionable success). The commands available were:
The commands available : * |SPEAK - Loaded the ROM software, listed the commands and said the sentence 'DK'tronics speech synthesizer' (badly) * |SPON - Used to turn on the read buffers interrupt* |SPOF - You can guess what that one did yourself* |FEED,n - Feed data directly into the speech buffer (up to 30 comma separated values between 5 and 63)* |FLUS - Cleared both the speech and text buffers* |SPED,n - Controls the speed of the text (n being a value between 0 and 15 where 0 is the fastest speed)* |OUTM,1 - Redirected the print command's output to the speech to text converter* |OUTM,2 - Redirect both the print and all other text (List etc.) to the converter* |OUTM,3 - Redirected all text (as with 2), but also printed to the screen in parallel* |LEFT,v - Reported the available memory left in the buffer (where v is a variable)* |SAY, "text" - Was the standard command to send text to the synthesizer (where x is the text to be spoken)
* PRINT "`text`" - PRINT with reversed-single-quotes, works same as |SAY
* The cassette version seems to support only PRINT, the ROM version supports both PRINT and |SAY
However on the 464 the user was required to assign the text to a variable, whereas 664 and 6128 users could
use the command directly:
Although the speech to text converter was very much a hit and miss affair (some words sounded perfect, whereas other words were barely recognisable), with some careful mis-spelling of words and a little speed manipulation, it was possible to achieve clear and understandable sentences.
Another method of producing speech without loading the software, was to feed the buffer directly. This could be done by polling the address &FBFE for it to drop below the value 128 and then feeding the buffer directly by outputting a value to the same address. This loop had to be repeated for each value.
The values (known as allophones) where included in a table in the handbook along with examples of common words.
* [[SP0256 Pin-Outs]]
The interface does NOT contain an oscillator. Instead, OSC1 (SP0256 Pin27) is wired to the CPC's 4MHz clock signal (Expansion port Pin50). Thus producing shorter sounds with higher pitch as when using the recommended 3.12MHz oscillator.
Note: The |SPED command inserts a crude software-delay between the separate allophones (ie. it is NOT a hardware-feature that changes OSC1/OSC2 clock speed or so).
== Supported Software support ===== Games ===* [[Alex Higgens World Pool]]* [[Jump Jet]] (Anirog Software)* [[Roland in Space]]
=== Serious Software ===* [[JumpjetFutureOS]] (Anirog Softwarelimited support)
== Pictures ==
Image:SpeechSynthesizer_PCB_Top.jpg|PCB Top
Image:SpeechSynthesizer_PCB_Bottom.jpg|PCB Bottom
Image:DKTronics Speech Diagram.jpg|Rebuilt Diagram
Image:SpeechSynthesizer PCB Disposition.jpg|Components ID referred to diagram
Image:DK_Speech_Preview.png|SpeechSynthesizer recreated PCB (Gerbers are in download area)
</gallery>
* [[Media:DKSPEECH.ROM|DK'Tronics Speech ROM]] (Amstrad BIOS Extension)
* [[Media:Sp0256-al2-reversed-bit-order.zip|SP0256-AL2 ROM]] ('''caution''' - the bytes in the file are in reversed bit-order, ie. the "Target" values are unreversed, all other opcodes and parameters are reversed)
* [[Media:DK_Speech_Gerber.zip|DK'Tronics Speech PCB Gerber]] (Gerber files for PCB recreation)
==Links==
*{{CPCPower|4724}}
*[https://framagit.org/offset/dk-tronics-speech-acepansion DK Tronics Speech ACEpansion] on Framagit
[[Category:PeripheralsFutureOS]] [[Category:Manual]][[Category:Music and sound]] [[Category:ManualPeripherals]]