Digital Fluff Posted November 27, 2022 Share Posted November 27, 2022 Hello everyone, first post here. For a new project I am working on, well, it requires using sampled sound. This question is not about how to play sampled sound (I think I have it figured out). My question really is what sounds good and on what type of system? As I only have a PAL system and an emulator here, for me option 6 is sounding OK and with correct speed on hardware. Option 1..4 sound good on the emulator. I would really like to get some feedback from people with other systems (NTSC, phoenix etc.). Would anyone be willing to test out the attached rom and report back to me? Include what type of system you are using and how it sounds. Feedback very much appreciated. ColecoSAM_test.rom 1 Quote Link to comment Share on other sites More sharing options...
Captain Cozmos Posted November 27, 2022 Share Posted November 27, 2022 (edited) I would love to add samples to my projects but I am looking at your entire 32k being used. If I had to guess it would be 4k for the setup and picture then 28k of data for I am Sam. If I also had to guess this would be from either the new Dynomite 2 by Eric Pearson or the Original Dynomite that is rarer me ever buying a Trans Am again. Either way. I like the first one that sounds like a dominating figure. How about use this to make Sinistar ..................................... Sweet News.... I just checked Pearson's Github and no matter how this gentleman created this fantastic Demo Mr. Eric has published gerber files for the Dynomite 2 a couple of days ago. Edited November 27, 2022 by Captain Cozmos Quote Link to comment Share on other sites More sharing options...
Digital Fluff Posted November 27, 2022 Author Share Posted November 27, 2022 23 minutes ago, Captain Cozmos said: I would love to add samples to my projects but I am looking at your entire 32k being used. If I had to guess it would be 4k for the setup and picture then 28k of data for I am Sam. If I also had to guess this would be from either the new Dynamite 2 by Eric Pearson or the Original Dynomite that is rarer me ever buying a Trans Am again. Either way. I like the first one that sounds like a dominating figure. How about use this to make Sinistar Hey, thanks for the feedback. The 'Hello, my name is SAM' sample is actually only 8571 bytes. But that is not the point. It was generated with S.A.M. (have a quick look here https://discordier.github.io/sam/ if you are not familiar with it). And I have a solution for breaking the 32k barrier. What system did you use? And if you compare it with the S.A.M. from the link, which one is closer? Quote Link to comment Share on other sites More sharing options...
Captain Cozmos Posted November 28, 2022 Share Posted November 28, 2022 (edited) 1 hour ago, Digital Fluff said: Hey, thanks for the feedback. The 'Hello, my name is SAM' sample is actually only 8571 bytes. But that is not the point. It was generated with S.A.M. (have a quick look here https://discordier.github.io/sam/ if you are not familiar with it). And I have a solution for breaking the 32k barrier. What system did you use? And if you compare it with the S.A.M. from the link, which one is closer? You have my attention. What is the fluff if only 8571? There are numerous ways to go larger on game carts as far as 32k but if I had to pick my own way it would be to use some type of RLE. The trouble with that is two fold. RLE to VRAM then you are dealing with the bottleneck access VRAM or the limitations of 1k CRAM or more like 700 bytes if you use the BIOS If I personally would do this I would make an external speech box then create games that can play with just fine but you buy the box separate it enhances the game. OR, Find a way to reduce the digitized speech to it's lowest demonstrator and sound good enough. So let me ask you this. The output to the SN76489AN. Did you write your own parser or is there some standard code somewhere. I really am intrigued and would love to put even the smallest amount of speech or more lifelike SFX in my games. I don't want to detract from what you are doing or steal your secrets but this type of thing on a Colecovision to me is awesome. I write everything I do in Z80 assembly language. Edited November 28, 2022 by Captain Cozmos Quote Link to comment Share on other sites More sharing options...
rietveld Posted November 28, 2022 Share Posted November 28, 2022 (edited) I think Sample 6 is the easiest to understand if you were to add longer sentences Sample 1 sounds like a cross between Robocop and Duke Nuke,: and is pretty cool, but may get grating Edited November 28, 2022 by rietveld Quote Link to comment Share on other sites More sharing options...
youki Posted November 28, 2022 Share Posted November 28, 2022 Few years ago , i started to port SAM on the colecovision. But never completed that project, i had other things to do ... good to see somebody working on that! 1 Quote Link to comment Share on other sites More sharing options...
Digital Fluff Posted November 28, 2022 Author Share Posted November 28, 2022 9 hours ago, Captain Cozmos said: So let me ask you this. The output to the SN76489AN. Did you write your own parser or is there some standard code somewhere. I really am intrigued and would love to put even the smallest amount of speech or more lifelike SFX in my games. I don't want to detract from what you are doing or steal your secrets but this type of thing on a Colecovision to me is awesome. I write everything I do in Z80 assembly language. No big secrets here. All information you need to write your own sample player can be found here: https://scarybeastsecurity.blogspot.com/2020/06/sampled-sound-1980s-style-from-sn76489.html Quote Link to comment Share on other sites More sharing options...
artrag Posted November 28, 2022 Share Posted November 28, 2022 Have you ever seen how the speech is generated here on the sn76489? here more samples The player works on the ISR and does not lock the CPU. Quote Link to comment Share on other sites More sharing options...
Digital Fluff Posted November 28, 2022 Author Share Posted November 28, 2022 9 hours ago, youki said: Few years ago , i started to port SAM on the colecovision. But never completed that project, i had other things to do ... good to see somebody working on that! You had to spoil the surprise ;-) Quote Link to comment Share on other sites More sharing options...
Digital Fluff Posted November 28, 2022 Author Share Posted November 28, 2022 6 hours ago, artrag said: Have you ever seen how the speech is generated here on the sn76489? Yes, I think it is amazing. And it is really well done in the Uridium case. With some heavy pre-processing (and probably a lot of trial and error) you can have something approaching speech at 50/60 Hz. But again. Not the point. I'm shooting for 11025 Hz sample playback and my original question for feedback still stands. How does it 'real world' sound on an NTSC / phoenix machine? I can only test with emulator and PAL machine here. 1 Quote Link to comment Share on other sites More sharing options...
artrag Posted November 28, 2022 Share Posted November 28, 2022 (edited) It is already speech on the ISR at 50hz (or 60Hz). The encoder and player are on mrc.org and on this forum. The point is that if you collect the phonemes from SAM I can encode them to be played on the isr using the above method. You would have SAM on the ISR. And the samples take 3 bytes per frame(!). Edited November 28, 2022 by artrag Quote Link to comment Share on other sites More sharing options...
Digital Fluff Posted November 28, 2022 Author Share Posted November 28, 2022 I was not aware of any phoneme player being available and my google-fu on this board results in me not finding it either on this forum. How are voiced and unvoiced consonants handled? There is a reason that S.A.M. is using samples for them. Quote Link to comment Share on other sites More sharing options...
artrag Posted November 28, 2022 Share Posted November 28, 2022 (edited) The encode is in Matlab. You can find it in the second link. Tursi has published my encoder and his player in his web site, but the player is trivial and you have it also at the link above. It works in this way: the voice is segmented in chunks of 1/50 secs. In each chunk, the encoder computes the highest 3 harmonics, their frequencies and heights are stores them as SN76489 data. The encoder, actually, runs also a complex pitch estimation computing the probability that the current chunk is voiced or unvoiced. I have tried to enable the noise channel in the unvoiced chunks but the more reliable results are when unvoiced chunks are played as the voiced ones. There is also a compiled version of the encoder. You can use it in windows, but first you need to install the matlab libraries following the steps in the read me. Edited November 28, 2022 by artrag Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 28, 2022 Share Posted November 28, 2022 Oh, I might not have the Matlab version up anymore. I rewrote the concept into C for my VGMComp2 toolchain - my attempts to port the Matlab version failed, so it's not exactly the same. I can at least post the zip here, though... https://harmlesslion.com/temp/artvoice.zip 1 Quote Link to comment Share on other sites More sharing options...
Digital Fluff Posted November 29, 2022 Author Share Posted November 29, 2022 15 hours ago, Tursi said: Oh, I might not have the Matlab version up anymore. I rewrote the concept into C for my VGMComp2 toolchain - my attempts to port the Matlab version failed, so it's not exactly the same. I can at least post the zip here, though... https://harmlesslion.com/temp/artvoice.zip OK, that was a fun trip down the rabbit hole. So voice2psg does about the same thing as the matlab version? (1/60[s] of a Sample in) -> (Fourier transform) -> (3 x dominant frequency + volume out) ? Will have to do a test with phoneme samples to see what the result will. Thanks for the tip. Quote Link to comment Share on other sites More sharing options...
Captain Cozmos Posted November 29, 2022 Share Posted November 29, 2022 5 hours ago, Digital Fluff said: OK, that was a fun trip down the rabbit hole. So voice2psg does about the same thing as the matlab version? (1/60[s] of a Sample in) -> (Fourier transform) -> (3 x dominant frequency + volume out) ? Will have to do a test with phoneme samples to see what the result will. Thanks for the tip. You could always just give a tutorial on how you did it and share your code. It makes it easier than chase everything you did down. Quote Link to comment Share on other sites More sharing options...
zyzzle Posted November 30, 2022 Share Posted November 30, 2022 (edited) On 11/28/2022 at 11:02 AM, artrag said: It is already speech on the ISR at 50hz (or 60Hz). The encoder and player are on mrc.org and on this forum. The point is that if you collect the phonemes from SAM I can encode them to be played on the isr using the above method. You would have SAM on the ISR. And the samples take 3 bytes per frame(!). S.A.M. on the Colecovision?! How cool would that be? Ultra-ultra cool. The Phoneme code could easily fit into 32k. Could a RECITER program be worked out using the numeric keypad (controller) somehow? Edited November 30, 2022 by zyzzle Quote Link to comment Share on other sites More sharing options...
Digital Fluff Posted November 30, 2022 Author Share Posted November 30, 2022 4 hours ago, zyzzle said: S.A.M. on the Colecovision?! How cool would that be? Ultra-ultra cool. The Phoneme code could easily fit into 32k. Could a RECITER program be worked out using the numeric keypad (controller) somehow? How about an on-screen keyboard? 1 Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 30, 2022 Share Posted November 30, 2022 22 hours ago, Digital Fluff said: So voice2psg does about the same thing as the matlab version? (1/60[s] of a Sample in) -> (Fourier transform) -> (3 x dominant frequency + volume out) ? Conceptually, yes. However many frequency channels you like - which I found nice for experimenting to see what adding a few voices could do. However, the actual math is obviously very different, and I don't do as much filtering. I never got a noise channel result that I liked either. I was playing with SAM too, I was trying to port it to the F18A's GPU. I need to do a bit of optimizing though, it won't fit, so not sure if I'll finish it. Quote Link to comment Share on other sites More sharing options...
Digital Fluff Posted November 30, 2022 Author Share Posted November 30, 2022 On 11/29/2022 at 3:16 PM, Digital Fluff said: Will have to do a test with phoneme samples to see what the result will. Hate to reply to myself, but I have done the test with transforming phonemes using voice2psg and unless I have made a mistake somewhere, the results are not great (which I more or less expected). For reference I have put the new demo and the transformed phonemes on this message. They might be cool sound effects for someone 🙂 ColecoSAM demo2.rom phonemes.h Quote Link to comment Share on other sites More sharing options...
Digital Fluff Posted November 30, 2022 Author Share Posted November 30, 2022 4 hours ago, Tursi said: Conceptually, yes. However many frequency channels you like - which I found nice for experimenting to see what adding a few voices could do. However, the actual math is obviously very different, and I don't do as much filtering. I never got a noise channel result that I liked either. I was playing with SAM too, I was trying to port it to the F18A's GPU. I need to do a bit of optimizing though, it won't fit, so not sure if I'll finish it. I had a look at the F18A was not familiar with it. Maybe the MKII will solve the problem for you. Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 30, 2022 Share Posted November 30, 2022 (edited) 4 hours ago, Digital Fluff said: Hate to reply to myself, but I have done the test with transforming phonemes using voice2psg and unless I have made a mistake somewhere, the results are not great (which I more or less expected). For reference I have put the new demo and the transformed phonemes on this message. They might be cool sound effects for someone 🙂 ColecoSAM demo2.rom 32 kB · 0 downloads phonemes.h 3.37 kB · 0 downloads I'm.... actually quite surprised how well that worked. I understood it just fine. (Edit: oh, that's the sample based version. Less surprised now. ) Edited November 30, 2022 by Tursi Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 30, 2022 Share Posted November 30, 2022 4 hours ago, Digital Fluff said: I had a look at the F18A was not familiar with it. Maybe the MKII will solve the problem for you. The MK2 isn't expanding the GPU RAM in any way, at least not in the first release. I'm pretty sure it's possible to reduce the memory usage in exchange for CPU time... the F18A GPU runs at 100MHz, so that tradeoff is very possible. Quote Link to comment Share on other sites More sharing options...
zyzzle Posted December 1, 2022 Share Posted December 1, 2022 19 hours ago, Digital Fluff said: How about an on-screen keyboard? Neat! Yes, that'll work! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.