| 
							- /******************************************/
 - /*
 -   Example program to read N channels of audio data that are streamed
 -   over a network connection.
 - 
 -   by Gary P. Scavone, 2000
 - 
 -   NOTE: This program makes use of blocking audio input/output
 -   routines.  On systems where the underlying audio API is based on a
 -   callback scheme (Macintosh OS-X, Windows ASIO, and Linux JACK),
 -   these routines are not fully robust (over/underruns can happen with
 -   some frequency).  See the STK tutorial for example programs using
 -   callback schemes and/or visit the RtAudio tutorial page
 -   (http://music.mcgill.ca/~gary/rtaudio/) for more information.
 - 
 -   This program is currently written to play the input data in
 -   realtime.  However, it is simple to replace the instance of RtWvOut
 -   with FileWvOut for writing to a soundfile.
 - 
 -   The streamed data format is assumed to be signed 16-bit integers.
 -   However, both InetWvIn and InetWvOut can be initialized to
 -   read/write any of the defined StkFormats.
 - 
 -   The class InetWvIn sets up a socket server and waits for a
 -   connection.  Therefore, this program needs to be started before the
 -   streaming client.  This program will terminate when the socket
 -   connection is closed.
 - */
 - /******************************************/
 - 
 - #include "InetWvIn.h"
 - #include "RtWvOut.h"
 - #include <cstdlib>
 - 
 - using namespace stk;
 - 
 - void usage(void) {
 -   // Error function in case of incorrect command-line
 -   // argument specifications.
 -   std::cout << "\nuseage: inetIn N fs \n";
 -   std::cout << "    where N = number of channels,\n";
 -   std::cout << "    and fs = the data sample rate.\n\n";
 -   exit( 0 );
 - }
 - 
 - int main(int argc, char *argv[])
 - {
 -   // Minimal command-line checking.
 -   if ( argc != 3 ) usage();
 - 
 -   Stk::showWarnings( true );
 -   Stk::setSampleRate( atof( argv[2] ) );
 -   int channels = (int) atoi( argv[1] );
 -   StkFrames frame( 1, channels );
 - 
 -   // Create instances and pointers.
 -   InetWvIn input;
 -   RtWvOut *output = 0;
 - 
 -   // Listen for a socket connection.
 -   try {
 -     //input.listen( 2006, channels, Stk::STK_SINT16, Socket::PROTO_UDP );
 -     input.listen( 2006, channels, Stk::STK_SINT16, Socket::PROTO_TCP );
 -   }
 -   catch ( StkError & ) {
 -     goto cleanup;
 -   }
 - 
 -   // Open the realtime output device.
 -   try {
 -     output = new RtWvOut( channels );
 -   }
 -   catch ( StkError & ) {
 -     goto cleanup;
 -   }
 - 
 -   // Here's the runtime loop.
 -   while ( input.isConnected() )
 -     output->tick( input.tick( frame ) );
 - 
 -  cleanup:
 -   delete output;
 -   return 0;
 - }
 
 
  |