L

LambdaSpeak Speech Synthesizer, Sample Player, RTC, MP3, Serial Interface, MIDI

Started by LambdaMikel, 08:56, 01 May 17

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

LambdaMikel

#175
Quote from: zhulien on 14:29, 18 February 18

Surely you aren't loading it from tape are you?  It works on DISK unmodified if you use transmat or similar.  Just... you have to remember the drum track names and drumkit names as it doesn't list a disc directory.

Yes, I remember TRANSMAT from the old days... I will put the DSK images somewhere at some point. Glad you like it!!  :)

But I must confess that I indeed loaded from tape a couple of times... it takes about 15 minutes to load drumkit etc.

Bryce

I wouldn't bother with LambdaDrum, the AmDrum is more than enough and probably wouldn't add anything, just be more work.

Bryce.

Gryzor

Damn those drums sound great! In the first video I was thinking "eh... why bother?", but it turned out just great!

LambdaMikel

#178
Quote from: Bryce on 08:20, 19 February 18
I wouldn't bother with LambdaDrum, the AmDrum is more than enough and probably wouldn't add anything, just be more work

Right, I think we keep this as a goodie for the first firmware update then.
Well, Amdrum is really a sample player - in that mode, it can play arbitrary 8bit samples. We only need to write an RSX command  |PLAY,"sample.bin". Shouldn't be difficult to write that RSX command. I am still working on the RSX driver anyway, haven't really started yet. But then, since everything is done in firmware, it also istn't really necessary to have an RSX driver.

LambdaDrum has the advantage that it is very easy to write a drum computer or sequencer for it, even in BASIC, because you don't need to send PCM over the port (which is only feasible with MC code of course, and requires some decent programming skills if you want to mix PCM channels - Amdrum mixes three virtual PCM channels, it seems, by looking at the code fragment on the Wiki). For LambdaDrum, the programmer only needs to send one byte to trigger a drum / sample. Of course, that's also less flexible, because the drums / samples are fixed then and require reflashing of the ATmega in order to change.

Let's keep it as a goodie for the first update.

LambdaMikel

Quote from: Gryzor on 09:19, 19 February 18
Damn those drums sound great! In the first video I was thinking "eh... why bother?", but it turned out just great!

Thanks Gryzor. The key to success was to read the ATmega 644 data sheet and ignore every post in AVR forums on that topic and other sources on the web  :laugh:   

Bryce

Quote from: LambdaMikel on 19:23, 19 February 18
Thanks Gryzor. The key to success was to read the ATmega 644 data sheet and ignore every post in AVR forums on that topic and other sources on the web  :laugh:

That's the great weakness of the internet. It's full of information, but only about 10% of the information is correct. :D

Bryce.

GUNHED

Same with research papers - 20 years after publication.
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

I wonder if it would be hard to make soundtrakker work with Amdrum then instead of Digiblaster?

Bryce

It should work, you'd just have to change the address you were sending the data to.

Bryce.

zhulien

Quote from: Bryce on 14:16, 20 February 18
It should work, you'd just have to change the address you were sending the data to.

Bryce.


something to look at when i get a LambdaSpeak... I thought it was using the printer port, with 8 bit patch and likely some funny logic in there?

LambdaMikel

Quote from: zhulien on 16:29, 20 February 18
something to look at when i get a LambdaSpeak... I thought it was using the printer port, with 8 bit patch and likely some funny logic in there?


No, it is an IO extension - uses expansion port. M4X.

kawickboy

DK tronics + SSA-1 + Amdrum in only one card, great job. Amdrum wasn't easy to find in France but in AA each week there ware an advertising for DK Tronics and Amdrum.

Gryzor

Quote from: LambdaMikel on 19:23, 19 February 18
Thanks Gryzor. The key to success was to read the ATmega 644 data sheet and ignore every post in AVR forums on that topic and other sources on the web  :laugh:   


Got to pave your own path some times :D

GUNHED

Hi there! How is this great project evolving? Is the ATmega644 Code done? Is there a list of commands? How to program it? Tell, tell, tell  :) :) :)
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

#189
One more prototype - wanted to wrap up the Amdrum emulation and put it in more durable hardware (the breadboard won't last...). The RC and Amdrum audio output is left top next to the Click! Speech daughter board.


https://youtu.be/E63uH6SpzMs

Hope you are enjoying the green monitor - a real classic! It is also powering the card, just checking it works fine that way. So you don't need an 8 A / 40 W PSU to use it  :laugh: That's probably the last prototype from my side  :)


LambdaMikel

