SP0256-017 says some numbers and plays little melodies

I just received an SP0256-017 purchased on Ebay as the one on this picture from Flickr.

SP0256-017 Speech Synthesis Chipset (Mint In Box!), 1983

This version of the SP0256 was designed for talking clocks. I work with the help of a dedicated EPROM which hold the code for the numbers (without the EPROM, it can say the numbers from 0 to 10 but then it hangs). This version cannot says the allophones as it’s bigger brother the SP0256-AL2 variant

I found the data sheet here but the quality of the scan is quite poor. I used the schematics from the SP0256 to understand what to do.

The sound are quite funny and I couldn’t resist posting a little message just to let you ear this chip.

Oh Eighteen
One Nineteen
Two Twenty
Three Thirty
Four Forty
Five Fifty
Six It is
Seven A.M.
Eight P.M.
Nine Hour
Ten Minute
Eleven Hundred Hour
Twelve Good Morning
Thirteen Attention Please
Fourteen Please Hurry
Fifteen Melody A
Sixteen Melody B
Seventeen

Melody C

I just coded a loop to ear this table.

Votrax SC-01A (tries to) sings

Having a working Votrax SC-01A hooked to an Arduino, I wanted to test the inflection bits to hear their influences on the speech.

Inflection

To get the inflection working we need to toggle the to inflection bits low or ligh. The Votrax’s inflection entries are CMOS level, so we need to adapt them for the arduino (see http://pcbheaven.com/wikipages/Interfacing_ICs/). The two entries are forced to high via 2 resistors and connected to the Arduino pin 4 & 5 (see code at end of page).

Votrax using inflection via Arduino

Inflection setting are pretty coarse : toogling the inflections bits gives a strong variation to the voice. I plan to add a digitally controlled pitch using a LTC6903 as done with the SP0-256 AL2. See http://polaxis1.nextmp.net/?p=36

In this first example you can hear the Votrax variation in pitches.(I got some inspiration on the code thanks to the excellent works done for the GinSing shield. See GinSing library & examples V3.0)

Holding vowels & inflection changes

To try to sing, I also added somes delays to force hold the vowels in an attempt to mimic Kraftwerk style

 

Manual Timing

Finally I added a potentiometer and a switch to replace the normal and individual phoneme timing by an artificial one to make it sound more robotic. If the switch is on, the sketch read the pot value and force all the phonemes to be sustained for certain time (from 30 to 300 ms)

 

 

Here is the code :

 

Arduino midi in interface

Took me quite a while to finalize my midi in interface !

A lot of time wasted because I used a MCT2 optocoupler with  the “standard” 200 ohms resistor on the incoming signal.

The output form the optocoupler to the arduino was quit weak (thanks to my old oscilloscope). I finally found the solution in the  MCT2’s data sheet : the input LED needs a 60 mA current ! (as opposed to the 25 mA for the more classical 6N13x series). You can use a 100 ohms resistor : it works fine.

NewImage

I also wrote a little sketch to test the MIDI library : the led (attached to pin 3) blinks if a NoteOn, Program Change or a  Controller change is received.

You can also attach a piezo to pin 3 to play the note received

There is still a problem I have to solve : the library doesn’t responds directly after reset : it need to receive a program change first or a controller change before reading any data. Any ideas why ?