/* * Mixer.h * ------- * Purpose: Basic mixer constants * Notes : (currently none) * Authors: OpenMPT Devs * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ #pragma once #include "BuildSettings.h" OPENMPT_NAMESPACE_BEGIN #define MPT_INTMIXER #ifdef MPT_INTMIXER typedef int32 mixsample_t; enum { MIXING_FILTER_PRECISION = 24 }; // Fixed point resonant filter bits #else typedef float mixsample_t; #endif #define MIXBUFFERSIZE 512 #define NUMMIXINPUTBUFFERS 4 #define VOLUMERAMPPRECISION 12 // Fractional bits in volume ramp variables enum { MIXING_ATTENUATION = 4 }; enum { MIXING_FRACTIONAL_BITS = 32 - 1 - MIXING_ATTENUATION }; enum { MIXING_CLIPMAX = ((1<(1 << MIXING_FRACTIONAL_BITS); // The absolute maximum number of sampling points any interpolation algorithm is going to look at in any direction from the current sampling point // Currently, the maximum is 4 sampling points forwards and 3 sampling points backwards (Polyphase / FIR algorithms). // Hence, this value must be at least 4. // Note that choosing a higher value (e.g. 16) will reduce CPU usage when using many extremely short (length < 16) samples. #define InterpolationMaxLookahead 16u // Maximum size of a sampling point of a sample, in bytes. // The biggest sampling point size is currently 16-bit stereo = 2 * 2 bytes. #define MaxSamplingPointSize 4u OPENMPT_NAMESPACE_END