News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
L

LambdaDrum progress & first demo

Started by LambdaMikel, 19:51, 17 February 19

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Who thinks that SND pin on expansion port is for sound input?

It's for mono sound output only
3 (75%)
It's for mono sound input only
0 (0%)
It's for mono sound input and output
1 (25%)

Total Members Voted: 4

LambdaMikel

I decided to split this of from the LambdaSpeak thread (since this is rather old and long and LambdaSpeak is basically finished), so this is where I am spending my current efforts:


https://youtu.be/k0D6YG4FTk4

Just another PCM sample player for the CPC? Well, yes and no - the difference being it is polyphonic, i.e., has max 3 channels that can be played simultaneously. I know I promised more channels, but this is probably the max I can squeeze out of the old ATMega 644 @ 20 MHz. Next project will use a more recent and powerful CPU.

The samples are uploaded from the CPC into an extra SPI EEPROM (128 KBytes), which is good enough for holding a drum set in decent quality, e.g., from a Boss DR 660 drum computer.

There are still some minor issues in the firmware - sometimes, the ATMega hangs. I believe that this is clock-related and will go away as soon as I have a proper PCB.

Needless to say, all the programs are written in BASIC  :P Uploading of PCM samples from MC will be much faster of course. But the BASIC programs demonstrate that it is very easy to write software for LambdaSpeak - because of its high level firmware, there is no need for complicated drivers. It'll be much nicer of course with @GUNHED 's awesome RSX commands! He will be the first who gets a final LambdaSpeak 3.0 such that he can add the new RSX commands for the LambdaDrum / PCM functionality.



GUNHED

http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

LambdaMikel

Quote from: GUNHED on 12:15, 18 February 19
Great video!
Thanks! I guess with your MC code uploading new samples will be blazingly fast... max sample size is 128 KBytes = 256 pages (each page has 2*256 Bytes).

Sadly, I cannot locate any larger SPI EEPROM. 25LC1024 seems to be the max. But 128 KBytes are better than nothing  :)

GUNHED

Uploading 128 KB should only take very few seconds.  :) :) :)
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

LambdaMikel

Quote from: LambdaMikel on 19:51, 17 February 19
There are still some minor issues in the firmware - sometimes, the ATMega hangs. I believe that this is clock-related and will go away as soon as I have a proper PCB.
With the PCB finalized and ready to ship, the problem indeed has vanished.
Will post a video tonight. I would claim that the PCM sounds better than on an Amiga.



LambdaMikel

A little pattern-based drum computer in BASIC:


https://youtu.be/BGyaB4OQniw
The polyphonous PCM mode still needs some work... but getting there.

XeNoMoRPH

Quote from: LambdaMikel on 07:22, 26 March 19
A little pattern-based drum computer in BASIC:


The polyphonous PCM mode still needs some work... but getting there.
This software will work on my Lambdaspeak v1.96?
your amstrad news source in spanish language : https://auamstrad.es

LambdaMikel

#7
Quote from: XeNoMoRPH on 10:44, 26 March 19
This software will work on my Lambdaspeak v1.96?
Unfortunately not - this kind of PCM sample playing mode is a new hardware feature of LS 3.0. The PCM samples are being played from the 128 KB SPI EEPROM on the LS 3.0 board - LS 1.95 doesn't have that chip / memory. The samples are not being streamed from the CPC. The BASIC sequencer shown in the video is really just a very simple BASIC program that sends instructions to the LS 3.0 of "what to play" from the EEPROM.

LS 1.95 and LS 1.99 "only" support the Amdrum-kind of sample playing. The Amdrum software has all the PCM samples in memory, and the CPU has to stream the PCM data over the databus. That also continues to work with LS 3.0 of course.

Amdrum sounds surprisingly good considering how little memory there is available for the PCM samples, and given the low bit rates. However, LS 3.0 is able to compete with the Amiga in terms of PCM quality, at least in prinicple - IF can get the artifacts and remaining flaws in the firmware sorted out  ;) Some artifacts are still noticable in the above demo video.

XeNoMoRPH

