Jump to content
IGNORED

Sample playing on ColecoVision


Digital Fluff

Recommended Posts

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

  • Like 1
Link to comment
Share on other sites

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 by Captain Cozmos
Link to comment
Share on other sites

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?

 

 

Link to comment
Share on other sites

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 by Captain Cozmos
Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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.

  • Like 1
Link to comment
Share on other sites

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 by artrag
Link to comment
Share on other sites

 

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 by artrag
Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by zyzzle
Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by Tursi
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...