vendredi 30 décembre 2011

New Pcb ordered

The new version of the PCB has been ordered (v 0.8)
There is few schematics changes and the Midi connectors has been moved to the back to be able to put this with the Arduino in a case.

And Schematics :

lundi 19 décembre 2011


Sorry for the lack of update but was busy theses days.

So i've debugged the PCB and it's working fine now .. (need to manufacture another prototype PCB early JAN.)
For the code i'm trying to convert it to a sort of Arduino library, will be much easier to use.

vendredi 18 novembre 2011

It's christmas day

I just received my PCB prototypes they look nice and good quality. :

So quickly let the iron warm up and start to solder 1st prototype.

I soldered only the important parts, because it is the first prototype and you know the murphy's law.
Let's go for the first tests, add S&S power and test some voltage, Guess what .. IT DOESN'T WORK
I got very strange voltage on the output for the speak and spell bus, it's time to start debugging.

After several tests i found why .. all transistors are inverted ..  but strangely i didn't mounted then wrong, the error comes from Eagle. it seems that Eagle got several the BC558 part and one of this part the collector and emitter is inverted and of course i choose the wrong one ..

Next step, remove the transistors and resolder them in the correct way (what a pain to unsolder them on a double side pcb) and re-test. OK now i got the correct voltages. (-18 or 5V). (not with fresh batteries, problem explained in previous post)

midi optocoupler seems to be working right.
Didn't get time to check other part of the pcb for the moment.

Things to change for the next revision :

- correct silkscreen for transistors
- connect transistor emitters to the regulated 5V supply
- correct the input zener input regulation (put resistor in serie)
- check resistors value to limit the schield current
- remove the -18v / gnd selector jumer (default -18V)
- add a jumper to allow power via arduino.

vendredi 11 novembre 2011

Possible Big design prob found

Argh ...
After reviewing schematics (to adapt them to the teensy) i've found a possible design bug in the schematics.
If my tought are right, i would not be possible to stop the transistor to saturate.

So imagine few values :
Speak and Spell battery + 5V (when Batteries are not new)
Speak and Spell battery : - 12V
Arduino out 1: 5v / 0 : 0V

So when Arduino output =0 , the transistor will saturate and you will 5V on the Speak and Spell BUS
When Arduino output is 5V, the transistor will stop saturate (VBE-0V)and  you will get -12V on the S&S Bus
Everything is fine..

BUT if you put new batteries on the Speak and Spell then the VBATT + is ~ 6.5 V. So  to stop saturate the Transistor we should have min 5.8 V on his base. (VBE 0.7 V).

We have few option to correct this :
- Use darlington transistor (VBE 1.4) 
- Connect Transistor emmiter to regulated 5V supply
- add a diode + a 5V1 zener on emitter of the transistor.

The PCB has been sent to Prod and they are not arrived yet.. and i''ve already spotted a design error.
Why i didn't spotted this during the testing .. ? because i'm using old batteries .. and Speak and spell Battery voltage is 5.3 V. Grr.......

jeudi 3 novembre 2011

Speak and Spell LFO

Still waiting for the S&S interface PCB to arrive from production, i started to build new Speak and Spell features.

I decided to create a PCB of the well known Casper Speak and Spell LFO who add a LFO to the pitch.
See the source at :
To add some digital feature to this, i was thinking of Digital potentiometer for the LFO controlled via Midi.. but it is another story.



3d Preview :

mardi 25 octobre 2011

new Schematics / Edit : Last update 1st nov.

The new schematics, with the midi input and output for the shield
The PCB has been sent to production, i should get them in 10 to 15 days.. 
the PCB will be based on this schematics:

1/12/11 : Schematics Removed, will add them again with the corrected one..
Feb 12 : Last Schmatics are on googlecode.

PCB should look like this..:

And finally the Eagle 3d Preview  (wihout midi connectors) :

mercredi 19 octobre 2011

autoshutown 2 the return

