📄
字号:
哪位大虾会用单片机实现WAV文件的播放 [bluewind] [15次] 01-4-11 下午 11:36:04
小弟急需实现上述功能的C语言源程序,多谢多谢!
写过,还没完善,ADPCM的还要一段时间,太忙。PCM可用。 [小师⊕] [7次] 01-4-12 下午 01:13:05
巨人大侠及其他大侠:如何去掉WAV文件的“头” [bluewind] [8次] 01-4-12 下午 02:55:37
请问去掉WAV文件的“头”,就是用 DEBUG 看见的RIFF....WAV…………等数据前面的数
据,如果可能,请赐教源程序,谢谢啦!
这段程序解8KWAV,可生成51的数据格式。使用TC20以上编译。 [小师⊕] [22次] 01-4-12 下午 04:52:21
#include <process.h>
#include <stdio.h>
extern long filesize(FILE *stream);
void main(int argc, char *argv[])
{
int i;
long j,l,p;
unsigned char k;
FILE *tmp,*fp,*file;
union datastruct{
unsigned long r_long;
unsigned char r_char[4];
}datain;
/*
file = fopen("a:\\crun.exe", "rb");
l=filesize(file);
tmp = fopen("a:\\run.exe", "wb");
for(j=0;j<2000;j++){
fread(&k,1,1,file);
fwrite(&k,1,1,tmp);
}
fread(&k,1,1,file);
k=77;
fwrite(&k,1,1,tmp);
fread(&k,1,1,file);
k=77;
fwrite(&k,1,1,tmp);
for(j=2002;j<l;j++){
fread(&k,1,1,file);
fwrite(&k,1,1,tmp);
}
fclose(tmp);
fclose(file);
return;
*/
// argc=2;
// argv[1]="d.wav";
// argv[2]="b.wav";
/***********************************************************/
printf("\nCollect wave files to gensc.bin:\n");
for (i=1; i<argc; i++)printf("[%2d] : %s\n", i, argv[i]);
if ((tmp = fopen("gensc.tmp", "wb"))== NULL)
{
fprintf(stderr, "Cannot open file gensc.tmp.\n");
return ;
}
/*********************************************************/
file = fopen("genadpcm.dat", "wb");
fclose(file);
for(i=1,j=0;i<argc;i++){
sound_process(argv[i]);
if ((fp = fopen("genadpcm.sav", "rb"))== NULL)
{
fprintf(stderr, "Cannot open file gensapcm.sav.\n");
exit(1) ;
}
datain.r_long=filesize(fp)+j;
j=datain.r_long;
fwrite(&datain.r_char[2],1,1,tmp);
fwrite(&datain.r_char[1],1,1,tmp);
fwrite(&datain.r_char[0],1,1,tmp);
if ((file = fopen("genadpcm.dat", "ab"))== NULL)
{
fprintf(stderr, "Cannot open file genadpcm.dat.\n");
return ;
}
for(datain.r_long=0;datain.r_long<filesize(fp);datain.r_long++){
fread(&k,1,1,fp);
fwrite(&k,1,1,file);
}
fclose(fp);
fclose(file);
}
l=filesize(tmp)+3;
fclose(tmp);
/********************************************************/
if ((tmp = fopen("gensc.bin", "wb"))== NULL)
{
fprintf(stderr, "Cannot open file gensc.bin.\n");
return ;
}
if ((fp = fopen("gensc.tmp", "rb"))== NULL)
{
fprintf(stderr, "Cannot open file gensc.tmp.\n");
return ;
}
/********************************************************/
datain.r_long=l;
fwrite(&datain.r_char[2],1,1,tmp);
fwrite(&datain.r_char[1],1,1,tmp);
fwrite(&datain.r_char[0],1,1,tmp);
for(i=3;i<l;i+=3){
fread(&datain.r_char[2],1,1,fp);
fread(&datain.r_char[1],1,1,fp);
fread(&datain.r_char[0],1,1,fp);
datain.r_char[3]=0;
datain.r_long+=l;
fwrite(&datain.r_char[2],1,1,tmp);
fwrite(&datain.r_char[1],1,1,tmp);
fwrite(&datain.r_char[0],1,1,tmp);
}
fclose(fp);
if ((fp = fopen("genadpcm.dat", "rb"))== NULL)
{
fprintf(stderr, "Cannot open file genadpcm.dat.\n",i);
return ;
}
p=filesize(fp);
for(j=0;j<p;j++){
fread(&k,1,1,fp);
fwrite(&k,1,1,tmp);
}
fclose(fp);
fclose(tmp);
printf("File gensc.bin success!\n");
}
写不下,发EMAIL TO YOU [小师⊕] [2次] 01-4-12 下午 04:54:20
感激不尽!感激不尽!! [bluewind] [7次] 01-4-12 下午 08:22:07
大恩不言谢,网上真温暖。我要把"c51bbs"介绍给我更多的朋友。
点击这里回复这篇贴子>>
_____________________________________________________________________________
Copyright?,C51BBS论坛 2000-2001
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -