实现音频改变(频率F、音量V、播放速度Sped)
通过ChangeVolumeFreq()实现
代码
头文件
class CAudioChange
{
public:
void ChangeVolumeFreq( CAudioSound* pSound,
int soundListSize,
DWORD eachSoundLen,
DWORD RawDataCnt,
double SpeedFactor,
vector<AUDIO_DATA_TYPE>* __pEachMixingSound);
private:
// 两点式直线方程,既(y-y1)/(x-x1)=(y2-y1)/(x2-x1),整理得(y-y1)/(y2-y1)=(x-x1)/(x2-x1)
// 供F < 1时,线性拟合用
vector<AUDIO_DATA_TYPE> TwoPointLinearEquation( int x1, AUDIO_DATA_TYPE y1,
int x2, AUDIO_DATA_TYPE y2,
int linearFittingNum);
// F 小于1时,归一化.
void FreqNormalizations(double& F);
};
源文件
#include "StdAfx.h"
#include "AudioDevice.h"
#include <stdexcept>
/******************************************************************
本文件实现音频改变(频率F、音量V、播放速度Sped)
通过ChangeVolumeFreq()实现
*******************************************************************/
using namespace std;
//---------------------------------------------------------------------------------------------
// ChangeVolumeFreq()
// 输入