chipspeech Diary, Part 2


Last summer I spent a good part of my late night research time on Texas Instrument Voice Synthesis Processor (VSP) LPC10 decoding chips. TI made LOTS of these from the late 70s to the late 80s, both for the OEM market and for its own use, under different names. They usually prefixed them TMC or CD for internal use, and TMS for OEM use, but their naming was not always consistent, which leads to lots of confusion.

The goal for chipspeech is to playback LPC10 streams coming from any Texas Instrument device/software and to do so in a sample accurate manner.

We are very close to that goal, but since I found no less than 8 variants of VSPs - all of which had to be accounted for in my emulation core - I'm convinced in fact, that there may be more.

A variant is a unique combination of the following features:

  • Pitch encoding format (5 or 6 bit indexes)
  • Energy ROM look-up table
  • Pitch ROM look-up table
  • K (lattice filter) ROM look-up table
  • Voiced chirp ROM look-up table
  • Variable frame size (TMS5220 rev A and up)
Those are the main characteristics which can quite significantly alter the tonal quality of the output voices. For instance, if you play a stream made for a variant on another variant you could get anything from a slightly unusual nasal quality playing certain words of phonemes, to a completely alien-like version of it, to typical circuit bending whooshes and 'blurps'.

We could have created even more sub categories to account for other observed behaviors, like for instance what happens when an unvoiced (noise) frame is followed by a silence frame (Energy either fades or not). There are probably even more subtle differences especially considering the influence of the various internal interpolation stages 'shifts' depending on the chip - but nothing that you could easily hear I am willing to bet.

The following is a list of VSPs found in devices that we have acquired and dismantled (some of which are incredibly rare). This list is by NO means complete as we do not have infinite resources... nor storage space :).  And I do plan on revisiting this as new discoveries are made.

TMC0280/CD2801 were found in:
  • Language Translator/Language Tutor (same thing)
  • Speak & Math
  • Speak & Read
  • Speak & Spell (UK, that's why the US carts sound funny with it)

TMC0281/TMS5100  were found in:
  • Speak & Spell (US - Buttons)
  • Dictée Magique (French Speak & Spell)
  • Speak & Spell (Japanese - Buttons)
  • Century 'Dazzler' CVS arcade PCB.

TMC0281D/TMS5100A  (Energy table changed from the previous) were found in:
  • Speak & Spell (US - later membrane)
  • Speak & Spell (US - Compact)

TMS5110 (A/C) Found in:
  • Stern/Valadron Bagman PCB
  • Chrysler Electronic Voice Alert
  • Coleco Talking Teacher/K28 Talking Learning Computer (not the Votrax one)

CD2802 Found in:
  • Touch & Tell
  • Vocaid

CD2501E/TMS5200 Found in:
  • TI99/4A Speech Adapter

TMS5220 Found in:
  • IBM PCjr Speech Adapter

TMS5220(A/C) Found in:
  • Magical Wand Speaking Reader (A rev)

How I categorized the variants:


A) Made a full regression test suite of LPC10 streams, each testing a different edge case. I send the streams to the VSPs, record and compared results.



B) Dumped the internal ROM tables of the chips. When idle, VSPs serially output the current values for Energy, Pitch and K's on its PROMOUT pin.  We can thus read the internal values of the internal ROM tables again by crafting custom LPC10 streams where each and every possible values of Energy, Pitch and K entries are set in succession. But we need a different stream for 5 and for 6bit pitch variants, of course!

Logic analyser dumps of ROMCLOCK,T11 and PROMOUT running these streams were then analysed with custom code, then text editor mangled and compared against each other. (Thanks to Lord Nightmare for the explanation of the PROMOUT logic!)

Each TMS51XX/5bit style chip was placed on a Stern Bagman PCB with a customized EPROM @ 9T, offset 0x1032, BIT6 "channel", replacing the French "Aye Aye Aye", (death sound) with the custom LPC stream. Since there are two form factors for those chips (DIP and SDIP), a ZIF adapter was used when needed:



Each TMS52XX/6bit style chips was placed on a custom made protoboard with custom FTDI programs to send the LPC10 stream using the 'Speak External' command


Portions of this research was contributed to MAME/MESS and hopefully will be used for the introduction of the various Speak & Spell drivers that they are working on.

Comments

  1. Fantastic work and a great contribution to electronic music. Really ahead of the curve. Looking forward to trying out chipspeech.

    ReplyDelete
    Replies
    1. Noticed you also sent an email. The Lady Parsec and Terminal 99 voices in chipspeech run my own TMS5200 emulation code, which is the most accurate there is out there right now. Some of my research will be retrofitted in MAME and MESS.

      Delete
  2. The same Emulation code drives the circuit bending section as well.

    ReplyDelete
  3. https://en.wikipedia.org/wiki/Texas_Instruments_LPC_Speech_Chips#TI_LPC_Speech_chip_family

    ReplyDelete
  4. BBC Micro has a TMS5220NL/TMS6100NLL (More info here: http://www.sprow.co.uk/bbc/speechupgrade.htm - I might be able to dump these from my beeb) and I believe the Austin/MG Maestro & Montego had a similar speech dashboard setup to the Chrysler.

    ReplyDelete
  5. The BBC Micro VSM's have all been dumped AFAIK. However that dashboard thing is very interesting! Care to open it?

    ReplyDelete
  6. Hello!
    Regarding the TMS5200 and TMS5220, would you be able to make the source code for it available? Or, can that now be had via the MAME source code?

    ReplyDelete
    Replies
    1. My code is different from MAME's (which is IIRC BSD).
      You can use that no problem.

      Mine was coded from scratch and tuned and tweaked for live music tweaks (accurate arbitrary pitches and volume levels, swappable impulse, etc). And that is proprietary I'm afraid.

      Delete
    2. While I think what you are doing is awesome, the fact that you've asked others for help or donations of things like the French EVA on HaD but not releasing your code or the dumps themselves is a little selfish, don't you think?

      Delete
    3. All my VSM dumps are either already available in MAME as part of the Speak and Spell driver, or awaiting an actual driver being made (like the EVA)
      (See thanks in here)
      https://github.com/mamedev/mame/blob/master/src/mame/drivers/tispeak.cpp

      Still got quite a few devices and cartridge to preserve and to give them.
      However I can't redistribute the roms MYSELF in ANY WAY legally as a company.
      I gave copies to ALL my dumps to the MAME team, and its in their hands.

      So the important thing here is long term preservation, not end to end distribution of copyrighted material.

      Now as far as the code is concerned, if you just want to play the TI ROMs, then MAME's source code is BSD and can do that. (I contributed to it through tables and behaviour)

      Delete
  7. Thank you!

    The goal is to incorporate an accurate as possible speech synthesizer.

    Best,

    James

    ReplyDelete
  8. Is there anyone on this planet that has a datasheet for the TMS5110 that I can download? I have been searching for ages, but without luck. Thanks for your help.

    ReplyDelete
  9. I am looking to dispose of some old stuff that may be interesting to the group (set of serial ROMs, TSP50P11 programmer, ATC/EVM 5010-06 (D6 development board for PC), and a bunch of documentation. 1kohms@gmail.com

    ReplyDelete
  10. - All my VSM dumps are either already available in MAME as part of the Speak and Spell driver
    - that mame dev world is a strange allien world from another planet, it is incompartible with human life and human brain. everybody says: i dumped this, i dumped that - and i'm searching for YEARS to only find NOTHING. please tell me, WHERE DO I FIND THE ACTUAL VSM ROM DUMPS for TI S&S and those related toys?

    ReplyDelete

Post a Comment