Close
0%
0%

LambdaSpeak 3

A Modern and Vintage Speech Synthesizer, PCM Sample Player, Drumcomputer, Real Time Clock, and Serial Interface for the Amstrad CPC

Public Chat
Similar projects worth following
LambdaSpeak 3 is a versatile hardware extension for the Amstrad / Schneider CPC home computer, with a focus on speech synthesis and PCM sample playing. It offers:
1. An Epson S1V30120 TTS chip running DECtalk v5 for natural sounding speech and even DECtalk singing, as well as a DECtalk-based emulation of the classic Amstrad SSA-1 and DK'tronics speech synthesizers from ~ 1985.
2. A fully authentic re-implementation of the classic SSA-1 and DK'tronics speech synthesizers using the original retro GI SP0256-AL2 speech chip.
3. A PCM sample playing mode where PCM data is "streamed" from the CPC and turned into PCM audio (the so-called "Amdrum mode").
4. An autonomous High Quality PCM sample playing mode that plays wave files / samples from a SPI EEPROM on board rather than having to stream the PCM data from the CPC.
5. A serial interface / UART that is used to control, for example, an MP3 player module or a MIDI module.
6. A Real Time Clock (DS3231).

Introduction

LambdaSpeak 3 is a versatile hardware extension for the Amstrad / Schneider CPC 464 (Plus), 664, and 6128 (Plus) home computer, with a focus on speech synthesis and PCM sample playing.

It offers:



  1. DECtalk-based Text-to-Speech (TTS) synthesis: the Epson S1V30120 TTS chip on the utilized mikroBUS "TextToSpeech Click!" daughterboard from MikroElektronika implements DECtalk v5 -- a natural sounding speech synthesizer for English and Spanish, with different voices. DECtalk can even sing. The DECtalk mode is very powerful and versatile, but the DECtalk control language can be difficult to program. Hence, a simplified control language for the S1V30120 is offered as well, the so-called Epson mode. The DECtalk mode is used to implement two Amstrad CPC-specific modes: LambdaSpeak offers a DECtalk-based emulation of the Amstrad SSA-1 Speech Synthesizer, and an emulation of the DK'tronics Speech Synthesizer as well. These retro speech synthesizers from ~ 1985 used the SP0256-AL2 from General Instruments. The emulation is faithful enough such that software that supports these speech synthesizers (e.g., games such as "Roland in Space" from Amsoft) works. However, the DECtalk-based speech sounds different from the original SP0256 AL2-based speech. For higher authenticity, LambdaSpeak can optionally be fitted with a SP0256-AL2 as well, see next.

  2. Optional GI SP0256-AL2 speech synthesis: this chip was used in the official Amstrad CPC SSA-1 speech synthesizer as well as the D'tronics speech synthesizer for the CPC. With fitted SP0256-AL2, LambdaSpeak 3 offers a modern re-implementation of these historic speech synthesizers that sound just like the originals from ano 1985.

  3. PCM Sample Playing Capability / Amdrum emulation: the Amdrum was a digital sample player / drum computer for the CPC. It consisted of a simple Digital-to-Analog (DAC) converter connected to the CPC databus. Bytes transmitted to the DAC would be turned into PCM audio. Hence, the PCM sample data has to be "streamed" from the CPC over the databus to Amdrum to play a PCM sample. The Amdrum supports 3 channels of 8 Bit audio in a decent quality; the mixing of PCM channels is done in software by the CPC / Z80 though, in real time, to achieve polyphony. LambdaSpeak 3's Amdrum emulation sounds just as good as the original (if not better).

  4. High Quality Polyphonous Autonomous PCM Sample Playing Capability: unlike the Amdrum mode, which requires the CPC to send the PCM sample bytes in real time over the databus to the Amdrum DAC, this mode offers "autonomous" sample playing. LambdaSpeak 3 is equipped with a 128 KB SPI EEPROM, which serves as a persistent memory for PCM samples. Samples can be uploaded into the EEPROM memory from the CPC, and played back by sending a "Play PCM" command. This mode offers up to 4 channels of PCM polyphony, and > 16 kHz bandwith is possible. Of course, higher quality PCM samples / WAV files will take up more space on the EEPROM. Moreover, since no real time streaming of PCM sample bytes is required from the CPC for sample playback, the automous EEPROM PCM sample playback can be triggered even from a BASIC program. The playback mode offers up to 4 channels of PCM audio, and the pitch / sample playback speed can be controlled to some extent as well. A sample can be as large as 128 KBs. The resulting PCM quality can be much higher than with the Amdrum mode.

  5. An UART / Serial Interface: this versatile general purpose UART / Serial Interface offers flexible BAUD rates, 5 to 8 bits per frame, and different parity bit and number of stop bit configurations. The UART Interface can either be offered via a PIN header on the LambdaSpeak 3 PCB such that a FTDI cable or RS232 TTL serial converter can be hooked up directly via DuPont cables, or an UART module can be soldered in permanently. The 4 $ MP3 UART Module from Catalex is a good choice for such a module - it offers MP3 playback from a MicroSD card. See below. Moreover, a MIDI breakout module works...

Read more »

lambdaspeak30-final.zip

Gerbers

x-zip-compressed - 136.18 kB - 05/27/2019 at 02:46

Download

bom2.jpg

BOM 2

JPEG Image - 43.13 kB - 05/21/2019 at 14:34

Preview

bom1.jpg

BOM 1

JPEG Image - 168.04 kB - 05/21/2019 at 14:34

Preview

