home *** CD-ROM | disk | FTP | other *** search
/ Audio 4.94 - Over 11,000 Files / audio-11000.iso / msdos / sndbords / proaudio / sdk_ex / sdk_ex.arj / SDK_EX1.C next >
C/C++ Source or Header  |  1993-10-17  |  2KB  |  71 lines

  1. /*
  2.  *  Program: SDK_EX1.C
  3.  *   Author: Philip VanBaren
  4.  *  Purpose: This program demonstrates how to use the Media Vision SDK routines
  5.  *           to do output a single block of data.
  6.  */
  7.  
  8. #include <math.h>
  9. #include <stdio.h>
  10. #include <conio.h>
  11.  
  12. #include <pcmio.h>
  13.  
  14. extern int DMARunning;     /* SDK flag that indicates when DMA has been started */
  15.  
  16. #define IRQ -1             /* -1 means use the default value */
  17. #define DMA -1             /* -1 means use the default value */
  18. #define DMASize 16         /* 16k DMA buffer */
  19. #define DMADivisions 4     /* 4 divisions in this buffer */
  20.  
  21. #define SamplingRate 22050
  22. #define StereoFlag 0       /* If this flag is 1, data is interleaved left/right */
  23. #define CompressionFlag 0
  24. #define SampleSize 16      /* Size of samples, 8 or 16 bits */
  25.  
  26. #define BUF_LEN 20000
  27.  
  28. int out_buf[BUF_LEN];
  29.  
  30. void main(void)
  31. {
  32.    /*
  33.     *  Put some meaningful information in out_buf here
  34.     */
  35.    int i;
  36.    for(i=0;i<BUF_LEN;i++)
  37.       out_buf[i]=floor(20000*sin(2*M_PI*0.1*i));
  38.  
  39.    /*
  40.     *  Initialize ProAudio stuff
  41.     */
  42.    if(OpenPCMBuffering(DMA,IRQ,DMASize,DMADivisions)!=0)
  43.       puts("Error trying to open PCM buffering.");
  44.    else if(PCMState(SamplingRate,StereoFlag,CompressionFlag,SampleSize)!=0)
  45.       puts("Error setting sample rate.");
  46.    else
  47.    {
  48.       if(PlayThisBlock((char *)out_buf,(long)BUF_LEN*2,NULL)!=0)
  49.       {
  50.          ClosePCMBuffering();
  51.          puts("Error playing block.");
  52.       }
  53.       else
  54.       {
  55.          /*
  56.           *  Wait for the DMA to end (which means playback is complete).
  57.           */
  58.          while(!kbhit() && DMARunning);
  59.       }
  60.    }
  61.    /*
  62.     *  You MUST call this function before ending the program, else things won't
  63.     *  work right the next time you try to run the program.  This is critical to
  64.     *  remember when debugging the program, because in debugging you often quit the
  65.     *  program before it runs to completion.  The only way I know of to recover
  66.     *  if this function is NOT called is to reboot the computer!
  67.     */
  68.    ClosePCMBuffering();
  69. }
  70.  
  71.