sbfd_instrument((char far*)InstrBuf);
draw_screen();
}
else
{
printf("Error on interrupt.\n");
return(0);
}
}
else
{
printf("Sound Blaster Card not found or wrong I/O setting.\n") ;
return(0);
}
}
else
{
printf("BLASTER environment variable not set or incomplete or invalid.\n");
return(0);
}
return(1);
}
draw_screen()
{
int i;
clrscr();
printf("*** FM MIDI Synth *** \n\n");
printf("Channels enabled/disabled\n");
printf("-------------------------\n\n");
printf("0 1 2 3 4 5 6 7 8 9 A B C D E F\n\n");
if(modifiers & 8)
{
switch(scan) {
case 45 : setduration();break; /* Alt-X */
case 47 : setveloc();break; /* Alt-V */
case 25 : loadpatch();break; /* Alt-P */
case 38 : loadpatches();break; /* Alt-L */
case 31 : savepatches();break; /* Alt-S */
case 120 : channel_on[1] = channel_on[1] ^ 1; break;
case 121 : channel_on[2] = channel_on[2] ^ 1; break;
case 122 : channel_on[3] = channel_on[3] ^ 1; break;
case 123 : channel_on[4] = channel_on[4] ^ 1; break;
case 124 : channel_on[5] = channel_on[5] ^ 1; break;
case 125 : channel_on[6] = channel_on[6] ^ 1; break;
case 126 : channel_on[7] = channel_on[7] ^ 1; break;
case 127 : channel_on[8] = channel_on[8] ^ 1; break;
case 128 : channel_on[9] = channel_on[9] ^ 1; break;
case 129 : channel_on[0] = channel_on[0] ^ 1; break;
case 30 : channel_on[10] = channel_on[10] ^ 1; break;
case 48 : channel_on[11] = channel_on[11] ^ 1; break;
case 46 : channel_on[12] = channel_on[12] ^ 1; break;
case 32 : channel_on[13] = channel_on[13] ^ 1; break;
case 18 : channel_on[14] = channel_on[14] ^ 1; break;
case 33 : channel_on[15] = channel_on[15] ^ 1; break;
}
draw_screen();
}
else
{
switch(scan) {
case 44 : playnote(0);break; /* z */
case 31 : playnote(1);break; /* s */
case 45 : playnote(2);break; /* x */
case 32 : playnote(3);break; /* d */
case 46 : playnote(4);break; /* c */
case 47 : playnote(5);break; /* v */
case 34 : playnote(6);break; /* g */
case 48 : playnote(7);break; /* b */
case 35 : playnote(8);break; /* h */
case 49 : playnote(9);break; /* n */
case 36 : playnote(10);break; /* j */
case 50 : playnote(11);break; /* m */
case 51 : playnote(12);break; /* , */
case 16 : playnote(12);break; /* q */
case 3 : playnote(13);break; /* 2 */
case 17 : playnote(14);break; /* w */
case 4 : playnote(15);break; /* 3 */
case 18 : playnote(16);break; /* e */
case 19 : playnote(17);break; /* f */
case 6 : playnote(18);break; /* 5 */
case 20 : playnote(19);break; /* t */
case 7 : playnote(20);break; /* 6 */
case 21 : playnote(21);break; /* y */
case 8 : playnote(22);break; /* 7 */
case 22 : playnote(23);break; /* u */
case 23 : playnote(24);break; /* i */
case 78 : if(octave < 7) octave++;break;
case 74 : if(octave > 2) octave--;break;
}
}
return(1);
}
loadpatch()
{
FILE* f;
char patchname[80],patchnumstr[10];
clrscr();
printf("Name of single patch to load: ");
gets(patchname);
printf("Patch number to load patch into (0-127): ");
gets(patchnumstr);