Specifications
CONSTRUCTION
void SetEnvVariables(){}
void SaveFile(){}
void main()
{
int ch;
textbackground(BLACK);textcolor(LIGHTGRAY);
clrscr();
_setcursortype(_NOCURSOR);
DrawScreen();
MenuInitialise();
sFileName[0]=0;
strcpy(sPlayBackRate,”22400");
for(;;)
{
DisplayTip(“Ready”);
ch=getch();
if(ch==0) ch=getch();
ch+=300;
switch(ch)
{
case AltF:ch=ShowMenu(MNU_FILE);break;
case AltE:ch=ShowMenu(MNU_EFFECT);break;
case AltO:ch=ShowMenu(MNU_OPERATION);
break;
}
switch(ch)
{
case FILE_EXIT:
ch=AltX;
break;
case FILE_OPEN:
if(DisplayDialog(FILE_OPEN))
if(mOpen())
{
for(int i=0;i<5;i++)
Menu[MNU_EFFECT].Enabled[i]=TRUE;
Menu[MNU_OPERATION].Enabled[0]=TRUE;
for(i=0;i<2;i++)
{
Menu[MNU_FADEIN].Enabled[i]=TRUE;
Menu[MNU_FADEOUT].Enabled[i]=TRUE;
}
}
break;
case FILE_SAVE:
/*if(DisplayDialog(FILE_SAVE))mSave();*/
break;
case FADEIN_LINEAR:
FadeCommon(FADEIN,LINEAR);
break;
case FADEIN_EXP:
FadeCommon(FADEIN,EXPONENTIAL);
break;
case FADEOUT_LINEAR:
FadeCommon(FADEOUT,LINEAR);
break;
case FADEOUT_EXP:
FadeCommon(FADEOUT,EXPONENTIAL);
break;
case REVERSE:
ReverseWave();
break;
case PLAYBACK_RATE:
if(DisplayDialog(PLAYBACK_RATE)==FALSE)
SetPlayBackRate(0);
else
SetPlayBackRate(1);
break;
case PLAY:
mPlay();
break;
}
if(ch==AltX)
{
_setcursortype(_NORMALCURSOR);
textcolor(LIGHTGRAY);
textbackground(BLACK);
clrscr();
printf(“MPLAYER Ver.1.0\n”);
printf(“———————\n”);
printf(“\tM.Somasundaram - msoms@vsnl.com\n
\tN.V.Venkatarayalu - v_rayalu@vsnl.com\n\n”);
break;
}
}
}
SOUNDS.H
#include “Globals.h”
/////////// Playback Sounds ///////////////
void mPlay(void)
{
FILE *fp;
unsigned char Sample;
clock_t t1;
long k=0,t=0,i=0;
fp=fopen(“test.aud”,“rb”);
t1=clock();
while(clock()-t1<18.2){
if(k<RateOfPlayBack){
fgetc(fp);
outp(0x37a,0);
if(feof(fp)) break;
t++;}
k++;}
i=k/(RateOfPlayBack+2000);
k=0;rewind(fp);
t1=clock();
while(clock()-t1<18.2){
if(k%i==0){
fgetc(fp);
outp(0x37a,0);
if(feof(fp)) break;
t++;
}
if(k>0) k=k;
k++;}
i=k/(RateOfPlayBack+2000);
k=0;t=0;rewind(fp);
while(feof(fp)==FALSE)
{
t1=clock();
if(k%i==0){
Sample=(unsigned char)fgetc(fp);
outp(DATA_OUT,Sample);
t++;}
k++;
}
fclose(fp);
outp(DATA_OUT,0);
}
///////////// Fade Common Function ////////////////
void FadeCommon(char far InOrOut,char far
Type)
{
FILE *fp, *fpt;
long double i;
long double step;
long double attn1;
fp=fopen(“test.aud”,“rb”);
fpt=fopen(“tmp.aud”,“wb”);
step=1.0/NoSamples;
if(InOrOut==FADEIN)
attn1=0;
else
{
attn1=1;
step=-step;
}
if(Type==LINEAR)
for(i=0.0;i<NoSamples;i++)
{
attn1+=step;
fputc(128+(unsigned char)((long double)(fgetc(fp)-
128)*attn1),fpt);
}
else
for(i=0.0;i<NoSamples;i++)
{
attn1=exp(i*step);
fputc(128+(unsigned char)((long double)(fgetc(fp)-
128)*attn1),fpt);
}
fclose(fpt);
fclose(fp);
unlink(“test.aud”);
rename(“tmp.aud”,”test.aud”);
}
/////////////// Reverse Wave File ////////////////
void ReverseWave(void)
{
FILE *fp, *fpt;
long double i;
fp=fopen(“test.aud”,“rb”);
fpt=fopen(“tmp.aud”,“wb”);
for(i=0.0;i<NoSamples;i++)
{
fseek(fp,-(long)i,SEEK_END);
fputc(fgetc(fp),fpt);
}
fclose(fpt);
fclose(fp);
unlink(“test.aud”);
rename(“tmp.aud”,”test.aud”);
}
/////////////// Set Playback rate ///////////////
void SetPlayBackRate(long rate)
{
if(rate<65535)
{
if(rate!=0)
{
rate=atol(sPlayBackRate);
RateOfPlayBack=rate;
}
ultoa(RateOfPlayBack,sPlayBackRate,10);
}
return;
}
/////// Open a wav file and set parameters ///////
BOOL mOpen(void)
{
void DisplayTip(char *);
int TYPE_OF_OUTPUT=MONO_OUTPUT;
FILE *fsource, *fdest;
fsource=fopen(sFileName,“rb”);
if(fsource!=NULL)
{
fdest=fopen(“test.aud”,“wb”);
RIFF riff;
WAVE wave;
DATA data;
fread(&riff,sizeof(riff),1,fsource);
fread(&wave,sizeof(wave),1,fsource);
fseek(fsource,20+wave.fmt.fLen,SEEK_SET);
fread(&data,sizeof(data),1,fsource);
if(strncmpi(data.dID,“FACT”,4)==0){
fseek(fsource,data.dLen,SEEK_CUR);
fread(&data,sizeof(data),1,fsource);
}
if(!(strncmpi(riff.rID,“RIFF”,4)==0 && strncmpi
(wave.wID,“WAVE”,4)==0 && strncmpi(data.dID,
“DATA”,4)==0 && strncmpi(wave.fmt.fID,“fmt
”,4)==0 && wave.fmt.wFormatTag==PCM &&
wave.fmt.nChannels<=6))
{
printf(“\a”);
DisplayTip(“Unrecognizable Format -Not PCM
8-bit.”);
return FALSE;
}
unsigned long dlen=data.dLen;
char array[6];int arrayi[6];
int nChannels=wave.fmt.nChannels;
SamplingFrequency=PBR=RateOfPlayBack=
wave.fmt.nSamplesPerSec;
ultoa(RateOfPlayBack,sPlayBackRate,10);
NoSamples=(dlen/nChannels)*TYPE_OF_
80