PSG samples

صفحة 9/15
2 | 3 | 4 | 5 | 6 | 7 | 8 | | 10 | 11 | 12 | 13 | 14

بواسطة dvik

Prophet (2200)

صورة dvik

03-06-2005, 22:16

The adaptive model I used is something similar to what you describe flyguille, i.e. to minimize the steps of two channels But the S/N ratio is still quite high and it can't be compensated for really. It all depends on how far from the wanted value you get when you change the most important PSG channel.

بواسطة dvik

Prophet (2200)

صورة dvik

03-06-2005, 22:19

Grauw, I'm working on a MSX1 demo atm and I actually decided to go with the more noisy but less CPU intensive and memory requiering model similar to the one you are working on. The reason is of course to free up resources to do other things like nice graphics.

Hopefully I'll finish this demo this weekend and then I'll pick up the adaptive sample player and see what I can do.

بواسطة Grauw

Ascended (10581)

صورة Grauw

03-06-2005, 22:21

Dvik, cool, I’m looking forward to it.

With regard to the noise, I haven’t heard it yet, but it can’t possibly be worse than e.g. Oh Shit! Smile

Which I played quite a lot, btw.

~Grauw

بواسطة dvik

Prophet (2200)

صورة dvik

03-06-2005, 22:25

It sounds at least 10 times better than Oh Shit. The S/N is not that much better but the dynamics in the sound is a lot better. The bass tones sounds close to Moonsound Wink In fact the whole demo sounds like Moonsound if you'd put a lowpass filter around 6kHz and played in front of a jet engine.

بواسطة dvik

Prophet (2200)

صورة dvik

03-06-2005, 22:27

I can try to post a beta of the demo tonight. I need to do some cleanup and fix the music but I think I can have something to show tonight.

بواسطة Grauw

Ascended (10581)

صورة Grauw

03-06-2005, 22:29

ARTRAG: Ah, I see, I outputted the wrong values Smile. I have put the real table online now.

However, the observation that it sounded better is interesting... Perhaps the noise is compensated for by higher output values?

[WYZ]: what if you try out this table (output range up to 2.0)?

DB 00,00,00, 01,00,00, 03,00,00, 03,01,00, 05,00,00, 05,01,00
DB 05,03,00, 05,03,01, 07,00,00, 07,01,00, 07,03,00, 06,05,02
DB 07,05,00, 07,05,01, 07,05,03, 07,06,02, 09,00,00, 09,01,00
DB 09,03,00, 09,03,01, 09,05,00, 09,05,01, 08,07,04, 09,06,02
DB 10,02,00, 10,02,01, 10,03,02, 09,08,00, 10,05,02, 10,06,01
DB 09,08,04, 10,06,04, 10,07,02, 11,01,00, 11,03,00, 11,03,01
DB 11,04,02, 11,05,01, 11,05,03, 11,06,02, 10,09,02, 11,07,01
DB 11,07,03, 11,08,00, 10,09,06, 12,00,00, 11,08,04, 12,03,00
DB 12,03,01, 12,05,00, 12,05,01, 12,05,03, 12,05,04, 12,07,00
DB 12,07,01, 12,07,03, 12,07,04, 12,07,05, 12,08,02, 11,09,08
DB 11,10,06, 12,09,00, 12,09,01, 12,09,03, 12,09,04, 12,09,05
DB 13,02,01, 13,03,02, 13,04,02, 12,09,07, 13,05,03, 13,06,02
DB 13,06,04, 13,07,02, 13,07,03, 13,08,00, 13,08,01, 13,08,03
DB 12,11,01, 13,08,05, 12,11,04, 12,11,05, 13,09,03, 13,08,07
DB 13,09,05, 12,11,07, 13,10,00, 13,10,01, 12,11,08, 13,10,04
DB 14,00,00, 13,09,08, 13,10,06, 14,04,00, 14,04,01, 14,04,03
DB 14,05,03, 13,11,02, 14,07,00, 14,07,01, 14,07,03, 14,07,04
DB 14,07,05, 14,08,02, 14,07,06, 14,08,05, 14,09,00, 14,08,06
DB 14,09,03, 14,09,04, 14,09,05, 13,12,03, 14,09,06, 13,12,05
DB 14,09,07, 14,10,03, 14,10,04, 13,12,07, 13,11,10, 14,10,06
DB 13,12,08, 14,10,07, 14,11,00, 14,11,01, 14,11,03, 14,11,04
DB 14,11,05, 15,00,00, 14,11,06, 15,02,00, 14,11,07, 15,03,02
DB 15,04,02, 15,05,02, 15,06,01, 15,06,03, 15,06,04, 15,06,05
DB 14,11,09, 14,12,05, 15,08,02, 15,07,06, 15,08,04, 14,12,07
DB 15,08,06, 15,09,02, 15,09,04, 15,08,07, 15,09,05, 15,09,06
DB 15,10,00, 15,10,01, 15,10,03, 15,10,04, 15,10,05, 14,13,01
DB 14,13,03, 14,13,04, 15,10,07, 15,11,00, 15,11,01, 15,11,02
DB 14,13,07, 15,11,05, 15,11,05, 15,11,06, 15,10,09, 14,12,11
DB 15,11,07, 14,13,09, 14,13,09, 15,11,08, 15,12,00, 15,12,00
DB 15,12,02, 15,11,09, 14,13,10, 15,12,05, 15,12,06, 15,12,06
DB 14,14,00, 14,14,01, 15,11,10, 14,14,04, 15,12,08, 14,14,05
DB 14,14,06, 14,14,06, 14,14,07, 15,12,09, 15,13,00, 15,13,00
DB 15,13,01, 15,13,03, 15,13,04, 15,12,10, 14,14,09, 15,13,06
DB 14,13,12, 14,13,12, 15,13,07, 15,13,08, 15,13,08, 14,14,10
DB 15,12,11, 15,12,11, 15,13,09, 15,13,09, 15,13,09, 15,13,09
DB 14,14,11, 14,14,11, 14,14,11, 15,13,10, 15,13,10, 15,13,10
DB 15,14,00, 15,14,00, 15,14,00, 15,14,02, 15,14,03, 15,14,04
DB 15,14,05, 15,13,11, 15,14,06, 14,14,12, 15,14,07, 15,14,07
DB 15,14,08, 15,14,08, 15,14,08, 15,14,08, 15,14,09, 15,14,09
DB 15,14,09, 15,13,12, 15,13,12, 15,13,12, 15,13,12, 15,14,10
DB 15,14,10, 15,14,10, 15,14,10, 14,14,13, 14,14,13, 14,14,13
DB 14,14,13, 15,14,11, 15,14,11, 15,14,11, 15,14,11, 15,14,11
DB 15,14,11, 15,15,00, 15,15,00, 15,15,00

