您现在的位置是:主页 > news > 珠海手机网站制作/广州抖音推广公司
珠海手机网站制作/广州抖音推广公司
admin2025/6/24 3:05:10【news】
简介珠海手机网站制作,广州抖音推广公司,品牌注册怎么办理,怎么做m开头的网站参考了不少资料,什么WAV头啊之类的,了解结构以后便写了出来。原本这个程序我是用Java实现的,可是没有C快,因而翻译成了C,不幸的是,翻译后各类错误,缘由竟是那可恨的Char。spa#include #include …
参考了不少资料,什么WAV头啊之类的,了解结构以后便写了出来。原本这个程序我是用Java实现的,可是没有C++快,因而翻译成了C++,不幸的是,翻译后各类错误,缘由竟是那可恨的Char。spa
#include
#include
#include
#include
using namespace std;
#define BufferSize 1024
const double PI=acos(-1);
struct WaveHead{
char fileID[4];
int fileLength;
char wavTag[4];
char FmtHdrID[4];
int FmtHdrLeth;
short FormatTag;
short Channels;
int SamplesPerSec;
int AvgBytesPerSec;
short BlockAlign;
short BitsPerSample;
char DataHdrID[4];
int DataHdrLeth;
WaveHead(){
strcpy(fileID,"RIFF");
strcpy(wavTag,"WAVE");
strcpy(FmtHdrID,"fmt ");
strcpy(DataHdrID,"data");
}
}WaveHead;
int main(int argc,char* argv[]){
//[filename] Mainfrequent Changefrequent Len
if(argc!=5){
printf("Parameter Numner Error!\nCommand:[FileName] [MainFrequent] [ChangeFrequent] [WaveLength]");
return 0;
}
char FileName[255];
int MainFrequent,ChangeFrequent,Second;
strcpy(FileName,argv[1]);
strstream c;
c<
c>>MainFrequent;
c.clear();
c<
c>>ChangeFrequent;
c.clear();
c<
c>>Second;
c.clear();
FILE *fp;
if((fp=fopen(FileName,"w"))==NULL){
printf("Error:Cannot Write to File:%s\n",FileName);
return 0;
}
{
WaveHead.FmtHdrLeth=16;//Regular in PCM
WaveHead.FormatTag=1; //Regular in PCM
WaveHead.Channels=2;
WaveHead.SamplesPerSec=44100;
WaveHead.BitsPerSample=8;
WaveHead.AvgBytesPerSec=WaveHead.SamplesPerSec*WaveHead.BitsPerSample*WaveHead.Channels/8;
WaveHead.BlockAlign=(short) (WaveHead.Channels*WaveHead.BitsPerSample/8);
WaveHead.fileLength=WaveHead.Channels*WaveHead.SamplesPerSec*WaveHead.BitsPerSample*Second/8+44;
WaveHead.DataHdrLeth=WaveHead.fileLength-44;
fwrite(&WaveHead,1,sizeof(WaveHead),fp);
int Len=WaveHead.SamplesPerSec*Second;
int Buffer[BufferSize];
int Now=0;
for(int i=0;i!=Len;i++){
if(Now>BufferSize-1){
fwrite(Buffer,sizeof(int),BufferSize,fp);
Now=0;
}
Buffer[Now++]=128+90*sin(2*PI*i/WaveHead.SamplesPerSec*(MainFrequent+ChangeFrequent/2));
Buffer[Now++]=128+90*sin(2*PI*i/WaveHead.SamplesPerSec*(MainFrequent-ChangeFrequent/2));
}
if(Now){
fwrite(Buffer,sizeof(int),Now,fp);
Now=0;
}
}
fclose(fp);
printf("Success:WaveFile has Created in %s\nAuthor:[X.P.Y]",FileName);
return 0;
}