wantedboy
10-11-2014, 18:49
سلام دوستان
دیدم کسی جواب نداد!
گفتم خودم دست بکار بشم شروع به خوندن بیت به بیت یک فایل wave کردم.
فعلا توانستم مشخصات یک فایل wave بدست آوردم.
کد های این بخش براتون گذاشتم.
قسمت بعد میریم برای پخشش😄
void load_header (void)
{
unsigned int CChunkSize,SamplingRate,BByteRate,SSubchunk2Size;
int i;
BYTE ChunkID[4];
BYTE ChunkSize[4];
BYTE Format[4];
BYTE Subchunk1ID[4];
BYTE Subchunk1Size[4];
BYTE AudioFormat[2];
BYTE NumChannels[2];
BYTE SampleRate[4];
BYTE ByteRate[4];
BYTE BlockAlign[2];
BYTE BitsPerSample[2];
BYTE Subchunk2ID[4];
BYTE Subchunk2Size[4];
BYTE Data[1024];
char buferr[12];
FIL file;
f_mount(0, &fs);
//res = f_open(&file,filename, FA_OPEN_EXISTING | FA_READ);
f_open(&file,"0:8bit.wav", FA_OPEN_EXISTING | FA_READ);
f_read(&file,ChunkID,4, &br);
f_read(&file,ChunkSize,4, &br);
f_read(&file,Format,4, &br);
f_read(&file,Subchunk1ID,4, &br);
f_read(&file,Subchunk1Size,4, &br);
f_read(&file,AudioFormat,2, &br);
f_read(&file,NumChannels,2, &br);
f_read(&file,SampleRate,4, &br);
f_read(&file,ByteRate,4, &br);
f_read(&file,BlockAlign,2, &br); f_read(&file,BitsPerSample,2, &br); f_read(&file,Subchunk2ID,4, &br); f_read(&file,Subchunk2Size,4, &br); f_read(&file,Data,1024, &br);
f_close(&file);
for(i=0;i<4;i++){
sprintf(buferr,"%c",ChunkID[i]); DrawStringAt(0,i,buferr,WHITE,GetBkColor());
}
CChunkSize=LD_DWORD(ChunkSize); sprintf(buferr,"ChunkSize:%d",CChunkSize);
DrawStringAt(1,0,buferr,WHITE,GetBkColor());
for(i=0;i<4;i++){
sprintf(buferr,"%c",Format[i]); DrawStringAt(2,i,buferr,WHITE,GetBkColor());
}
for(i=0;i<4;i++){
sprintf(buferr,"%c",Subchunk1ID[i]);
DrawStringAt(3,i,buferr,WHITE,GetBkColor()); }
sprintf(buferr, "Subchunk1Size:%d", Subchunk1Size[0]); DrawStringAt(4,0,buferr,WHITE,GetBkColor());
sprintf(buferr, "AudioFormat:%d", AudioFormat[0]); DrawStringAt(5,0,buferr,WHITE,GetBkColor());
sprintf(buferr, "NumChannels:%d", NumChannels[0]); DrawStringAt(6,0,buferr,WHITE,GetBkColor());
SamplingRate=LD_DWORD(SampleRate); sprintf(buferr,"SamplingRate:%d",SamplingRate); DrawStringAt(7,0,buferr,WHITE,GetBkColor());
BByteRate=LD_DWORD(ByteRate); sprintf(buferr,"ByteRate:%d",BByteRate); DrawStringAt(8,0,buferr,WHITE,GetBkColor());
sprintf(buferr, "BlockAlign:%d", BlockAlign[0]); DrawStringAt(9,0,buferr,WHITE,GetBkColor());
sprintf(buferr,"BitsPerSample:%d",BitsPerSample[0]; DrawStringAt(10,0,buferr,WHITE,GetBkColor());
for(i=0;i<4;i++){
sprintf(buferr,"%c",Subchunk2ID[i]); DrawStringAt(11,i,buferr,WHITE,GetBkColor()); //data
}
SSubchunk2Size=LD_DWORD(Subchunk2Size);
sprintf(buferr,"Subchunk2Size:%d",SSubchunk2Size; DrawStringAt(12,0,buferr,WHITE,GetBkColor());
}
دیدم کسی جواب نداد!
گفتم خودم دست بکار بشم شروع به خوندن بیت به بیت یک فایل wave کردم.
فعلا توانستم مشخصات یک فایل wave بدست آوردم.
کد های این بخش براتون گذاشتم.
قسمت بعد میریم برای پخشش😄
void load_header (void)
{
unsigned int CChunkSize,SamplingRate,BByteRate,SSubchunk2Size;
int i;
BYTE ChunkID[4];
BYTE ChunkSize[4];
BYTE Format[4];
BYTE Subchunk1ID[4];
BYTE Subchunk1Size[4];
BYTE AudioFormat[2];
BYTE NumChannels[2];
BYTE SampleRate[4];
BYTE ByteRate[4];
BYTE BlockAlign[2];
BYTE BitsPerSample[2];
BYTE Subchunk2ID[4];
BYTE Subchunk2Size[4];
BYTE Data[1024];
char buferr[12];
FIL file;
f_mount(0, &fs);
//res = f_open(&file,filename, FA_OPEN_EXISTING | FA_READ);
f_open(&file,"0:8bit.wav", FA_OPEN_EXISTING | FA_READ);
f_read(&file,ChunkID,4, &br);
f_read(&file,ChunkSize,4, &br);
f_read(&file,Format,4, &br);
f_read(&file,Subchunk1ID,4, &br);
f_read(&file,Subchunk1Size,4, &br);
f_read(&file,AudioFormat,2, &br);
f_read(&file,NumChannels,2, &br);
f_read(&file,SampleRate,4, &br);
f_read(&file,ByteRate,4, &br);
f_read(&file,BlockAlign,2, &br); f_read(&file,BitsPerSample,2, &br); f_read(&file,Subchunk2ID,4, &br); f_read(&file,Subchunk2Size,4, &br); f_read(&file,Data,1024, &br);
f_close(&file);
for(i=0;i<4;i++){
sprintf(buferr,"%c",ChunkID[i]); DrawStringAt(0,i,buferr,WHITE,GetBkColor());
}
CChunkSize=LD_DWORD(ChunkSize); sprintf(buferr,"ChunkSize:%d",CChunkSize);
DrawStringAt(1,0,buferr,WHITE,GetBkColor());
for(i=0;i<4;i++){
sprintf(buferr,"%c",Format[i]); DrawStringAt(2,i,buferr,WHITE,GetBkColor());
}
for(i=0;i<4;i++){
sprintf(buferr,"%c",Subchunk1ID[i]);
DrawStringAt(3,i,buferr,WHITE,GetBkColor()); }
sprintf(buferr, "Subchunk1Size:%d", Subchunk1Size[0]); DrawStringAt(4,0,buferr,WHITE,GetBkColor());
sprintf(buferr, "AudioFormat:%d", AudioFormat[0]); DrawStringAt(5,0,buferr,WHITE,GetBkColor());
sprintf(buferr, "NumChannels:%d", NumChannels[0]); DrawStringAt(6,0,buferr,WHITE,GetBkColor());
SamplingRate=LD_DWORD(SampleRate); sprintf(buferr,"SamplingRate:%d",SamplingRate); DrawStringAt(7,0,buferr,WHITE,GetBkColor());
BByteRate=LD_DWORD(ByteRate); sprintf(buferr,"ByteRate:%d",BByteRate); DrawStringAt(8,0,buferr,WHITE,GetBkColor());
sprintf(buferr, "BlockAlign:%d", BlockAlign[0]); DrawStringAt(9,0,buferr,WHITE,GetBkColor());
sprintf(buferr,"BitsPerSample:%d",BitsPerSample[0]; DrawStringAt(10,0,buferr,WHITE,GetBkColor());
for(i=0;i<4;i++){
sprintf(buferr,"%c",Subchunk2ID[i]); DrawStringAt(11,i,buferr,WHITE,GetBkColor()); //data
}
SSubchunk2Size=LD_DWORD(Subchunk2Size);
sprintf(buferr,"Subchunk2Size:%d",SSubchunk2Size; DrawStringAt(12,0,buferr,WHITE,GetBkColor());
}