?? 單片機實現wav文件的播放.txt
字號:
哪位大蝦會用單片機實現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 + -