// turbo c code
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include "graphics.h"
FILE *fp1, *fp2;
void main()
{
int channel1=2, amplitude=3, epd=100, pixel=2, y=300, r=3, pronun1, pronun2;
char *volume[10000]; //, filename[30], *fnstring="c:\tc";
unsigned long sample=1, frmnum=1, zcrnum=1, i;
long frame[10000], zcr[10000], zcrslope[10000], frmslope[10000];
short mode;
int frmsize=128*channel1, overlap=64*channel1;
frame[1]=0, zcr[1]=0, frmslope[0]=0, zcrslope[0]=0;
// file I/O
void clrscr();
// printf("Input file name : ");
// scanf("%s", &filename);
// strcat(fnstring, filename);
//if((fp1=fopen("c:chil.wav", "r"))!=NULL)
//fp2=fopen("sound.dat", "w+");
//else
//{
//printf("File not found\n");
//exit(1);
//}
fp1=fopen("chil.wav", "r");
// fp2=fopen("sound.dat", "w");
fseek(fp1, 44L, 0);
while((fread(volume[sample], channel1 , 1, fp1))!=NULL)
{
long prevol=(atol(volume[sample-1]));
long nowvol=(atol(volume[sample]));
// fwrite(volume[sample], channel1, 1, fp2);
i=0;
frame[frmnum]=frame[frmnum]+(labs(nowvol));
if(prevol*nowvol<=0)
zcr[zcrnum]=zcr[zcrnum]+1;
if(sample==(frmsize+(i*overlap)))
{
frmnum=frmnum+1;
zcrnum=zcrnum+1;
fseek(fp1, -overlap, 1);
sample=sample-overlap;
}
sample=sample+1;
i=i+1;
} // file I/O end
fclose(fp1); // fclose(fp2);
// 1
unsigned long preslope=frmslope[i-1]*zcrslope[i-1];
unsigned long nowslope=frmslope[i]*zcrslope[i];
for(i=1;i<=(ceil(frmnum/2));i++)
{
zcrslope[1]=(labs(zcr[i+1]-zcr[i]));
frmslope[i]=(labs(frame[i+1]-frame[i]));
if(preslope<=nowslope)
pronun1=i;
}
// 2
for(i=((frmnum/2)+1);i<=(frmnum-1);i++)
{
zcrslope[i]=(labs(zcr[i+1]-zcr[i]));
frmslope[i]=(labs(frame[i+1]-frame[i]));
if(preslope<=nowslope)
{
if(zcr[i]>epd){
pronun2=i;
goto graph; }
}
}
// graph
graph:
int graphdriver=DETECT, graphmode;
initgraph(&graphdriver, &graphmode, " ");
cleardevice();
//int gdr, gmode;
//gdr=DETECT; // autodetect of graphic driver
//initgraph(&gdr,&gmode,"..\\bgi");
for(mode=1;mode<=3;mode++)
{
line(pixel, y*mode, sample*pixel, y*mode);
switch(mode)
{
case 1: // timbre
for(i=1;volume[i+1]!=NULL;i++)
{
if(volume[i+1]!=NULL)
line(pixel*i, (y*mode)-(amplitude*(*volume[i])), pixel*(i+1), (y*mode)-(amplitude*(*volume[i+1])));
}
break;
case 2: // volume
for(i=1;i<=frmnum;i++)
{
circle(pixel*(frmsize+((i-1)*overlap)), (y*mode)-(amplitude*frame[i]), r);
if ((i+1)<=frmnum)
line(pixel*(frmsize+((i-1)*overlap)), (y*mode)-(amplitude*frame[i]), pixel*(frmsize+(i*overlap)), (y*mode)-(amplitude*frame[i+1]));
}
break;
default: // zcr
for(i=1;i<=zcrnum;i++)
{
circle(pixel*(frmsize+((i-1)*overlap)), (y*mode)-(amplitude*zcr[i]), r);
if((i+1)<=zcrnum)
line(pixel*(frmsize+((i-1)*overlap)), (y*mode)-(amplitude*zcr[i]), pixel*(frmsize+(i*overlap)), (y*mode)-(amplitude*zcr[i+1]));
}
break;
} // switch end
} // for end
line(pixel*pronun1, y-(y*(3/4)), pixel*pronun1, (y*3)+(y*(1/4)));
line(pixel*pronun2, y-(y*(3/4)), pixel*pronun2, (y*3)+(y*(1/4)));
void closegraph();
} // main end
여기서 wav파일이 안읽히는 이유가 뭔지 모르겠네요... 에러랑 경고는 다 제거 했는데....
전 도저히 모르겠네요.... 부탁드려요.... 제발 가르쳐주세요....
|