Finally i got the reset of autoshutdown working .. (need to verify but don't know how to do a midi note every 20 sec without doing it manually).

When pressing the "erase button" it connect the pin 6 to the pin 33 in the microctronller (via the membrane keypad), the pulse shown in the previous post will output from pin 33 and goes in the pin 6.

After few tests the conclusion is :  needed to recrate this pulse and it need to be well synced with the signal from pin 6. Using port maipulation i get env, 500 ns difference between the received pulse and the created one.
Normally this pulse should simulate a "erase" keypress and erase the screen if you press a letter button before.i execute the function (generate the pulse after every midi note) and strangely it does not erase the screen each time .. but seems to reset the autoshutdown counter correctly. To be sure it will erase the screen i should do a few of theses pulses, be they appear each 7,x ms , so if i want to put 4 pulse it will take approx 30 ms, after each midi note, which is far too much i think if you want to trigger the note quickly (not sure the S&S will accept not ever 20 ms need to be tested). i prefer to keep responsiveness of the S&S.

I also tried something totally different, remove the negative voltage from the interface and replace it with the GND, it should work in theory because the bus should have pulldown resistor.
Result  : it works , yeah .. but with some interference on the VFD display.

With the negative voltage
 correct screen with the underscore (the ctl8 pulse is due to this underscore)


Without negative voltage  you get strange display but works.

I'm tired of all this cable and stuff
 that's why i'm designing a sort of shield (smaller one)for arduino, once done, will sent it to a PCB prototyping service.
This shield will be usable to the arduino to S&S interface, will power the arduino with S&S batteries, it could also be used as a midi shield.

mercredi 5 octobre 2011


The Speak and spell got a anoying feature, the autoshutdown when no button is pressed.
By using the arduino Speak and Spell interface, we inject signals directly into the speech synth and not using any button. So the Speak and Spell will power off after few minutes.
We will need to add a "automatic button press" when a midi note is played to ensure the device does not power off. For example the "/" or "erase" on the keyboard don't do any sound ..  sounds the good key to use ..

First find the connection on beetween the CPU and the keyboard :
 Keyboard connector pin   ->  CPU pin
1   ->  2
2   ->  6             used for the "/" or erase key
3   ->  5
4   ->  33           used for the "/"or erase key 
5   ->  32
6   ->  Vbatt+
7   ->  31
8   ->  30
9   ->  34
10   ->  29
11   ->  28
12   ->  4
13   ->  3

Next step watch the signals ... on the Cpu pin 6 = nothing interesting.
on pin 33 .. a pulse of approx. 500 uS.

So will check if generating a pulse will do the job of if the pulse need to be correclty timed and triggered..

mercredi 28 septembre 2011

First Midi test

Midi support is working fine now. Only Note On for the moment ,I need to add the pgm change to change bank of sound.becaus theoretically i can have 16383 different address. (14 bits address 2 bit for Rom chip select, 2 unused = 20 bits = 5 x 4 bit nibble)

It currently doing sound with "Note off" (because my M-audio keyboard doing Note off with a Note On velocity 0 ) will be corrected tonight.
Sorry for the Video quality and the crappy sound, it's recorded with the internal Cam/mic of my Macbook)

Code will be published soon, i need to clean it..

mardi 27 septembre 2011

Midi on the way .. usb midi S&S for the future ?

I've added midi basic support and it works.
I still need to manipulate some bits to create correct mapping on midi notes and S&S addresses. but i's responding to midi keypresses :)

I also received my new geek toy, a teensy 2.0. which support USB directly. i will try to make it work with the Speak and spell. to get a USB Midi speak and spell, sounds fun .. 

I'm also thinking of adding some midi controlled loops and glitches (maybe pitch or lfo) if someone have good working loops bend point i will be happy to try them if it is still stable with them. (bend point cannot be on the same pint as the midi speak spell devices).

lundi 19 septembre 2011

Work in progress

Now i get a working speak function with reliable result.
I'm investigating now the structure of addresses sent to the Speech synth (the 5 nibbles). i'm trying to do a "map" of the Rom.
The addresses are 20 bits. but only 14 are the address, 4 are Rom selection (you can put more than 1 ROM) and 2 are unused.

Ref: TMS6100 datasheet

mercredi 14 septembre 2011

Interface Schematics (Beta) (don't use this schematics before read the correction in the post)

This schmatics is wrong, don't know why i did this stupid error. (only on the schematics). the D2 should be connected to the collector of Q3 and not Q1, (it is to detect the pulse on CTL8)

mardi 13 septembre 2011


See here a logic sniffer capture with explanation:

Quick Warning if you want to connect S&S to your Logic analyser, remember that the logic level are not TTL.
1 is ~ 5 V and 0 is ~ -15V. if you connect your analyzer directly to the S&S it will probably fry ..

She's Alive ... aliiive...

She's alive, yes.. she's  alive..
Finally i got something working, it is still not perfect but the beta is working.
Status of the Project : one button connected to Arduino. When pressed, The Arduino send the commands/addresses in the S&S speech synth to make it speak. At each click on the button i get the same sound (because it send each time the same Rom address) which is the way it should be working.
Next Steps: 
-Analyse the OLS capture (open logic sniffer) to adjust the timing and found why i get some spike on the signals.
-Optimize and clean the code to get a perfect "Speak function" (and release it)
-Add midi feature  
-Add pitch/lfo/filter? midi controlled.
-Create PCB, propose Kits for the community.

How to make it cry :
Please note that the Speech Synth bus is shared with the display,When trying to inject some command in the bus be sure only underscore is displayed on the S&S (for a S&R do WORD MAKER ->GO->ERASE)

Info: Periodically the ctl8 will go high due to the underscore on the display, you will need to inject the code between 2 ctl8 pulse which occur every 7.7ms and pulse duration is approx 780us. So you have 6.9ms to inject your code wich is more than enought..

1. detect the ctl8 pulse
2. Enable TMS (CS high)
3. Reset TMS (bus 0000 + clock)
4. Load address command ( bus 0010 +Clock)
5. 1st address nibble (bus xxxx +clock)
6. Load address command ( bus 0010 +Clock)
7. 2nd address nibble (bus xxxx +clock)
8. Load address command ( bus 0010 +Clock)
9. 3rd address nibble (bus xxxx +clock)
10. Load address command ( bus 0010 +Clock)
11. 4 address nibble (bus xxxx +clock)
12. Load address command ( bus 0010 +Clock)
13. 5 address nibble (bus xxxx +clock)
14. read Rom command (Bus 1000 +clock)
15. Speak command ( Bus 1010 +clock)

to be more clean you shoud do a test speech busy command to be sure the speech synth has finished speaking..

more to come..

samedi 10 septembre 2011

Arduino-S&S interface prototype ready

the interface prototype using veroboard is done
After few test is seems to be working,I didn't saw interference to the S&S, Voltage are correct.
Next step connect Arduino and inject some bits in this box to make it cry ...

mardi 30 août 2011

let's Start .... again..

I tested the interface from Arduino to S&S using brand new 74HC126  .. result = not possible.
I tried to use them in a non-classical way  : output a "1" when input is Hight and High Z when input is low (using the internal pulldown resistor of Speech synth to get a low at -12V).After few tests it seems that connecting negative voltage to the HighZ output of the 74HC126 is not possible. (I get ~0.5v instead of -12V ). i don't know exactly why because i didn't check internal schematic of the 74HC126.
So .. bye bye  the 74HC126 ... and welcome back to the littles Transistors .. :)

For people asking for the code,I will release it, don't worry. Actually it doesn't work and i'm trying to identify the source cause of the prob. I will rebuild a new interface to ensure it doesn't interfere with S&S data bus

vendredi 15 juillet 2011

Updates .. ! .. not that much ..

After a while (7 months) I started again this project.
I tried to remove all transistor and put in place the 74125 ICs (don't have 74126) but getting strange problems.

I get a kind of 1.4 V DC offset on the input of the buffers (strange), which interfer with the CTL1 and CTL8 input (to the arduino). Just thinking of bypass the buffer for the inputs or get new 74hc126 ICs.
The ones i'm using are very very old (15 year old or more) and when i look at the datasheet the spec of the IC are very "shitty" for example with a typical Power of 4.5V the high output typical voltage 3.4 V.

I also updated my Open logic Sniffer but it still difficult to understand exactly the signals on the S&S.
To really understand the Bus data, need to find a procedure to force a speak without adding something on the S&S screen. (BTW i'm currently using a Speak and Read because i've got strange results with the Speak and spell due to to many experimentations)

next step : order new 74HC126 and test bypass buffer for input before i receive the package.

jeudi 13 janvier 2011

lack of updates

Sorry for the lack of updates but i'm moving from a flat to another.. didn't get time to work on this .. and my "lab" is in a box actually ..

Will continue working in this project  and the end of the month normally. .

mercredi 5 janvier 2011

no real progress yet ..

Still getting difficulties to get good and reliable results. .
I'm getting really weird things .. the difficulties are to get it speak each time the same sound ..
When my code to talk to the S&S will be stable and reliable i will add the midi functions to it.

After few investigation and some Bus sniffing with my Open logic sniffer, it seems that it need to send a load address command at each address nibble. Will test that if it finally work.