home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-385-Vol-1of3.iso
/
d
/
dir_nm20.zip
/
Dir_NM_2.0
/
NM-Data.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-07-16
|
16KB
|
477 lines
/* ====== NM-Data.c ======
*
* void Find_Filename()
* int Y_Nt(Y,At_high)
* int Nt_Y(Nt,At_high)
* int Nx_nt(step)
* void Nt_nx(step,sn)
* void Showup(fx,fy,five)
* char Map_Letter(Map_x,Map_y)
* int White_Key(Nt,At_high)
* void Clear_Array(Id,Now)
*
*/
#include "NM.h"
void Find_Filename()
{
int i;
Table_Name=(char *)malloc(50);*Table_Name='\0';
if ((filvar=fopen("Dir_Song/IM.Names","r"))!=NULL)
{
setvbuf(filvar,buf,_IOFBF,2048);rewind(filvar);
fgets(Table_Name,50,filvar);
for (i=0;i<Max_kind;i++)
{
In_name[i]=(char *)malloc(50);*In_name[i]='\0';
Old_name[i]=(char *)malloc(50);*Old_name[i]='\0';
fgets(In_name[i],50,filvar);
}
if (filvar != NULL) fclose(filvar);filvar=NULL;
}
else
{
sprintf(Table_Name+strlen(Table_Name),"%s\n","List");
for (i=0;i<Max_kind;i++)
{
In_name[i]=(char *)malloc(50);*In_name[i]='\0';
Old_name[i]=(char *)malloc(50);*Old_name[i]='\0';
switch (i)
{
case 0:strcpy(In_name[i],"Tempo");break;
case 1:strcpy(In_name[i],"Classical");break;
case 2:strcpy(In_name[i],"Waltz");break;
case 3:strcpy(In_name[i],"Serenade");break;
case 4:strcpy(In_name[i],"March");break;
case 5:strcpy(In_name[i],"Quartet");break;
case 6:strcpy(In_name[i],"Ethnic");break;
case 7:strcpy(In_name[i],"African");break;
case 8:strcpy(In_name[i],"Latin American");break;
case 9:strcpy(In_name[i],"Asian");break;
case 10:strcpy(In_name[i],"European");break;
case 11:strcpy(In_name[i],"American Folk");break;
case 12:strcpy(In_name[i],"R & B");break;
case 13:strcpy(In_name[i],"Rock & Roll");break;
case 14:strcpy(In_name[i],"Country");break;
case 15:strcpy(In_name[i],"Heavy Metal");break;
case 16:strcpy(In_name[i]," ");break;
case 17:strcpy(In_name[i]," ");break;
case 18:strcpy(In_name[i],"Pop");break;
case 19:strcpy(In_name[i],"Rap");break;
case 20:strcpy(In_name[i],"Blues");break;
case 21:strcpy(In_name[i],"Soul");break;
case 22:strcpy(In_name[i],"Disco");break;
case 23:strcpy(In_name[i],"Jazz");break;
case 24:strcpy(In_name[i],"Light");break;
case 25:strcpy(In_name[i],"New Age");break;
case 26:strcpy(In_name[i],"Instrumental");break;
case 27:strcpy(In_name[i],"Show Tunes");break;
case 28:strcpy(In_name[i],"Theme Songs");break;
case 29:strcpy(In_name[i],"Films/TV ");break;
case 30:strcpy(In_name[i],"Nature");break;
case 31:strcpy(In_name[i],"Space");break;
case 32:strcpy(In_name[i],"Animal");break;
case 33:strcpy(In_name[i],"Background");break;
case 34:strcpy(In_name[i]," ");break;
case 35:strcpy(In_name[i],"Tempo-Set");break;
}
sprintf(In_name[i]+strlen(In_name[i]),"%c",'\n');
}
}
}
int Y_Nt(Y,At_high)
int Y,At_high;
{
int Nt;
Nt=60;if (At_high<2) Y-=V_Ht/4;
if (At_high==1 || At_high==2)
switch(Y)
{
case -6:Nt=108;break; case -5:Nt=107;break; case -4:Nt=105;break;
case -3:Nt=103;break; case -2:Nt=101;break; case -1:Nt=100;break;
case 0:Nt=98;break; case 1:Nt=96;break; case 2:Nt=95;break;
case 3:Nt=93;break; case 4:Nt=91;break; case 5:Nt=89;break;
case 6:Nt=88;break; case 7:Nt=86;break; case 8:Nt=84;break;
case 9:Nt=83;break; case 10:Nt=81;break; case 11:Nt=79;break;
case 12:Nt=77;break; case 13:Nt=76;break; case 14:Nt=74;break;
case 15:Nt=72;break; case 16:Nt=71;break; case 17:Nt=69;break;
case 18:Nt=67;break; case 19:Nt=65;break; case 20:Nt=64;break;
case 21:Nt=62;break; case 22:Nt=60;break; case 23:Nt=59;break;
case 24:Nt=57;break; case 25:Nt=55;break; case 26:Nt=53;break;
case 27:Nt=52;break; case 28:Nt=50;break; case 29:Nt=48;break;
}
else switch(Y)
{
case 23:Nt=72;break; case 24:Nt=71;break; case 25:Nt=69;break;
case 26:Nt=67;break; case 27:Nt=65;break; case 28:Nt=64;break;
case 29:Nt=62;break; case 30:Nt=60;break; case 31:Nt=59;break;
case 32:Nt=57;break; case 33:Nt=55;break; case 34:Nt=53;break;
case 35:Nt=52;break; case 36:Nt=50;break; case 37:Nt=48;break;
case 38:Nt=47;break; case 39:Nt=45;break; case 40:Nt=43;break;
case 41:Nt=41;break; case 42:Nt=40;break; case 43:Nt=38;break;
case 44:Nt=36;break; case 45:Nt=35;break; case 46:Nt=33;break;
case 47:Nt=31;break; case 48:Nt=29;break; case 49:Nt=28;break;
case 50:Nt=26;break; case 51:Nt=24;break; case 52:Nt=23;break;
case 53:Nt=21;break;
}
return Nt;
}
int Nt_Y(Nt,At_high)
int Nt,At_high;
{
int Y;
Y=26;
if (At_high==1 || At_high==2)
switch(Nt)
{
case 48:Y=29;break; case 50:Y=28;break; case 52:Y=27;break;
case 53:Y=26;break; case 55:Y=25;break; case 57:Y=24;break;
case 59:Y=23;break; case 60:Y=22;break; case 62:Y=21;break;
case 64:Y=20;break; case 65:Y=19;break; case 67:Y=18;break;
case 69:Y=17;break; case 71:Y=16;break; case 72:Y=15;break;
case 74:Y=14;break; case 76:Y=13;break; case 77:Y=12;break;
case 79:Y=11;break; case 81:Y=10;break; case 83:Y=9;break;
case 84:Y=8;break; case 86:Y=7;break; case 88:Y=6;break;
case 89:Y=5;break; case 91:Y=4;break; case 93:Y=3;break;
case 95:Y=2;break; case 96:Y=1;break; case 98:Y=0;break;
}
else switch(Nt)
{
case 21:Y=53;break; case 23:Y=52;break; case 24:Y=51;break;
case 26:Y=50;break; case 28:Y=49;break; case 29:Y=48;break;
case 31:Y=47;break; case 33:Y=46;break; case 35:Y=45;break;
case 36:Y=44;break; case 38:Y=43;break; case 40:Y=42;break;
case 41:Y=41;break; case 43:Y=40;break; case 45:Y=39;break;
case 47:Y=38;break; case 48:Y=37;break; case 50:Y=36;break;
case 52:Y=35;break; case 53:Y=34;break; case 55:Y=33;break;
case 57:Y=32;break; case 59:Y=31;break; case 60:Y=30;break;
case 62:Y=29;break; case 64:Y=28;break; case 65:Y=27;break;
case 67:Y=26;break; case 69:Y=25;break; case 71:Y=24;break;
case 72:Y=23;break;
}
if (At_high<2) Y+=V_Ht/4;
return Y;
}
int Nx_nt(step)
int step;
{
int k;
switch (step)
{
case 0:k=0;break;
case -5:
case 7:k=1;break;
case 2:k=2;break;
case -3:k=3;break;
case 4:k=4;break;
case -1:k=5;break;
case -6:
case 6:k=6;break;
case 1:k=7;break;
case -4:k=8;break;
case 3:k=9;break;
case -2:k=10;break;
case 5:
case -7:k=11;break;
}
return k;
}
void Nt_nx(step,sn)
int step,*sn;
{
int k;
switch (step)
{
case 0:k=0;break;
case -5:
case 7:k=-1;break;
case 2:k=-2;break;
case -3:k=-3;break;
case 4:k=-4;break;
case -1:k=-5;break;
case -6:
case 6:k=-6;break;
case 1:k=-7;break;
case -4:k=-8;break;
case 3:k=-9;break;
case -2:k=-10;break;
case 5:
case -7:k=-11;break;
}
*sn+=k;
}
void Showup(fx,fy,five)
int fx,fy,five;
{
int x,i,j,k,FORLIM1,BI;
char ch,STR1[256];
Rub(fx+1,fy+1,797,82,"RoyalBlue");SetColor("green");
XSetLineAttributes(display,gc,2,0,0,0);DrawRectangle(fx,fy+1,799,83);
XSetLineAttributes(display,gc,1,0,0,0);SetColor("HotPink");
S_bf=(char *)malloc(10);*S_bf='\0';
if (five)
{
for (i=1;i<=11;i++)
{
switch (i)
{
case 1:
case 2:strcpy(S_bf,"D");break;
case 3:strcpy(S_bf,"F");break;
case 4:strcpy(S_bf,"F1");break;
case 5:strcpy(S_bf,"F2");break;
case 6:strcpy(S_bf,"F3");break;
case 7:strcpy(S_bf,"DP");break;
case 8:strcpy(S_bf,"FP");break;
case 9:strcpy(S_bf,"FP1");break;
case 10:strcpy(S_bf,"FP2");break;
case 11:strcpy(S_bf,"FP3");break;
}
FORLIM1=strlen(S_bf);BI=i*40;
for (x=0;x<FORLIM1;x++)
{
ch=S_bf[x];
switch (ch)
{
case 'D':DrawEllipse(fx+BI-30,fy+5,10,8,0,360);
DrawEllipse(fx+BI-30,fy+70,10,8,0,360);
break;
case 'F':FillEllipse(fx+BI-30,fy+5,11,9,0,360);
FillEllipse(fx+BI-30,fy+69,11,9,0,360);
break;
case '1':
case '2':
case '3':sprintf(STR1,"%c",ch);sscanf(STR1,"%ld",&j);
for (k=1;k<=j;k++)
{
DrawEllipse(fx+BI-38,fy-k*4+19,16,19,10,-70);
Line(fx+BI-30,fy-k*4+39,fx+BI-25,fy-k*4+36);
DrawEllipse(fx+BI-27,fy+k*4+47,16,19,-10,70);
Line(fx+BI-18,fy+k*4+47,fx+BI-13,fy+k*4+50);
}
break;
case 'P':Point(fx+BI-15,fy+8);Point(fx+BI-15,fy+70);
break;
}
}
if (i>1)
{
Line(fx+BI-30,fy+9,fx+BI-30,fy+39);
Line(fx+BI-19,fy+47,fx+BI-19,fy+75);
}
}
Point(fx+25,fy+72);
for (i=12;i<=13;i++)
{
BI=i*40;Line(fx+BI-20-12,fy+15,fx+BI-20+12,fy+15);
FillRectangle(fx+BI-20-5,fy+16,10,4);
Line(fx+BI-20-12,fy+70,fx+BI-20+12,fy+70);
FillRectangle(fx+BI-20-5,fy+66,10,4);
}
Point(fx+12*40-15,fy+20);Point(fx+12*40-15,fy+61);
Draw_Silent(fx+539,fy+32);FillEllipse(fx+536,fy+58,5,5,0,360);
Line(fx+536,fy+60,fx+545,fy+58);Line(fx+547,fy+54,fx+536,fy+79);
FillEllipse(fx+575,fy+10,5,5,0,360);FillEllipse(fx+573,fy+15,5,5,0,360);
Line(fx+575,fy+12,fx+584,fy+10);Line(fx+573,fy+17,fx+582,fy+15);
Line(fx+587,fy+5,fx+576,fy+30);FillEllipse(fx+575,fy+58,5,5,0,360);
FillEllipse(fx+573,fy+63,5,5,0,360);FillEllipse(fx+571,fy+68,5,5,0,360);
Line(fx+575,fy+60,fx+584,fy+58);Line(fx+573,fy+65,fx+582,fy+63);
Line(fx+571,fy+70,fx+580,fy+68);Line(fx+587,fy+54,fx+576,fy+79);
Sharp(fx+610,fy+12);Flat(fx+610,fy+55);OutTextXY(fx+652,fy+30,"/");
Point(fx+655,fy+62);Point(fx+655,fy+72);Line(fx+700,fy+7,fx+700,fy+36);
Line(fx+698,fy+51,fx+698,fy+80);Line(fx+702,fy+51,fx+702,fy+80);
Normal(fx+732,fy+57); /* Back to normal sign */
Use_Font("7x14");SetColor("gold");OutTextXY(fx+729,fy+20,"Bar");
SetColor("green");Out_I_XY(fx+729,fy+36,0);
if (now==0) On_High=2;
else
{
SetColor("cyan");XSetLineAttributes(display,gc,2,0,0,0);
Use_Font("7x14");DrawRectangle(fx+756,fy+6,38,35);SetColor("magenta");
DrawRectangle(fx+758,fy+8,34,31);Rub(fx+761,fy+12,28,23,"NavyBlue");
SetColor("cyan");Adjust_High_Low(fx,fy,0);Adjust_Text(fx,fy,0);
}
}
else
{
for (i=0;i<=17;i++)
{
switch (i)
{
case 0:OutTextXY(fx+20,fy+29,"G");OutTextXY(fx+20,fy+77,"F");
break;
case 1:OutTextXY(fx+BI+20,fy+29,"D");Flat(fx+BI+12,fy+52);
OutTextXY(fx+BI+20,fy+77,"B");
break;
case 2:OutTextXY(fx+BI+20,fy+29,"A");Flat(fx+BI+12,fy+52);
OutTextXY(fx+BI+20,fy+77,"E");
break;
case 3:OutTextXY(fx+BI+20,fy+29,"E");Flat(fx+BI+12,fy+52);
OutTextXY(fx+BI+20,fy+77,"A");
break;
case 4:OutTextXY(fx+BI+20,fy+29,"B");Flat(fx+BI+12,fy+52);
OutTextXY(fx+BI+20,fy+77,"D");
break;
case 5:Sharp(fx+BI+11,fy+9);OutTextXY(fx+BI+20,fy+29,"F");
Flat(fx+BI+12,fy+52);OutTextXY(fx+BI+20,fy+77,"G");
break;
case 6:Sharp(fx+BI+11,fy+9);OutTextXY(fx+BI+20,fy+29,"C");
Flat(fx+BI+12,fy+52);OutTextXY(fx+BI+20,fy+77,"C");
break;
case 7:OutTextXY(fx+BI+20,fy+29,"C");
OutTextXY(fx+BI+20,fy+77,"/");
break;
case 8:OutTextXY(fx+BI+20,fy+29,"0");Dot(fx+BI+22,fy+54);
Dot(fx+BI+22,fy+70);
break;
case 9:OutTextXY(fx+BI+20,fy+29,"1");Underline_(fx+BI+19,fy+66,1);
break;
case 10:OutTextXY(fx+BI+20,fy+29,"2");
Underline_(fx+BI+19,fy+66,2);
break;
case 11:OutTextXY(fx+BI+20,fy+29,"3");
Underline_(fx+BI+19,fy+66,3);
break;
case 12:OutTextXY(fx+BI+20,fy+29,"4");
FillEllipse(fx+BI+23,fy+50,5,5,0,360);
break;
case 13:OutTextXY(fx+BI+20,fy+29,"5");
FillEllipse(fx+BI+23,fy+60,5,5,0,360);
break;
case 14:OutTextXY(fx+BI+20,fy+29,"6");
FillEllipse(fx+BI+23,fy+70,5,5,0,360);
break;
case 15:OutTextXY(fx+BI+20,fy+29,"7");
Line(fx+BI+24,fy+49,fx+BI+24,fy+78);
break;
case 16:OutTextXY(fx+BI+20,fy+29,"-");
Line(fx+BI+22,fy+49,fx+BI+22,fy+78);
Line(fx+BI+29,fy+49,fx+BI+29,fy+78);
break;
case 17:Sharp(fx+BI+9,fy+12);Flat(fx+BI+9,fy+49);break;
}
}
}
SetColor("white");
}
char Map_Letter(Map_x,Map_y)
int Map_x,Map_y;
{
char ch;
switch (Map_y)
{
case 0:switch (Map_x)
{
case 0:ch='a';break;case 1:ch='b';break;case 2:ch='c';break;
case 3:ch='d';break;case 4:ch='e';break;case 5:ch='f';break;
case 6:ch='g';break;case 7:ch='h';break;case 8:ch='i';break;
case 9:ch='j';break;case 10:ch='k';break;case 11:ch='l';break;
}
break;
case 1:switch (Map_x)
{
case 0:ch='m';break;case 1:ch='n';break;case 2:ch='o';break;
case 3:ch='p';break;case 4:ch='q';break;case 5:ch='r';break;
case 6:ch='s';break;case 7:ch='t';break;case 8:ch='u';break;
case 9:ch='v';break;case 10:ch='w';break;case 11:ch='x';break;
}
break;
case 2:switch (Map_x)
{
case 0:ch='y';break;case 1:ch='z';break;case 2:ch='0';break;
case 3:ch='1';break;case 4:ch='2';break;case 5:ch='3';break;
case 6:ch='4';break;case 7:ch='5';break;case 8:ch='6';break;
case 9:ch='7';break;case 10:ch='8';break;case 11:ch='9';break;
}
break;
case 3:switch (Map_x)
{
case 0:ch='+';break;case 1:ch='-';break;case 2:ch='*';break;
case 3:ch='/';break;case 4:ch='?';break;case 5:ch='<';break;
case 6:ch='>';break;case 7:ch='$';break;case 8:ch='#';break;
case 9:ch='=';break;case 10:ch='.';break;case 11:ch=':';break;
}
break;
case 4:switch (Map_x)
{
case 0:ch='!';break;case 1:ch='@';break;case 2:ch='_';break;
case 3:ch='|';break;case 4:ch='%';break;case 5:ch='[';break;
case 6:ch=']';break;case 7:ch='&';break;case 8:ch='(';break;
case 9:ch=')';break;case 10:ch='~';break;case 11:ch='^';break;
}
break;
}
return ch;
}
int White_Key(Nt,At_high)
int Nt,At_high;
{
if (((At_high==2 || At_high==1) && Nt !=99 && Nt !=97 && Nt !=94 && Nt !=92 &&
Nt !=90 && Nt !=87 && Nt !=85 && Nt !=82 && Nt !=80 && Nt !=78 &&
Nt !=75 && Nt !=73 && Nt !=70 && Nt !=68 && Nt !=66 && Nt !=63 &&
Nt !=61 && Nt !=58 && Nt !=56 && Nt !=54 && Nt !=51 && Nt !=49) ||
(At_high==0 && Nt !=70 && Nt !=68 && Nt !=66 && Nt !=63 && Nt !=61 &&
Nt !=58 && Nt !=56 && Nt !=54 && Nt !=51 && Nt !=49 && Nt !=46 &&
Nt !=44 && Nt !=42 && Nt !=39 && Nt !=37 && Nt !=34 && Nt !=32 &&
Nt !=30 && Nt !=27 && Nt !=25 && Nt !=22))
return 1;
else return 0;
}
void Clear_Array(Id,Now)
int Id,Now;
{
int i,j;
if (Now>0)
for (j=0;j<3;j++)
{
for (i=0;i<St_Start;i++)
{
St[Id][i][j].nt[0]=0;St[Id][i][j].act=0;St[Id][i][j].vol=Volumn;
St[Id][i][j].nt[1]=St[Id][i][j].nt[2]=St[Id][i][j].nt[3]=200;
}
for (i=St_Start;i<M_Len;i++)
{
St[Id][i][j].nt[0]=200;St[Id][i][j].nt[1]=St[Id][i][j].nt[2]=0;
St[Id][i][j].nt[3]=0;St[Id][i][j].act=0;St[Id][i][j].vol=Volumn;
}
}
else
{
for (i=0;i<4;i++)
{
tmp[Id][i].note=tmp_buf[Id][i].note=0;
tmp[Id][i].act=tmp_buf[Id][i].act=0;
}
for (i=4;i<30;i++)
{
tmp[Id][i].note=tmp_buf[Id][i].note=200;
tmp[Id][i].act=tmp_buf[Id][i].act=200;
}
}
}