#8
 :(

Edited
your amstrad news source in spanish language : https://auamstrad.es

Bryce

This is a Retro Computer Forum, not Twitter. Please don't start a trend of filling the database with useless "emotion GIF's" !!!

Bryce.

LambdaMikel

#10
Quote from: XeNoMoRPH on 11:32, 27 March 19
:(

Edited


I can offer a trade in when it is ready to sell. The most expensive reusable part you already own (the text 2 speech click board). If you return your old LS 1.95 (but keep the text 2 speech), and the second ATmega chip I sent you, then I can upgrade you for 20 $ (including shipping). 

Btw, due to limited part availability (it is extremely difficult to get that old big CPLD), I will not produce more than 10 LS 3.0. Of these, 4 are already gone.


If anybody has a source for the XC9572 PLCC84, please let me know. The next project will use recent hardware for sure...

XeNoMoRPH

Quote from: LambdaMikel on 17:38, 27 March 19

I can offer a trade in when it is ready to sell. The most expensive reusable part you already own (the text 2 speech click board). If you return your old LS 1.95 (but keep the text 2 speech), and the second ATmega chip I sent you, then I can upgrade you for 20 $ (including shipping). 

Btw, due to limited part availability (it is extremely difficult to get that old big CPLD), I will not produce more than 10 LS 3.0. Of these, 4 are already gone.


If anybody has a source for the XC9572 PLCC84, please let me know. The next project will use recent hardware for sure...
excellent offer, I will study it later  :)
your amstrad news source in spanish language : https://auamstrad.es

LambdaMikel

#12
Spend some more time optimizing the PCM playback - I was able to add another PCM channel.
Also, I found a better compromise between PCM sample size and quality. Here is LambdaDrum with

4 PCM channels, 8 Bit, 16 kHz

and 10 Boss DR 660 sounds.


https://youtu.be/CklrKWw14GU
After pre-processing, these samples are about 120 KBytes combined.
For the samples, I am using Audactity for PCM editing, then the Switch Sound File Converter for 8 Bit 16 kHz mono conversion, and then another program to remove all PCM file headers. This results in RAW PCM which can be put on a CPC disk and uploaded into LambdaSpeak's PCM EEPROM sample memory.

LambdaMikel

The drum pattern sequencer also made some progress:


https://youtu.be/M7aI7KLEi1s
It has 10 tracks + 1 SPO256-AL2 track now, with 4 channels of PCM, same drum samples as above (8 Bit, 16 kHz, Boss DR 660)

GUNHED

Sounds really very well! A real drum computer and more!
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

LambdaMikel

#15
Thank you all!

I have the parts and capacity to build ~6 of these
(4 are already promised / allocated to other people).

In case anybody is interested in purchasing LS 3.0:

       
  • if you already own the text to speech daugherboard, the overall price INCLUDING SHIPPING is 50 $ (USD).
  • if you need the daughterboard, which costs 40 $, then the overall price including shipping is 90 $ (USD).
Please PM me if you are interested.

I will also publish the firmware and Gerbers for those that miss this opportunity. 

I will also assemble a DSK file that contains all the LS 3.0 and LambdaDrum programs shown in the videos, including the PCM samples for the drums etc.

With that being said, this is the end of this thread and also the end of the other threads about LambdaSpeak. Hope you don't mind that I'll also post this info in the other thread.

Thanks for your interest and CU in another thread,

Yours

LambdaMikel

PS No, not an April Fools Day joke :D



GUNHED

Of course I will help with software support to have an enhanced LS3 ROM (and an RAM resident RSX extensions for non-ROM CPCs).

Now is the time to request special RSX commands and features.

Time for brains storming.  :)
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

GUNHED

http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

zhulien

It is even better than the Amdrum!

LambdaMikel

#19
Quote from: zhulien on 10:22, 02 April 19
It is even better than the Amdrum!

Well, it's an unfair comparison... the Amdrum does not have the memory and CPU bandwidth available to be able to compete with LambdaDrum  ;)

But I also improved the Amdrum mode a bit... I spend a couple of days to optimize the OP amp  and audio filter section on the board, and that resulted in some changes and better Amdrum PCM quality as well. It has to do with the OP amp.

Background - unfortunately, a summing OP amp always degrades the audio signal, and the more the more inputs are summed.

So rather than mixing 3 sources with one OP amp like in LS 1.99 (Epson, SPO256-AL2, and PCM from Atmega), I now have the OP amp only sum SPO256 and PCM. The Epson board already has an amplified output anyway, so feeding it into the OP amp like in LS 1.95 and LS 1.99 required large resistors and resulted in bad audio quality and much reduced dynamics and bandwidth of the signal. So that was a bad idea.

Now, in LS 3.0, there is a 8-position DIP switch, 4 for the left output channel, and 4 for the right output channel, and you can assign the signal for the channels as follows:


DIP 1 = OP amp mixer (SPO256 and PCM)
DIP 2 = Epson output (raw)
DIP 3 = SPO256 output (raw)
DIP 4 = PCM output (raw)


And then the same schema for the right channel using DIP 5 to 8.











zhulien

what are the different versions of LS and how do they differ?

LambdaMikel

