[mad-dev] Re: mad-dev digest, Vol 1 #278 - 1 msg

armin.gerritsen@philips.com armin.gerritsen@philips.com
Mon, 28 Jul 2003 10:44:33 +0200


> Thanks for your reply.
> I knew that the output is raw PCM data.
> And  the Sound Forge can play raw PCM data no matter what extsion
> filename is.
> I can hear the PCM data via Sound Forge, just the quality is not good,
> too much nosie.
> As the decription of scale( ) in minimad.c, there is no noise shaping
> for scaling.
> It that the reason about the quality issue ?

Could be, but in my experience even something as simple as:

signed int MAD_SimpleScale( mad_fixed_t sample )
{
 // Round
 sample += ( 1L << (MAD_F_FRACBITS - 16) ) ;

 // Clip
 if ( sample >= MAD_F_ONE )
  sample = MAD_F_ONE - 1 ;
 else
 if ( sample < -MAD_F_ONE )
  sample = -MAD_F_ONE ;

 // Quantise
 return sample >> (MAD_F_FRACBITS + 1 - 16) ;
}


... already produces nice results.
If you forget about the clipping though, the quality s#cks!
I'm not sure, but I believe the standard mad-example 'forgets' the clipping.
(Could be wrong though!)
I don't know what minimad.c uses ...

If that is not it, check the compiler settings. Some very agressive
optimisations may cause rounding-errors, although this usually occures with
floating point numbers, and MAD's strength is that it doesn't use them ...

I know, I'm just quessing, but maybe this helps somehow.

Regards,

Armin