Here is the latest list of command bytes; new bytes for PCM test and Amdrum mode:


  case 0xFF : process_reset(); break;

  case 0xEF : native_mode_epson(); break;
  case 0xEE : native_mode_dectalk(); break;
  case 0xED : ssa1_mode(); break;
  case 0xEC : dktronics_mode(); break;
  case 0xEB : non_blocking(); break;
  case 0xEA : blocking(); break;
  case 0xE9 : confirmations_on(); break; 
  case 0xE8 : confirmations_off(); break;   
  case 0xE7 : english(); break;
  case 0xE6 : spanish(); break;
  case 0xE5 : fast_getters(); break;
  case 0xE4 : slow_getters(); break;
  case 0xE3 : amdrum_mode(); break;

  case 0xDF : stop_command(); break; 
  case 0xDE : flush_command(); break;

  case 0xCF : get_mode(); break;
  case 0xCE : get_volume(); break;
  case 0xCD : get_voice(); break;
  case 0xCC : get_rate(); break;
  case 0xCB : get_language(); break;
  case 0xCA : get_delay(); break;
  case 0xC9 : get_version(); break;
  case 0xC8 : speak_copyright_note(); break;
  case 0xC7 : speak_hal9000_quote(); break;
  case 0xC6 : sing_daisy(); break;
  case 0xC5 : echo_test_program(); break;
  case 0xC4 : echo_test_program_dk(); break;
  case 0xC3 : test_message(); break;
  case 0xC2 : pcm_test(); break;

  case 0xB0 : set_voice_default(); break;
  case 0xB1 : set_voice(1); break;
  case 0xB2 : set_voice(2); break;
  case 0xB3 : set_voice(3); break;
  case 0xB4 : set_voice(4); break;
  case 0xB5 : set_voice(5); break;
  case 0xB6 : set_voice(6); break;
  case 0xB7 : set_voice(7); break;
  case 0xB8 : set_voice(8); break;
  case 0xB9 : set_voice(9); break;
  case 0xBA : set_voice(10); break;
  case 0xBB : set_voice(11); break;
  case 0xBC : set_voice(12); break;
  case 0xBD : set_voice(13); break;
  case 0xBE : set_voice(14); break;
  case 0xBF : set_voice(15); break;

  case 0xA0 : set_volume_default(); break;
  case 0xA1 : set_volume(1); break;
  case 0xA2 : set_volume(2); break;
  case 0xA3 : set_volume(3); break;
  case 0xA4 : set_volume(4); break;
  case 0xA5 : set_volume(5); break;
  case 0xA6 : set_volume(6); break;
  case 0xA7 : set_volume(7); break;
  case 0xA8 : set_volume(8); break;
  case 0xA9 : set_volume(9); break;
  case 0xAA : set_volume(10); break;
  case 0xAB : set_volume(11); break;
  case 0xAC : set_volume(12); break;
  case 0xAD : set_volume(13); break;
  case 0xAE : set_volume(14); break;
  case 0xAF : set_volume(15); break;

  case 0x90 : set_rate_default(); break;
  case 0x91 : set_rate(1); break;
  case 0x92 : set_rate(2); break;
  case 0x93 : set_rate(3); break;
  case 0x94 : set_rate(4); break;
  case 0x95 : set_rate(5); break;
  case 0x96 : set_rate(6); break;
  case 0x97 : set_rate(7); break;
  case 0x98 : set_rate(8); break;
  case 0x99 : set_rate(9); break;
  case 0x9A : set_rate(10); break;
  case 0x9B : set_rate(11); break;
  case 0x9C : set_rate(12); break;
  case 0x9D : set_rate(13); break;
  case 0x9E : set_rate(14); break;
  case 0x9F : set_rate(15); break;

  case 0x80 : set_buffer_delay_default(); break;
  case 0x81 : set_buffer_delay(1); break;
  case 0x82 : set_buffer_delay(2); break;
  case 0x83 : set_buffer_delay(3); break;
  case 0x84 : set_buffer_delay(4); break;
  case 0x85 : set_buffer_delay(5); break;
  case 0x86 : set_buffer_delay(6); break;
  case 0x87 : set_buffer_delay(7); break;
  case 0x88 : set_buffer_delay(8); break;
  case 0x89 : set_buffer_delay(9); break;
  case 0x8A : set_buffer_delay(10); break;
  case 0x8B : set_buffer_delay(11); break;
  case 0x8C : set_buffer_delay(12); break;
  case 0x8D : set_buffer_delay(13); break;
  case 0x8E : set_buffer_delay(14); break;
  case 0x8F : set_buffer_delay(15); break;

GUNHED

Cool! Thank's! Let's see if we can make something out of it.  :) :) :)
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

