changes: date = 09-feb-2001 [Markus Fick] -> file: fastmix.cpp where: spline creation, spline macros what: added unity gain clamp code, added Quantizer_Bits(shift) preprocessor constants where: fir creation, fir macros what: - removed x file: sndmix.cpp where: function ReadNote() what: modified behaviour of modplug so that interpolation is only deactivated if a) the user selects "no interpolation" b) linear interpolation is set and speed incr. > 0xff00 => if spline or fir is active then we use always interpolation -> file: fastmix.cpp where: spline macros what: changed spline macros to use precalculated tables (way faster) where: file what: - implemented spline table precalculator - changed fir precalculator + macros (for higher quality and clearer source) - added some comments and documentation comment: - preprocessor constant: SPLINE_FRACBITS ) controls quality/memory usage range is [4..14] inclusive 4 = low quality, low memory usage 14 = highest quality, highest memory usage (1L<<14)*4*2 bytes - preprocessor constant: WFIR_FRACBITS ) controls quality/memory usage range is [4..12] inclusive 4 = low quality, low mu 12 = highest quality, highest memory usage ((1L<<(12+1))+1)*8*2 bytes date = 07-feb-2001 [Markus Fick] -> file: fastmix.cpp where: spline macros what: fixed error in coef calculation date = 07-feb-2001 [Markus Fick] -> file: sndfile.h where: class definition of soundfile what: removed InitFIR + DoneFIR function prototypes -> file: sndfile.cpp function:CSoundFile::CSoundFile() what: [modify] removed call to CSoundFile::InitFIRMixer( ) function:CSoundFile::~CSoundFile() what: [modify] removed call to CSoundFile::DoneFIRMixer( ) -> file: fastmix.cpp where: spline macros what: changed formula + added some guard bits to calculation where: fir macros + implementation what: - moved CSoundfile::FIR funtions to CzFIR (single instance sfir) - changed fir macros to support CzFIR class date = 06-feb-2001 [Markus Fick] -> file: fastmix.cpp where: macros what: - removed fir filter with coef interpolation - add spline interpolation RM: now modplug->select( SPLINE ) selects spline and modplug->select( POLYPHASE ) selects 8tap fir filter date = 05-feb-2001 [Markus Fick] -> file: fastmix.cpp where: macros + filter order what: [modify] changed filter order to 8 instead of 10 -> file: fastmix.cpp what: new macros+switch for fir-interpolator with coef interpolation date = 04-feb-2001 [Markus Fick] -> file: sndfile.h where: class CSoundFile (bottom) what: [add] methods for FIR mixer support 1. int InitFIRInterpolator( ); 2. int DoneFIRInterpolator( ); -> file: sndfile.cpp function:CSoundFile::CSoundFile() what: [modify] add call to CSoundFile::InitFIRMixer( ) function:CSoundFile::~CSoundFile() what: [modify] add call to CSoundFile::DoneFIRMixer( ) -> file: fastmix.cpp new include: why: need it for fir-coef calculation new function: CSoundFile::InitFIRMixer( ) // initializes fir filter lookup (if necessary) new function: CSoundFile::DoneFIRMixer( ) // decrements ReferenceCounter (for static vars) and deinitializes fir struct (if possible). new defs: #define FIRCPWBN 10 // log2 of number of precalculated wings (-(1L< (16 - FIRCPWBN - 1) #define FIRLEN 9 // number(-1) of multiplications per sample #define FIRCUT 0.90f // cutoff of filter #define MIXNDX_FIRMIXERSRC 0x20 // src-type for firfilter new vars: static signed short *cFirLut; // lulines static int bFirInitialized = 0; // initialized? static int nFirOrder = FIRLEN; // order (modplug has 4smps pre/post extension, so limit this to 9) static float nFirFC = FIRCUT; // cutoff (normalized to pi/2) static int nFirCpw = (1L<dwFlags & CHN_NOIDO)) { // use hq-fir mixer? if( ((gdwSoundSetup & (SNDMIX_HQRESAMPLER|SNDMIX_ULTRAHQSRCMODE)) == (SNDMIX_HQRESAMPLER|SNDMIX_ULTRAHQSRCMODE)) || ((gdwSoundSetup & (SNDMIX_HQRESAMPLER)) == (SNDMIX_HQRESAMPLER)) ) nFlags += MIXNDX_FIRMIXERSRC; else nFlags += MIXNDX_LINEARSRC; // use } was: if (!(pChannel->dwFlags & CHN_NOIDO)) { nFlags += MIXNDX_LINEARSRC; // use }