#21
There were many different interim versions, but the once that I officially released are the following:


       
  • LS 1.95 - Epson text-to-speech, SSA1 emu, DKtronics emu, DECTalk, Amdrum PCM mode.
    Audio OP amp mixes PCM and Epson text-to-speech board output (of course, you do
    not have to feed in the Epson into the OP amp input, you can also leave it unconnected,
    then you will only get PCM from the output socket).
  • LS 1.99 - like LS 1.95, with additional optional SPO256-AL2 socket.
    Two more modes: real DKtronics SPO-based reimplementation, and
    real SSA1 SPO-based reimplementation (like the originals). In addition to the emulations.

    Audio OP amp mixes PCM, SPO256-AL2 (if present), and Epson (if input is used, same as above). Feeding Epson output into the OP amp is not such a good idea for reasons explained above.
  • LS 3.00 - like LS 1.99, but with additional 128 KBytes SPI EEPROM for PCM "Onboard" Sample Memory. Additional optional SPO256-AL2, like in LS 1.99.

    New LambdaDrum mode - this supports up to 4 Channels of 8 Bit hiqh quality audio (up to > 20 kHz if sample size is not a concern). These PCMs are played from the EEPROM memory and autonomously by LambdaSpeak. This produces PCM that is far superior in quality compared to Amdrum mode. Of course, there is also still the Amdrum mode in addition, and everything else that LS 1.99 offers. In principle, the EEPROM can be used to store arbitrary data, but the main use case is for onboard PCM sample memory.

    Improved Audio section. The  OP amp mixes PCM and SPO256-AL2 (if present). The Epson output always goes out RAW now, because the click board already has an onboard audio amplifier anyway. I have added a DIP switch for mixing the different audio sources:
    switches 1 to 4 for left channel of stero output, and 5 to 8 for right channel of stereo output.

    DIP 1 = OP amp mixer (SPO256 and PCM)
    DIP 2 = Epson output (raw)
    DIP 3 = SPO256 output (raw)
    DIP 4 = PCM output (raw) 
TFM's RSX software work on all three devices. And he is planning on adding new RSX commands to support the EEPROM PCM stuff.

PS  LS 2.0 to LS 2.99 were supposed to be SMD versions with @Bryce , but we decided not to do this because it wasn't going to be cheaper, not so DIY-friendly, and also a bit lack of time, but maybe one day there will be an SMD version if somebody wants to make it (not me though). I'll support this by making everything public I have though (Gerbers, Firmware, ...)

Since this is the end of these threads, I wanted to thank @Bryce again for guiding me through the process! Without him, I would not have started with CPLDs (I was using GALs before), would not have known how to program them, and his "come on, this is not so difficult!" attitude pushed me to use the click text to speech board which requires a large MCU in order to be able to hold the Epson / Dectalk firmware image, which gets uploaded from the MCU into the Epson chip using SPI. In earlier version, I was using the Emic 2 text to speech board, which is self-contained and does not require this (it has its own MCU); hence, earlier versions were satisfied with the  ATMega 328p, compared to the large Atmega644-20pu which 64 KBs which is now being used.

Bryce will get a fully assembled LS 3.0 from me as a thank you.

GUNHED

We need a "standard" for the DIP switches, this way it's more easy for people doing software. At the moment I'm not sure which one will be best.
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

LambdaMikel

#23
Quote from: GUNHED on 17:51, 03 April 19
We need a "standard" for the DIP switches, this way it's more easy for people doing software. At the moment I'm not sure which one will be best.


Depends a little bit on what you want to do.  Actually, I got confused by them already - but I printed them on the PCB : they are

MIX EPS AT SPO 

(AT = ATMega = PCM Output)

That means, one could start with

0100 1000

as default. That would give people Epson speech on left channel, and PCM + SPO on right channel.

Then, depending on what people want to do (or even record), then can switch to

Epson on both channels:

0100 0100

or PCM (LambdaDrum / Amdrum) on both channels:

0010 0010

Or LambdaDrum with SPO on both channels (Channel 8 is for SPO):

1000 1000

etc. However, then you don't hear Epson speech at all. BUT, if you have an external mixer, you can just use the Epson board output and mix it externally of course.



Likewise, "SPO RAW" and "PCM raw" give max quality and highest frequency bandwidth because OP amp is bypassed, but especially SPO sounds a little bit faint then. Requires higher gain setting on your amp then.

Needless to say, only one DIP switch should be on for 1 to 4 (left stereo channel), and only one should be on for 5 to 8 (right stereo channel).




zhulien

would a dip switch be possible to connect the audio out of the LS to the audio of the bus?  of course it will be mono - i did that with my real Amdrum (which I no longer have), and the samples then come out the internal speaker - it isn't great sound of course - but it also get's amplified with the normal speaker when that is connected to a stereo system (the samples in mono still since the bus line is mono).  It means less cables - and a dip switch would give people a choice, less cables or better sound.

Powered by SMFPacks Menu Editor Mod