#192
The LambdaSpeak Prototype Gallery, from top left to bottom right: 

       
  • LambdaSpeak 0 - no SSA1 or DKtronic emulation, hand-soldered additional Z80 _READY line at the bottom to correct for a design flaw. Emic 2 based, ATmega328p, 2 GAL16V8s. Not MX4 compatible. DIP switches are used to select port addresses etc. Clocked at 16 MHz.
  • LambdaSpeak 1 - tried to make it fit with DDI3 display behind, but would still block the display due to misscalculation / bad measurements. SSA1 emulation required additional logic gate. Not MX4 compatible, _READY line fixed. Added loudspeaker option!
  • LambdaSpeak 1.2 - improvement over LambdaSpeak 1, no longer blocks DDI3 display. Otherwise identical to LambdaSpeak 1, but with little loudspeaker added. Loudspeaker can be en/disabled via DIP switch, DIP switches also select initial mode (SSA1 or native), Port Address, etc.
  • LambdaSpeak 1.3 - same as LambdaSpeak 1.2, but tried to make it MX4 compatible. Due to an error in the layout, it STILL was not MX4. Was working perfectly fine, just not MX4 compatible.
  • LambdaSpeak 1.4 - the final version before hardware revision. Now MX4 compatible.
  • LambdaSpeak 1.5 - new hardware version, triggered by input from Bryce who suggested to abandon the Emic 2 to bring the costs down (Emic 2 ~ 80 $). DKtronics emulation possible. No more DIP switches. Switched to ClickBoard! TextToSpeech daughter board, much cheaper than Emic 2, but requires bigger MCU now - selected the ATmega 644p with 64 KB @ 20 MhZ. A lot of flash memory is required to store and load the Epson S1V30120 speech IC firmware. Also, replaced the 2 GAL G16V8 and the glue logic with one GAL G22V10. The firmware software supports DKtronics emulation now. New design, uses 2 74LS374 flip flops instead of 1 74LS374 and 1 74LS244. Hence, chip count reduced from 7 to 4 (not counting the chips on the daughter boards). Also, the databus to the ATmega 644 is shared. Requires rather complicated triggering of input / output flip flops from the ATmega, and toggeling of ATmega data port between input and output mode. Works, but too cumbersome and not as fast due to complicated clocking required for the flip flops. But easier to layout, as most of the ATmega 644's pins are unused. No more loudspeaker; audio jack output from speech daughter board. Clocked at 20 MHz.
  • LambdaSpeak 1.8 - switched back to having 1 74LS374 input flipflop and 1 74LS244 output driver with dedicated, permanent data connection to the ATmega instead of 2 flip flops with shared data bus. Requires no complicated flip flop clocking / control from the ATmega, but takes more lines. Faster.
  • LambdaSpeak 1.99 - final version, with AMdrum emulation / Sample Player output, suggested by zhulien. Firmware supports PCM sample playing and AMdrum emulation mode. Dedicated RC and line output for PCM, top left next to the speech daughter board. Speech daughter board has independent audio jack output. No audio mixer.
  • LambdaSpeak 2.0... not on the picture yet :-)

00WReX

Cool to see how it progressed.  :)

Cheers,
Shane
The CPC in Australia...
Awa - CPCWiki

robcfg


LambdaMikel

Quote from: robcfg on 08:54, 03 March 18
It has been quite a journey!

Indeed, but very profitable for OshPark  :laugh:
And then, the journey is only about to start...  :)

GUNHED

To continue the story of this great device with cute AI I took the information from LambdaMikel and created some kind of Beta-RSX-expansion. Please refer to the attached DSK.  8)


- To start the RSX expansion type run"disc

- To use !SPEAKSCREEN please set blocking mode with !BLOCKON before.

- Constructive comments are welcome

- Some kind of !PLAY commend could be added for the Amdrum mode, if needed?

- This is not the final version (which will contain automated relocation and an additional ROM).
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:40, 03 March 18
To continue the story of this great device with cute AI I took the information from LambdaMikel and created some kind of Beta-RSX-expansion. Please refer to the attached DSK.  8)

WOW!!!!  :D I can't believe  :o there an RSX extension for LS!!   8) I have to check this out immediately... will post soon. That is great!!! Thanks!!! So cool.  8) I gotta go somewhere now but report back in a couple of hours. Until then!!

LambdaMikel

#198
I am very impressed by how smoothly GunHead's RSX driver works - out of the box!
I recorded a session such that folks can get an idea about this awesome driver and what it has to offer; the audio in the video is not properly synchronized with the video, sorry for that. I used separate tracks this time and didn't synchronize / cut them corrrectly. Anyhow, should be good enough to get an idea:


https://youtu.be/CsaE9JfhJ20

Great work, GunHead!!  8) :) Thanks a lot!

GUNHED

It's a wonderful expansion.  :) :) :)  Now, I try to add a !PLAY (for a sample) command. The JavaCPC does provide a Amdrum, so I can test all that.  :)  Will post an update in some time.  :)


EDIT: Here we go... enjoy!  ;)
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)

Powered by SMFPacks Menu Editor Mod