home *** CD-ROM | disk | FTP | other *** search
/ Dr. CD ROM (Annual Premium Edition) / premium.zip / premium / MUSICLAB / SOUNDZZ.ZIP / SOUNDZZ.C next >
Text File  |  1989-07-20  |  5KB  |  332 lines

  1. /*    SOUNDZZ.C
  2.  
  3.     Written by: Tom Grubbe
  4.     Date:       07/19/89
  5.  
  6.         This little program was written in Turbo C 2.0 but will also
  7.     compile in version 1.5. It uses no external routines other than the
  8.     Turbo runtime library functions and the functions contained in here.
  9.         This was by no means a difficult program to write (it took less
  10.     than an hour), so feel free to modify, hack, share, or anything else
  11.     you    wish to do with it. It's just here for fun. So have some...
  12.  
  13. */
  14.  
  15. #include <stdio.h>
  16. #include <dos.h>
  17. #include <stdlib.h>
  18. #include <conio.h>
  19.  
  20. void Menu(void);
  21. void Highlight(int y, int c);
  22. void Cursor(int x, int y);
  23. void Boxx(int x, int y, int xx, int yy);
  24. void Quit(void);
  25.  
  26. void FryEgg(void);
  27. void LoNoise(void);
  28. void WhiteNoise(void);
  29. void Chopper(void);
  30. void Zombies(void);
  31. void Whoopie(void);
  32. void Phone(void);
  33. void Crash(void);
  34. void Jungle(void);
  35.  
  36. char *SndMnu[] =    {
  37.     " Fried Egg   ",
  38.     " Low noise   ",
  39.     " White Noise ",
  40.     " Chopper     ",
  41.     " Zombies     ",
  42.     " Whoopie     ",
  43.     " Phone       ",
  44.     " Crash       ",
  45.     " Jungle      ",
  46.     " Exit        "
  47. };
  48.  
  49.  
  50. void main()
  51. {
  52.     int Y=5;
  53.  
  54.     clrscr();
  55.     Menu();
  56.     HighLight(Y, 1);
  57.     for (;;)    {
  58.         HighLight(Y, 1);
  59.         Cursor(0,26);                /* Hide cursor */
  60.         switch (getch())    {
  61.             case 72 :                /* UP */
  62.                 HighLight(Y, 0);
  63.                 if (--Y < 5) Y = 14;
  64.                 break;
  65.             case 80 :                /* DN */
  66.                 HighLight(Y, 0);
  67.                 if (++Y > 14) Y = 5;
  68.                 break;
  69.             case 13 :                 /* CR */
  70.                 switch (Y)    {
  71.                     case  5 : FryEgg();     break;
  72.                     case  6 : LoNoise();    break;
  73.                     case  7 : WhiteNoise(); break;
  74.                     case  8 : Chopper();    break;
  75.                     case  9 : Zombies();    break;
  76.                     case 10 : Whoopie();    break;
  77.                     case 11 : Phone();      break;
  78.                     case 12 : Crash();      break;
  79.                     case 13 : Jungle();     break;
  80.                     case 14 : Quit();
  81.                 }
  82.                 break;
  83.             case 27 :                /* ESC */
  84.             case 'q': Quit();
  85.         }
  86.     }
  87. }
  88.  
  89. void Menu()
  90. {
  91.     int x, y;
  92.     register int i;
  93.  
  94.     x = 34; y = 5;
  95.  
  96.     clrscr();
  97.     Boxx(33,4,47,15);
  98.     for (i=0; i<10; i++, y++)    {
  99.         Cursor(x, y);  cprintf(SndMnu[i]);
  100.     }
  101. }
  102.  
  103. void Highlight(int y, int c)
  104. {
  105.     switch (c)    {
  106.         case 0 : textattr(0x07); break;
  107.         case 1 : textattr(0x70); break;
  108.     }
  109.     Cursor(34,y);
  110.     cprintf(SndMnu[y-5]);
  111. }
  112.  
  113. void Cursor(int x, int y)
  114. {
  115.     union REGS r;
  116.  
  117.     r.h.bh = 0;
  118.     r.h.dl = x;
  119.     r.h.dh = y;
  120.     r.h.ah = 2;        /* BIOS set cursor pos. */
  121.     int86(0x10, &r, &r);
  122. }
  123.  
  124. void Boxx(int x, int y, int xx, int yy)
  125. {
  126.     register int i;
  127.  
  128.     for (i=x+1; i<xx; i++)    {
  129.         Cursor(i,y);  putchar(196);
  130.         Cursor(i,yy); putchar(196);
  131.     }
  132.     for (i=y+1; i<yy; i++)    {
  133.         Cursor(x,i);  putchar(179);
  134.         Cursor(xx,i); putchar(179);
  135.     }
  136.     Cursor(x,y);  putchar(218);
  137.     Cursor(xx,y); putchar(191);
  138.     Cursor(x,yy); putchar(192);
  139.     Cursor(xx,yy);putchar(217);
  140. }
  141.  
  142. void Quit()
  143. {
  144.     textattr(0x07);
  145.     clrscr();
  146.     Cursor(0,0);
  147.     exit(0);
  148. }
  149.  
  150.  
  151. void FryEgg(void)
  152. {
  153.      int i, j;
  154.  
  155.      randomize();
  156.      while( !kbhit() ){
  157.         i=random(40);
  158.         j=random(70);
  159.         sound(i);
  160.         sound(i*100);
  161.         sound(j);
  162.         sound(j*100);
  163.     }
  164.     nosound();
  165.     getch();
  166. }
  167.  
  168. void LoNoise(void)
  169. {
  170.     int i;
  171.  
  172.     while( !kbhit() ){
  173.         for( i=0 ; i<1000 ; ++i ){
  174.             if(kbhit()) break;
  175.             sound(66000);
  176.             sound(78000);
  177.             sound(98000);
  178.             delay(random(10));
  179.         }
  180.     }
  181.     nosound();
  182.     getch();
  183. }
  184.  
  185. void WhiteNoise(void)
  186. {
  187.     int i, j;
  188.  
  189.     randomize();
  190.     while( !kbhit() ){
  191.         for( i=0 ; i<1000 ; ++i ){
  192.             if(kbhit()) break;
  193.             j = random(4);
  194.             sound(100);
  195.             delay(j);
  196.             sound(92000);
  197.             delay(random(10));
  198.         }
  199.     }
  200.     nosound();
  201.     getch();
  202. }
  203.  
  204.  
  205. void Chopper(void)
  206. {
  207.     int i, j, k;
  208.  
  209.     randomize();
  210.     while( !kbhit() ) {
  211.         nosound();
  212.         delay(60);
  213.         for( i=1000, j=1050 ; j>50 ; i+=200, j-=100, ++i, --j ) {
  214.             if( kbhit() ) break;
  215.             k = random(4);
  216.             sound(j);
  217.             delay(k);
  218.             sound(i*10);
  219.         }
  220.     }
  221.     nosound();
  222.     getch();
  223. }
  224.  
  225. void Zombies(void)
  226. {
  227.     int i, j, k;
  228.  
  229.     randomize();
  230.     while( !kbhit() ){
  231.         for( i=1000, j=20 ; j<1000 ; --i, ++j ) {
  232.             if(kbhit()) break;
  233.             k=random(3);
  234.             sound(i);
  235.             delay(k);
  236.             sound(j);
  237.             delay(k);
  238.         }
  239.     }
  240.     nosound();
  241.     getch();
  242. }
  243.  
  244. void Whoopie(void)
  245. {
  246.     int i, j, k;
  247.  
  248.     randomize();
  249.     for( i=20, j=120 ; j<16000 ; i+=20, j+=20, ++i, ++j ) {
  250.         if(kbhit()) break;
  251.         k = random(4);
  252.         sound(j);
  253.         delay(k);
  254.         sound(i);
  255.     }
  256.     for( i=15000, j=16000 ; j>120 ; i-=20, j-=20, --i, --j ) {
  257.         if(kbhit()) break;
  258.         k = random(4);
  259.         sound(j);
  260.         delay(k);
  261.         sound(i);
  262.     }
  263.     sound(120);
  264.     sound(20);
  265.     delay(30);
  266.     nosound();
  267. }
  268.  
  269. void Phone(void)
  270. {
  271.     int i, k;
  272.  
  273.     randomize();
  274.     while( !kbhit() ) {
  275.         for( i=1 ; i<62 ; ++i ) {
  276.             if(kbhit()) break;
  277.             sound(1500);
  278.             delay(15);
  279.             sound(600);
  280.             delay(10);
  281.             nosound();
  282.             delay(20);
  283.         }
  284.         nosound();
  285.         for( i=1 ; i<2500 ; ++i )
  286.             if(kbhit()) break;
  287.     }
  288.     nosound();
  289.     getch();
  290. }
  291.  
  292. void Crash(void)
  293. {
  294.     int i, j, k;
  295.  
  296.     randomize();
  297.     for( i=8031, j=8000 ; j>1 ; i-=.5, j-=2, --i, --j )    {
  298.         if(kbhit()) break;
  299.         k = random(4);
  300.         sound(i);
  301.         delay(k);
  302.         sound(j);
  303.     }
  304.     nosound();
  305. }
  306.  
  307. void Jungle(void)
  308. {
  309.     int  h, i, j, k;
  310.     int g=100, f=100;
  311.  
  312.     randomize();
  313.     while(!kbhit())    {
  314.         for( i=30000,j=9000,h=7500 ; h>4500 ; j-=f,h-=g,++i,--j,--h )    {
  315.             if(kbhit()) break;
  316.             k = random(6);
  317.             g = random(200);
  318.             f = random(300);
  319.             g += 100;
  320.             f += 100;
  321.             sound(j);
  322.             delay(k);
  323.             sound(i);
  324.             delay(k);
  325.             sound(h);
  326.             delay(k);
  327.             sound(f*1000);
  328.         }
  329.     }
  330.     nosound();
  331.     getch();
  332. }