Voice synthesis on ISR

Page 27/28
20 | 21 | 22 | 23 | 24 | 25 | 26 | | 28

By Grauw

Ascended (8508)

Grauw's picture

01-12-2019, 14:55

ARTRAG wrote:

I've fixed a bug in my old code and using one pitch seems to sound not so bad
wip on this ...

Cool stuff, looking forward!

By ARTRAG

Enlighted (6276)

ARTRAG's picture

02-12-2019, 00:08

Ok, I did it. In this test only one channel of the SCC is used
The test rom is here
It can work both as ASCII-8 or SCC mapper
In the former case it needs an SCC in the other slot

Now we can have or up to 4 voices mixed by the HW each with its volume, or mix voices and music using also channel 5
[WYZ], stay tuned
;-)

By Grauw

Ascended (8508)

Grauw's picture

02-12-2019, 09:35

Sounds really good! And only 1 channel controlled at 60 Hz.

The SCC is really crazy powerful. If only it was the default sound chip instead of the PSG, I can only imagine the synthesis techniques people would’ve used. Cut-off filter effects, waveforms morphing in the frequency domain, synthesis of real voice and instruments...

Did you put any effort in compressing the memory?

By [WYZ]

Champion (417)

[WYZ]'s picture

02-12-2019, 11:13

@artrag making "diabluras". Black Magic in progress.

By ARTRAG

Enlighted (6276)

ARTRAG's picture

02-12-2019, 14:31

It needs 34 bytes per frame and per voice (32 bytes for wave + 2 for period)
I.e. 2040 bytes per second at 60Hz

By Grauw

Ascended (8508)

Grauw's picture

02-12-2019, 15:53

What about this?

Grauw wrote:

The waveforms can perhaps be shared when their DFT is similar to reduce the storage requirements.

Then it would be 4 bytes per frame per voice, 2 for a pointer to a wave and 2 for a period, plus a table of n 32 byte waves.

It would probably reduce fidelity because the odds that waves are exactly the same are probably low so you would have to give them "similarity scores". And it would only save memory if more than every 16th waveform can be reused. But it’s a thought.

By ARTRAG

Enlighted (6276)

ARTRAG's picture

02-12-2019, 23:58

Now the same rom can play up to 4 voices at the same time
Plug this rom and run this basic line
? usr(0): ? usr(1): ? usr(2): ? usr(3)

By ARTRAG

Enlighted (6276)

ARTRAG's picture

03-12-2019, 00:12

Grauw wrote:

What about this?

Grauw wrote:

The waveforms can perhaps be shared when their DFT is similar to reduce the storage requirements.

Then it would be 4 bytes per frame per voice, 2 for a pointer to a wave and 2 for a period, plus a table of n 32 byte waves.

It would probably reduce fidelity because the odds that waves are exactly the same are probably low so you would have to give them "similarity scores". And it would only save memory if more than every 16th waveform can be reused. But it’s a thought.

The fact I use a single pitch is already a source of quality loss... I would use k-means clustering if needed, but I would avoid other compression for the moment.

By ARTRAG

Enlighted (6276)

ARTRAG's picture

03-12-2019, 08:15

The same player with a better organization of the data in ROM
As before plug this rom using SCC mapper (or ASCII-8 mapper but than plug an SCC in the other slot) and type this line:
? usr(0):? usr(7):? usr(2):? usr(3)

By ARTRAG

Enlighted (6276)

ARTRAG's picture

04-12-2019, 09:20

what about modulating the pitch and make voices sing a song controlled by a music tracker?

Page 27/28
20 | 21 | 22 | 23 | 24 | 25 | 26 | | 28