refactor(fmod): move all original files into fmod directory
This commit is contained in:
parent
50fb3c6b1c
commit
35569faecc
544 changed files with 0 additions and 0 deletions
|
|
@ -1,223 +0,0 @@
|
|||
#ifndef __ASFXDSP_H
|
||||
#define __ASFXDSP_H
|
||||
|
||||
#include "../../../src/fmod_settings.h"
|
||||
#include "../../../src/fmod_types.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
struct DspValues
|
||||
{
|
||||
short reinitialize; // 0 means in progress. 1 means settings have changed, start over
|
||||
};
|
||||
|
||||
struct coeff2ndorder
|
||||
{
|
||||
float a0, a1, a2, b1, b2;
|
||||
};
|
||||
|
||||
#define kNumLateReverbDelays 8
|
||||
// Only feed the first 8 or so late reverb inputs at first?
|
||||
#define kNumMatrixStages 3 // 2 ^ kNumMatrixStages should equal kNumLateReverbDelays
|
||||
#define kNumEarly_EarlyLateDelayTaps 1
|
||||
#define kNumLate_EarlyLateDelayTaps 8 // Should equal kNumLateReverbDelays
|
||||
#define kNumEarlyLateDelayTaps (kNumEarly_EarlyLateDelayTaps + kNumLate_EarlyLateDelayTaps)
|
||||
#define kNumEarlyDelayTaps 7
|
||||
#define kNumAllpassDelays 2
|
||||
|
||||
#define kSFXREVERB_MAXCHANNELS 8
|
||||
|
||||
#define kEarlyLateDelayLen 65536 // Delete
|
||||
#define kEarlyDelayLenSamples 16384 // Delete
|
||||
#define kAllpassLengthSamples 2048 // Delete
|
||||
|
||||
// Main late delays
|
||||
#define LOWEST_DELAY_LINE_LENGTH_SEC (0.061f)
|
||||
#define DELAY_LINE_RATIO (1.32f)
|
||||
#define LOWEST_DELAY_LINE_LENGTH_B_SEC (0.0015f)
|
||||
#define DELAY_LINE_RATIO_B (1.47f)
|
||||
|
||||
// Allpass delays
|
||||
#define kAllpassDelayLenSec0 (0.0059f)
|
||||
#define kAllpassDelayLenSec1 (0.0077f)
|
||||
|
||||
// EarlyLate delays
|
||||
#define kEarlyLateNextLengthSec (0.0187f)
|
||||
#define kEarlyLateDelayRatio (1.29f)
|
||||
|
||||
// Early delays
|
||||
#define kEarlyFirstDelaySec (0.005f)
|
||||
#define kEarlyDelayRatio (1.59f)
|
||||
|
||||
// Error codes
|
||||
#define REVERB_ALLPASS_ALLOCATION_ERR 4500
|
||||
#define REVERB_EARLYLATE_ALLOCATION_ERR 4501
|
||||
#define REVERB_EARLY_ALLOCATION_ERR 4502
|
||||
#define REVERB_LATE_ALLOCATION_ERR 4503
|
||||
#define REVERB_PARAMETER_ERROR 4504
|
||||
#define REVERB_INBUFF_ALLOCATION_ERR 4505
|
||||
|
||||
namespace FMOD
|
||||
{
|
||||
class SystemI;
|
||||
}
|
||||
|
||||
class ASfxDsp
|
||||
{
|
||||
public:
|
||||
int init(float rate);
|
||||
void close();
|
||||
|
||||
int UpdateBufferSize(int newMaxBlockSize); // possibly reallocate mInBuff buffers to new MaxBlockSize
|
||||
void ClearBuffers(); // zero the audio buffers
|
||||
void ClearInBuff();
|
||||
void ClearReverbInternalBuffers();
|
||||
int AllocateEarlyLateDelay(float *delaySec, float sampleRate);
|
||||
int AllocateAllpassDelays(int numDelays, float *delaySec, float sampleRate);
|
||||
int AllocateEarlyDelay(float delaySec, float sampleRate);
|
||||
int AllocateLateDelays(int numDelays, float *delaySec, float sampleRate);
|
||||
int NextPowerOf2(int delaySamples);
|
||||
|
||||
void DoDSPProcessing (float *inAudio, float *outAudio, int channels, unsigned int sampleframes, float rate, float drymix, unsigned short speakermask);
|
||||
void BlockProcessInput(unsigned int sampframes, int channels, float *inAudio, float rate);
|
||||
|
||||
public:
|
||||
void SetAllpassDelays(float rate);
|
||||
void SetLate_EarlyLateDelayTaps(float refPlusRevDelaySec, float nextLengthSec, float delayRatio, float rate);
|
||||
void SetEarlyDelay(float nextLengthSec, float delayRatio, float rate);
|
||||
void SetLateDelays(float nextLengthSec, float delayRatio, float nextLengthBSec, float delayRatioB, float rate);
|
||||
void DeallocateLateDelays();
|
||||
void DeallocateAllpassDelays();
|
||||
void DeallocateEarlyLateDelay();
|
||||
void DeallocateEarlyDelay();
|
||||
void ZeroWritePointers();
|
||||
|
||||
#if defined(PLATFORM_PS3) //|| defined(PLATFORM_WINDOWS_PS3MODE)
|
||||
float mInBuffMemory[256 + 4]; /* +4 = 16bytes extra for alignment */
|
||||
#else
|
||||
float *mInBuffMemory;
|
||||
#endif
|
||||
float *mInBuff;
|
||||
|
||||
int mNumAllocatedInBuffSamples; // the number of samples per mInBuff currently allocated
|
||||
// (varies according to MaxBlockSize)
|
||||
|
||||
#if defined(PLATFORM_PS3) //|| defined(PLATFORM_WINDOWS_PS3MODE)
|
||||
float FMOD_PPCALIGN16(mTempbuff[(9*256) + 4]); // 8k
|
||||
#endif
|
||||
|
||||
FMOD::SystemI *mSystem;
|
||||
|
||||
float mRoomHF;
|
||||
bool mRoomHFChanged;
|
||||
float mLatchRoomHF; // Latch it for safety
|
||||
float mPrevRoomHF; // For our interpolation
|
||||
float mOldRoomHF; // For next time
|
||||
float mzRoomHF0, mzRoomHF1;
|
||||
|
||||
struct coeff2ndorder mRoomLFcoeffs;
|
||||
float mRoomLF;
|
||||
float mzRoomLF0, mzRoomLF1;
|
||||
|
||||
float FMOD_PPCALIGN16(mDecayHF[kNumLateReverbDelays]);
|
||||
bool FMOD_PPCALIGN16(mDecayHFChanged[kNumLateReverbDelays]);
|
||||
float FMOD_PPCALIGN16(mLatchDecayHF[kNumLateReverbDelays]); // Latch it for safety.
|
||||
float FMOD_PPCALIGN16(mLatchOneMinusDecayHF[kNumLateReverbDelays]);
|
||||
float FMOD_PPCALIGN16(mPrevDecayHF[kNumLateReverbDelays]); // Latch previous one
|
||||
float FMOD_PPCALIGN16(mOldDecayHF[kNumLateReverbDelays]); // Save current one for next time...
|
||||
float FMOD_PPCALIGN16(mMatrixMem[kNumMatrixStages * kNumLateReverbDelays + 16]);
|
||||
float FMOD_PPCALIGN16(mzDecayHFMem[kNumLateReverbDelays + 16]);
|
||||
float *FMOD_PPCALIGN16(mzDecayHF);
|
||||
float *FMOD_PPCALIGN16(mMatrix);
|
||||
float FMOD_PPCALIGN16(mFeedback[kNumLateReverbDelays]);
|
||||
float FMOD_PPCALIGN16(mLatchFeedback[kNumLateReverbDelays]); // Latch it for safety
|
||||
float FMOD_PPCALIGN16(mOldFeedback[kNumLateReverbDelays]); // Save for next buffer
|
||||
float FMOD_PPCALIGN16(mPrevFeedback[kNumLateReverbDelays]); // Use previous value for crossfade
|
||||
|
||||
float mHadamard;
|
||||
bool mHadamardChanged;
|
||||
float mLatchHadamard; // Latch it for safety
|
||||
float mPrevHadamard; // For our interpolation
|
||||
float mOldHadamard; // For next time
|
||||
|
||||
float mERgain, mLRgain;
|
||||
bool mLRgainChanged;
|
||||
float mLatchLRgain; // Latch it for safety
|
||||
float mPrevLRgain; // For our interpolation
|
||||
float mOldLRgain; // For next time
|
||||
bool mERgainChanged;
|
||||
float mLatchERgain; // Latch it for safety
|
||||
float mPrevERgain; // For our interpolation
|
||||
float mOldERgain; // For next time
|
||||
|
||||
float mDiffusionScale;
|
||||
bool mDiffusionScaleChanged;
|
||||
float mLatchDiffusionScale; // Latch it for safety
|
||||
float mPrevDiffusionScale; // For our interpolation
|
||||
float mOldDiffusionScale; // For next time
|
||||
|
||||
float mAllpassGain;
|
||||
int mNumLateReverbDelays;
|
||||
|
||||
// Late delays
|
||||
#if defined(PLATFORM_PS3) //|| defined(PLATFORM_WINDOWS_PS3MODE)
|
||||
float *FMOD_PPCALIGN16(mLateDelaysMemory[kNumLateReverbDelays]);
|
||||
#endif
|
||||
float *FMOD_PPCALIGN16(mLateDelays[kNumLateReverbDelays]); // Array of delay lines
|
||||
float FMOD_PPCALIGN16(mLateDelayLenSec[kNumLateReverbDelays]); // Seconds
|
||||
int FMOD_PPCALIGN16(mLateDelayLenSamples[kNumLateReverbDelays]); // Samples used
|
||||
int FMOD_PPCALIGN16(mOldLateDelayLenSamples[kNumLateReverbDelays]);
|
||||
int FMOD_PPCALIGN16(mLateDelayLenBSamples[kNumLateReverbDelays]); // Samples used
|
||||
int FMOD_PPCALIGN16(mLateDelaySamplesAllocated[kNumLateReverbDelays]); // Samples allocated
|
||||
bool FMOD_PPCALIGN16(mLateChanged[kNumLateReverbDelays]); // Either the delay lengths or mFeedback changed
|
||||
int FMOD_PPCALIGN16(mLateMask[kNumLateReverbDelays]);
|
||||
int FMOD_PPCALIGN16(mLateWritePointer[kNumLateReverbDelays]);
|
||||
int FMOD_PPCALIGN16(mLateReadPointer[kNumLateReverbDelays]);
|
||||
int FMOD_PPCALIGN16(mOldLateReadPointer[kNumLateReverbDelays]);
|
||||
int FMOD_PPCALIGN16(mLateReadPointerB[kNumLateReverbDelays]); // Short (~10 ms) reads to avoid cancellations
|
||||
|
||||
// EarlyLate delay
|
||||
float *FMOD_PPCALIGN16(mEarlyLateDelay);
|
||||
float *FMOD_PPCALIGN16(mEarlyLateDelayMemory);
|
||||
float FMOD_PPCALIGN16(mEarlyLateSec[kNumEarlyLateDelayTaps]);
|
||||
int FMOD_PPCALIGN16(mEarlyLateSamples[kNumEarlyLateDelayTaps]);
|
||||
int FMOD_PPCALIGN16(mOldEarlyLateSamples[kNumEarlyLateDelayTaps]);
|
||||
bool FMOD_PPCALIGN16(mEarlyLateChanged[kNumEarlyLateDelayTaps]);
|
||||
int FMOD_PPCALIGN16(mEarlyLateSamplesAllocated);
|
||||
int FMOD_PPCALIGN16(mEarlyLateMask);
|
||||
int FMOD_PPCALIGN16(mEarlyLateWritePointer);
|
||||
int FMOD_PPCALIGN16(mEarlyLateReadPointer[kNumEarlyLateDelayTaps]);
|
||||
int FMOD_PPCALIGN16(mOldEarlyLateReadPointer[kNumEarlyLateDelayTaps]);
|
||||
|
||||
// Early delay
|
||||
#if defined(PLATFORM_PS3) //|| defined(PLATFORM_WINDOWS_PS3MODE)
|
||||
float FMOD_PPCALIGN16(mEarlyDelay[4096]);
|
||||
#else
|
||||
float *mEarlyDelay;
|
||||
#endif
|
||||
float FMOD_PPCALIGN16(mEarlyDelayLenSec[kNumEarlyDelayTaps]);
|
||||
int FMOD_PPCALIGN16(mEarlyDelayLenSamples[kNumEarlyDelayTaps]);
|
||||
int FMOD_PPCALIGN16(mEarlyDelaySamplesAllocated);
|
||||
int FMOD_PPCALIGN16(mEarlyMask);
|
||||
int FMOD_PPCALIGN16(mEarlyWritePointer);
|
||||
int FMOD_PPCALIGN16(mEarlyReadPointer[kNumEarlyDelayTaps]);
|
||||
|
||||
// Allpass delays
|
||||
#if defined(PLATFORM_PS3) //|| defined(PLATFORM_WINDOWS_PS3MODE)
|
||||
float FMOD_PPCALIGN16(mAllpassDelays[kNumAllpassDelays][512]);
|
||||
#else
|
||||
float *mAllpassDelays[kNumAllpassDelays];
|
||||
#endif
|
||||
float FMOD_PPCALIGN16(mAllpassDelayLenSec[kNumAllpassDelays]);
|
||||
int FMOD_PPCALIGN16(mAllpassDelayLenSamples[kNumAllpassDelays]);
|
||||
int FMOD_PPCALIGN16(mAllpassSamplesAllocated[kNumAllpassDelays]);
|
||||
int FMOD_PPCALIGN16(mAllpassMask[kNumAllpassDelays]);
|
||||
int FMOD_PPCALIGN16(mAllpassWritePointer[kNumAllpassDelays]);
|
||||
int FMOD_PPCALIGN16(mAllpassReadPointer[kNumAllpassDelays]);
|
||||
|
||||
int mNumMatrixStages;
|
||||
};
|
||||
|
||||
|
||||
#endif // __ASFXDSP_H
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue