home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / audio / tracker / sparc_audio.c < prev    next >
C/C++ Source or Header  |  2014-05-19  |  3KB  |  155 lines

  1. /* sparc_audio.h */
  2.  
  3. /* $Author: espie $
  4.  * $Id: sparc_audio.c,v 2.5 1991/12/04 14:04:15 espie Exp espie $
  5.  * $Revision: 2.5 $
  6.  * $Log: sparc_audio.c,v $
  7.  * Revision 2.5  1991/12/04  14:04:15  espie
  8.  * Minor fix.
  9.  *
  10.  * Revision 2.4  1991/12/04  08:28:53  espie
  11.  * Separated mix/stereo stuff.
  12.  *
  13.  * Revision 2.3  1991/12/03  20:43:46  espie
  14.  * Added possibility to get back to MONO for the sgi.
  15.  *
  16.  * Revision 2.2  1991/12/03  18:07:38  espie
  17.  * Added stereo capabilities to the indigo version.
  18.  *
  19.  * Revision 2.1  1991/11/18  01:10:45  espie
  20.  * Minor corrections.
  21.  *
  22.  * Revision 2.0  1991/11/17  21:42:08  espie
  23.  * New version.
  24.  *
  25.  * Revision 1.6  1991/11/16  15:42:43  espie
  26.  * Can't remember what, must be tabs.
  27.  *
  28.  * Revision 1.5  1991/11/08  14:25:55  espie
  29.  * We now have to return frequency.
  30.  *
  31.  * Revision 1.4  1991/11/07  20:12:34  espie
  32.  * Minor problem with version id.
  33.  *
  34.  * Revision 1.3  1991/11/07  20:11:10  espie
  35.  * Added embedded version id.
  36.  *
  37.  * Revision 1.2  1991/11/04  13:23:59  espie
  38.  * I don't know...
  39.  *
  40.  * Revision 1.1  1991/11/03  22:46:57  espie
  41.  * Initial revision
  42.  *
  43.  *
  44.  */
  45.  
  46. #include <stdio.h>
  47. #include "extern.h"
  48. #include "machine.h"
  49.      
  50.  
  51. static char *id = "$Id: sparc_audio.c,v 2.5 1991/12/04 14:04:15 espie Exp espie $";
  52.  
  53. FILE *audio;
  54.  
  55. int open_audio(frequency)
  56. int frequency;
  57.     {
  58.     audio = fopen("/dev/audio", "w");
  59.     if (audio == NULL)
  60.         {
  61.         fprintf(stderr, "Error: could not open audio\n");
  62.         exit(10);
  63.         }
  64.     return 8000;
  65.     }
  66.  
  67. void set_mix(percent)
  68. int percent;
  69.     {
  70.         /* void operation */
  71.     }
  72.  
  73.  
  74. int sign(x)
  75. unsigned char x;
  76.     {
  77.     return x;
  78.     }
  79.  
  80. /************************************************************************/
  81. /*      For routine 'cvt' only                                          */
  82. /************************************************************************/
  83. /*      Copyright 1989 by Rich Gopstein and Harris Corporation          */
  84. /************************************************************************/
  85.  
  86. unsigned int cvt(ch)
  87. int ch;
  88.     {
  89.     int mask;
  90.  
  91.     if (ch < 0)
  92.         {
  93.         ch = -ch;
  94.         mask = 0x7f;
  95.         }
  96.     else
  97.         mask = 0xff;
  98.  
  99.     if (ch < 32)
  100.         {
  101.         ch = 0xF0 | 15 - (ch / 2);
  102.         }
  103.     else if (ch < 96)
  104.         {
  105.         ch = 0xE0 | 15 - (ch - 32) / 4;
  106.         }
  107.     else if (ch < 224)
  108.         {
  109.         ch = 0xD0 | 15 - (ch - 96) / 8;
  110.         }
  111.     else if (ch < 480)
  112.         {
  113.         ch = 0xC0 | 15 - (ch - 224) / 16;
  114.         }
  115.     else if (ch < 992)
  116.         {
  117.         ch = 0xB0 | 15 - (ch - 480) / 32;
  118.         }
  119.     else if (ch < 2016)
  120.         {
  121.         ch = 0xA0 | 15 - (ch - 992) / 64;
  122.         }
  123.     else if (ch < 4064)
  124.         {
  125.         ch = 0x90 | 15 - (ch - 2016) / 128;
  126.         }
  127.     else if (ch < 8160)
  128.         {
  129.         ch = 0x80 | 15 - (ch - 4064) /  256;
  130.         }
  131.     else
  132.         {
  133.         ch = 0x80;
  134.         }
  135.     return (mask & ch);
  136.     }
  137.  
  138.  
  139. void output_samples(left, right)
  140. int left, right;
  141.     {
  142.     fputc(cvt((left + right)/16), audio);
  143.     }
  144.  
  145. void flush_buffer()
  146.     {
  147.     }
  148.  
  149.  
  150. void close_audio()
  151.     {
  152.     fclose(audio);
  153.     }
  154.  
  155.