DSC08525.JPG

First batch.

JPEG Image - 4.35 MB - 05/21/2019 at 14:34

Preview

DSC08419.JPG

Final breadboard prototype.

JPEG Image - 5.14 MB - 05/21/2019 at 14:33

Preview

View all 8 files

  • 1 × Xilinx XC9572 PLCC88 CPLD
  • 1 × ATmega 644p 20pu @ 20 Mhz Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 1 × GI SPO256-AL2 Retro Vintange Speech Synthesizer
  • 1 × 8 Segment LED RED BAR
  • 1 × I2C RTC DS3231 Board from Ebay (4 $)

View all 32 components

  • The Making of LambdaSpeak - Now on Github!

    Michael Wessel08/08/2023 at 17:35 0 comments
  • All systems are functional

    Michael Wessel01/20/2022 at 03:52 0 comments

    Early breadboard prototype test (~ 2019) - 8Bit 8kHz 4channel PCM sample playback.

  • Science Fiction Story Telling Time with the SP0256-AL2

    Michael Wessel09/21/2021 at 20:31 0 comments

    In 1985, I found a "Science Fiction Generator" flow chart diagram in a Science Fiction Short Stories Year Book. I forgot who the author of that flow chart was. I turned this flow chart into a BASIC program, and added SP0256-AL2-based speech in German to it. Here you go (sorry, German-only video):

  • CPC MIDI Playback (MIDI IN Demo)

    Michael Wessel06/17/2021 at 22:34 0 comments

  • LambdaSpeak 3 in the headlines!

    Michael Wessel11/16/2019 at 19:03 0 comments

    "ComputerShopper" briefly featured LambdaSpeak 3 in their December 2019 issue.

    Got permission from the editor-in-chief to publish a brief PDF excerpt, here you go: 

    LambdaSpeak 3 in "ComputerShopper 12/2019"

  • CPC MIDI IN Synthesizer is now polyphonous!

    Michael Wessel08/20/2019 at 07:36 0 comments

    Spent some more time Z80 / CPC coding, and the CPC synthesizer is now polyphonous. The CPC's AY-3-8912 has 3 channels. Also, 2 Amplitude Envelopes (ADSRs) were defined, and the envelope can be changed with a CPC key press:

  • MIDI IN Working now!

    Michael Wessel08/08/2019 at 05:20 0 comments

    MIDI IN is working! 

    Here is a demo of MIDI IN working, using a simple "CPC MIDI IN Synthesizer" program that I have written in MAXAM Z80 assembler; sorry for poor keyboard playing abilities (I usually play the Guitar):

    Note that the synthesizer (Akai Miniak) is only used as a MIDI controller / keyboard, and that the sound is coming from the GI AY-3-8912 sound chip in the Amstrad CPC. The chip supports 3 channels of polyphony and noise and (amplitude and tone) envelopes.

    As you can see, latency is pretty low on the CPC side! It really requires a machine code program to get latency low enough though - BASIC is definitely too slow. For MIDI OUT, BASIC is sufficient. It was fun to write some Z80 code again - last time I did that was > 30 years ago.

    Next, I will add 3 channel polyphony, velocity, and program change support to the CPC Synthesizer program. Stay tuned for updates. At this point, this is only CPC / Z80 programming though; the LambdaSpeak 3 firmware seems to be pretty final and stable by now, and the ATMega is almost full, so there isn't much space left.

    You can find the MAXAM assembler source code of the "CPC MIDI IN Synthesizer" on the LS300.DSK on the LambdaSpeak 3 Github page. It also requires the latest firmware because I had to add a special UART / Serial Interface mode that allows "real time scanning and monitoring" of incoming Serial / MIDI Messages. 

  • MIDI for the CPC

    Michael Wessel07/03/2019 at 16:09 0 comments

    I have updated the LambdaSpeak firmware to also support the 31250 BAUD mode required for MIDI. 

    This inexpensive MIDI breakout board

     https://ubld.it/products/midi-breakout-board/

    is perfect for the CPC. Not as bulky as some Arduino MIDI shields. 

  • Hardware Finished - CPC Software in Progress!

    Michael Wessel05/31/2019 at 06:26 0 comments

    Now that the hardware is finally final, it is time to work on the CPC software!

    I am very happy proud and honored that TFM (aka Dr. Stefan Stumpferl), well-known in the CPC Scene for his fantastic FutureOS, is working on adding LambdaSpeak 3 support to his FutureOS, and he is also working on an RSX extension and a CPC ROM!

    Check out his homepage for updates:

    http://futureos.cpc-live.com/ 

    Currently, he is working on RSX commands for the PCM EEPROM Sample Upload. EEPROM PCM Sample playing already works, as does the RTC. In addition to the commands he already wrote for the predecessor, LambdaSpeak 1.95 and LambdaSpeak 1.99. So the RSX extension / ROM is already quite mature and offers a lot of functionality.

    I am thrilled that TFM continues to develop the LambdaSpeak 3 software. Thanks a lot, Stefan!! 

    In the meantime, check out the BASIC programs that demonstrate some features of LambdaSpeak 3, but epspecially the EEPROM PCM Upload is not really feasible from BASIC (it takes minutes to upload a PCM WAV / sample file from BASIC into the EEPROM...) 

View all 9 project logs

View all 10 instructions

Enjoy this project?

Share

Discussions

[deleted]

[this comment has been deleted]

Michael Wessel wrote 05/21/2019 at 17:42 point

Thank Kristen! Happy hacking :D 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates