![]() |
![]() |
#21 |
Registered User
Join Date: Apr 2015
Location: Spain
Posts: 529
|
I have always wondered how the famous workbench 1.x "say" program works inside because it is obvious that there are no pcm samples inside the executable itself. what does it actually do inside? does it generate little bits of waves and modulate them to create the voice imitation?
|
![]() |
![]() |
#22 | |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,934
|
Quote:
|
|
![]() |
![]() |
#23 | |
Registered User
Join Date: Mar 2017
Location: Stockholm, Sweden
Posts: 26
|
Quote:
|
|
![]() |
![]() |
#24 |
Registered User
Join Date: Apr 2015
Location: Spain
Posts: 529
|
Karlos and Joel_w,
thank you for your explanations but I think my question was not well formulated. I really meant that it is possible that the narrator.library uses some kind of wavetable generator with the paula in real time because it does it too fast, has anyone monitored the memory at the time of the speech? there should be PCM samples in the chip ram even if they are short to be able to run the whole speech synthesis algorithm. if there is no pcm audio in memory, it is possible that ross is right and the paula has some way to generate any kind of PSG or FM o any kind of waveforms in realtime. |
![]() |
![]() |
#25 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,934
|
![]()
I think it probably just creates wave table data for the phonemes based on the current voice parameters and then blends those over time, which could be done in software (doesn't sound much more than a few kHz sample rate, maybe 8.0). If you change the voice properties it just recalculates whatever set it needs perhaps.
22khz according to this https://wiki.amigaos.net/wiki/Narrat...audio%20device. I guess it's all synthesised on the fly, given the amount of parameters it has since v37 Last edited by Karlos; 22 November 2023 at 00:51. Reason: https: |
![]() |
![]() |
#26 |
Defendit numerus
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 54
Posts: 4,536
|
I quickly checked out the Da Jormas demo and it uses both volume and period modulation (I don't think together to modulate the same channel, but take it with a pinch of salt, I actually read the code for 2 minutes).
FM synthesis is carried out using the modulator (channel 0) with a fixed table of periods, something like: Code:
00E1 00E8 00EF 00F6 00FD 0104 010A 0110 0116 011A 011F 0123 0126 0128 012A 012B 012B 012B 012A 0128 0126 0123 011F 011A 0116 0110 010A 0104 00FD 00F6 00EF 00E8 00E1 00D9 00D2 00CB 00C4 00BD 00B7 00B1 00AB 00A7 00A2 009E 009B 0099 0097 0096 0096 0096 0097 0099 009B 009E 00A2 00A7 00AB 00B1 00B7 00BD 00C4 00CB 00D2 00D9 The modulated waveform (channel 1) is a much longer sample; its frequency therefore changes continuously (and irregularly) generating the various distortions that are audible in the demo. Of course there is no attempt to keep the signals in phase and the waveform to be modulated and modulating have no harmonic relationships (the modulator is not even a waveform*..), but this is a brutual and dirty FM modulation synthesis ![]() -- EDIT: *this too is not actually correct because in fact the period table has a sinusoidal trend, with the 0 point centered on a 15764Hz frequency and with +1/-1 at 23646Hz and 11863Hz. So in effect the modulator oscillates between these frequencies in a variable time, defined by the period of channel 0. As Karlos said, arrangemen is very different than 'natural' FM.. Maybe this part could have been managed in a softer way (with a wider table, closer frequencies and a lower table period) to avoid too strong distortions in the sound; but it is probable that the effects are desired. -- From the definition: Frequency modulation synthesis (or FM synthesis) is a form of sound synthesis whereby the frequency of a waveform is changed by modulating its frequency with a modulator. Source waveform? Yes. Changed by a modulator? Yes. Real time and continuous? Yes. Completely in hardware (DMA)? Yes. No samples modded from code? Yes. Mathematically and physically incorrect? Yes ![]() Does it work? Somehow ![]() Last edited by ross; 22 November 2023 at 10:12. |
![]() |
![]() |
#27 | |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,497
|
Quote:
All of this comes from SoftVoice, and it was a follow-up product from S.A.M, which was even able to generate synthetic voice on the 8-bit machines (both Atari and C64 were supported), though it took a while to generate an entire sample - not exactly real-time back then. Last edited by Thomas Richter; 22 November 2023 at 10:26. |
|
![]() |
![]() |
#28 | |
Defendit numerus
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 54
Posts: 4,536
|
Quote:
I guess if it comes from 8-bit era, then using simple basic waveforms and tones, everything is generated... (but maybe improvements have been made for chips with DAC..) I have no idea how complex it actually is, but it's certainly fascinating. Are there any examples of simple enough (source) code to generate this in real time on a 68000 at 7MHz? |
|
![]() |
![]() |
#29 | |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,497
|
Quote:
The source is unfortunately not available, but there are open source speech synthetisers. |
|
![]() |
![]() |
#30 |
Amigan
![]() Join Date: Feb 2012
Location: London
Posts: 1,324
|
For those that are interested the way 'say' works (phonemes etc) is actually documented in the manual that comes with the Amiga!
I found this fascinating when I was young. |
![]() |
![]() |
#31 | |
Registered User
Join Date: Jul 2009
Location: Lala Land
Posts: 608
|
Quote:
|
|
![]() |
![]() |
#32 | |
Registered User
Join Date: Feb 2017
Location: Denmark
Posts: 1,315
|
Quote:
|
|
![]() |
![]() |
#33 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,934
|
Sorry squire, getting folks muddled up. It was indeed your good self.
I wonder if someone with the right equipment could get a quantitative measure of the quality. Last edited by Karlos; 22 November 2023 at 20:55. |
![]() |
![]() |
#34 | |
Amigan
![]() Join Date: Feb 2012
Location: London
Posts: 1,324
|
Quote:
Found it! Pages 299..307 https://archive.org/details/Amiga_BA.../n298/mode/1up |
|
![]() |
![]() |
#35 | |
Registered User
Join Date: Jul 2009
Location: Lala Land
Posts: 608
|
Quote:
![]() |
|
![]() |
![]() |
#36 | |
OctaMED Music Composer
Join Date: Jan 2009
Location: Venice - Italy
Age: 50
Posts: 672
|
Quote:
@Paulee_Alex_Bow care to share your ASM piece of code? |
|
![]() |
![]() |
#37 | |
Registered User
Join Date: Mar 2022
Location: Birmingham, UK
Posts: 167
|
Quote:
![]() So I can probably find and paste the code as text later, but for now, if you pause my video at 7:40, it’s on the screen then. [ Show youtube player ] |
|
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Paula documents for a new Paula emulator library | MrSandMan | support.Hardware | 0 | 27 November 2022 06:27 |
Any scripts/tools to turn on Paula's AM/FM Channel Modulation? | Paulee_Bow | request.Apps | 23 | 30 July 2018 23:26 |
Kid Pix - Fujitsu FM Towns/FM Towns Marty | DamienD | HOL contributions | 0 | 16 March 2017 21:40 |
Speech Synthesis (SAY) | Dunny | Coders. General | 4 | 01 September 2011 21:22 |
Miggy, games and synthesis | Mr Softy | Amiga scene | 13 | 25 February 2003 23:51 |
|
|