~Grauw

بواسطة Grauw

Ascended (10581)

صورة Grauw

03-06-2005, 22:30

Dvik: hehehe Smile.

I’m anxious to hear it, but I haven’t got anything better than an emulator overhere... hope that works well enough.

بواسطة NYYRIKKI

Enlighted (5918)

صورة NYYRIKKI

03-06-2005, 23:02

Have you tried, does it help if you play the sample on R800 or 7MHz? (just to see how much it helps to noice problem)

How to cut a spike: Smile
LD A,10
LD D,5
LD BC,#6A1
OUT (#A0),A
OUT(C),D
OUT(C),B

(This was not a serious idea Smile)

بواسطة ARTRAG

Enlighted (6844)

صورة ARTRAG

03-06-2005, 23:51

@dvk
I will try to generate tables from your measures

Btw
When do you observe lower spikes?
Maybe when you minimize the volume changes on each channel?

If yes, as there are lots duplicate configurations is is possible to find
the best configuration for channel volumes in order to minimize the
changes on each one

بواسطة Grauw

Ascended (10581)

صورة Grauw

04-06-2005, 00:08

This replay routine is faster:

;
;PSG sample replay routine
;
;hl = sample start address
;de = sample length
;
	dec de
	ld b,e
	inc b
	inc d
	exx
	ld c,#A1
	ld d,PSG_SAMPLE_TABLE / 256
	ld b,0
	exx
Loop:
	ld a,(hl)
	inc hl
	exx
	ld e,a
	add a,a
	ld l,a
	ld h,b			;h = 0... b is always 0
	rl h
	add hl,de
	ld b,(hl)
	inc hl
	ld d,(hl)
	inc hl
	ld e,(hl)
	ld a,8
	out (#A0),a		;play as fast as possible
	inc a
	out (c),b
	out (#A0),a
	out (c),d
	inc a
	out (#A0),a
	out (c),e
	
	ld b,8			;timing wait loop
WaitLoop:
	djnz WaitLoop

	exx
	djnz Loop
	dec d
	jp nz,Loop
	ret
	
	;align table to an address multiple of 256
	;assembler must be able to handle DS 0 - otherwise, use IF for that case
	DS  (0-$) AND #FF
PSG_SAMPLE_TABLE:

Note that the sample table must be aligned on an address multiple of 256. This is for the table lookup speed improvement. That aside, the looping speed has also improved.

~Grauw

صفحة 9/15
2 | 3 | 4 | 5 | 6 | 7 | 8 | | 10 | 11 | 12 | 13 | 14