Re: [hatari-devel] Gain too low in DmaSnd_LowPassFilter for STE ?

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


Do this instead. 
 /****** return (in * 3) << 1;  */
and not what I said earlier,
but experiment
gotta go.

----- David Savinkoff wrote:
> ----- Nicolas Pomarède wrote:
> > Hi
> > 
> > as discussed here 
> > http://atari-forum.com/viewtopic.php?f=16&t=29615&p=299270#p299270 the 
> > STE DMA sound samples can't be heard when using an output freq < 50066 
> > Hz in Hatari (for example, try "salamander : planet latis")
> > 
> > At 50066 Hz you hear the samples, but at 48 kHz you don't hear them 
> > anymore. This is because 50066 explicitely turn DMA low pass filter OFF 
> > in the code path.
> > 
> > David, do you think it would be possible to increase the gain in 
> > DmaSnd_LowPassFilter to hear the samples even when using < 50 kHz output 
> > freq ?
> > 
> > Note that in this music demo, samples already have a low volume (if you 
> > just listen to the wav file with Audacity for example), so maybe the 
> > fact that the sample don't use the full 8 bit range is fooling the 
> > filter and you get an even lower volume in the end ?
> > 
> > Nicolas
> > 
> Hi,
> 
> I will look into this later today. Note that 55 KHz has no filter so
> that one can re-sample it with their own filter, thus, 55 KHz
> samples should be sharper than a real STE.
> 
> The low pass filter Hatari uses filters high frequencies a little
> too much.
> 
> see /****** return (in * 3) << 3;  */ below. Which refers to
> hatari/src/dmaSnd.c
> 
> This will increase the gain by approx 3dB
> 
> Experiment until you like it. Note that low frequencies will
> be boosted also. Note that just increasing the cutoff
> frequency will require an expensive filter.
> 
> /**
>  * LowPass Filter Left
>  */
> static Sint16 DmaSnd_LowPassFilterLeft(Sint16 in)
> {
> 	static	Sint16	lowPassFilter[2] = { 0, 0 };
> 	static	Sint16	out = 0;
> 
> 	if (DmaSnd_LowPass)
> 	{
> 		out = lowPassFilter[0] + (lowPassFilter[1]<<1) + in;
> 		lowPassFilter[0] = lowPassFilter[1];
> 		lowPassFilter[1] = in;
> 
> 		return out; /* Filter Gain = 4 */ /****** return (in * 3) << 1;  */
> 	}else
> 	{
> 		return in << 2;  /****** return (in * 3) << 3;  */
> 	}
> }
> 
> /**
>  * LowPass Filter Right
>  */
> static Sint16 DmaSnd_LowPassFilterRight(Sint16 in)
> {
> 	static	Sint16	lowPassFilter[2] = { 0, 0 };
> 	static	Sint16	out = 0;
> 
> 	if (DmaSnd_LowPass)
> 	{
> 		out = lowPassFilter[0] + (lowPassFilter[1]<<1) + in;
> 		lowPassFilter[0] = lowPassFilter[1];
> 		lowPassFilter[1] = in;
> 
> 		return out; /* Filter Gain = 4 */ /****** return (in * 3) << 1;  */
> 	}else
> 	{
> 		return in << 2;  /****** return (in * 3) << 3;  */
> 	}
> }
> 
> 
> 




Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/