home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 1 / GoldFishApril1994_CD1.img / d1xx / d101 / midi / dev / example / tsx.c < prev   
C/C++ Source or Header  |  1987-09-05  |  2KB  |  78 lines

  1. /* simplified transmit sys/ex file */
  2. /*    actually transmits entire contents of file, not just sys/ex */
  3.  
  4. /*
  5.     describes usage of PutMidiStream() limited buffer size and unknown
  6.     stream length.
  7. */
  8.  
  9. #include <midi/midi.h>
  10. #include <functions.h>
  11. #include <fcntl.h>
  12.  
  13. void *MidiBase;
  14.  
  15. static int fi;                /* input file descriptor */
  16. UBYTE buf[512];             /* buffer used for transfer */
  17.  
  18. main(argc,argv)
  19. char **argv;
  20. {
  21.     struct MSource *source=0;
  22.     struct MRoute *route=0;
  23.     static struct MRouteInfo routeinfo = { -1, -1 };    /* support all msg's */
  24.     extern short Enable_Abort;
  25.     char *fname;
  26.     long fillbuffer();
  27.  
  28.     printf ("Transmit Sys/Ex\n");
  29.     Enable_Abort = 0;            /* disable auto CTRL-C handling */
  30.  
  31.     if (argc < 2) {
  32.     printf ("usage: tsx <file>\n");
  33.     exit (1);
  34.     }
  35.  
  36.     fname = argv[1];            /* get file name */
  37.  
  38.     if (!(MidiBase = OpenLibrary (MIDINAME,MIDIVERSION))) {
  39.     printf ("can't open midi.library\n");
  40.     goto clean;
  41.     }
  42.                     /* create our source node (private) */
  43.     if (!(source = CreateMSource (NULL,NULL))) {
  44.     printf ("can't create Source\n");
  45.     goto clean;
  46.     }
  47.                     /* create our route to MidiOut */
  48.     if (!(route = MRouteSource (source,"MidiOut",&routeinfo))) {
  49.     printf ("can't create Route (can't find MidiOut?)\n");
  50.     goto clean;
  51.     }
  52.                     /* open input file */
  53.     if ( (fi=open(fname,O_RDONLY)) == -1) {
  54.     printf ("can't open %s\n",fname);
  55.     goto clean;
  56.     }
  57.                     /* convert file to midi messages */
  58.     PutMidiStream (source,fillbuffer,buf,(long)sizeof buf,0L);
  59.  
  60. clean:
  61.     if (route) DeleteMRoute (route);
  62.     if (source) DeleteMSource (source);
  63.     if (MidiBase) CloseLibrary (MidiBase);
  64. }
  65.  
  66.  
  67.  
  68. /* fill our buffer with data from the file, called by PutMidiStream() */
  69.  
  70. static
  71. long fillbuffer()
  72. {
  73.     register long len;
  74.  
  75.     geta4();                /* Aztec small data model */
  76.     return (len = read(fi,buf,sizeof buf)) == -1 ? 0 : len;
  77. }
  78.