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

  1. /* simplified Hex Transmit to midi */
  2. /*
  3.     Shows usage of PutMidiStream() when buffer size is known and of managable
  4.     size.
  5. */
  6.  
  7.  
  8. #include <midi/midi.h>
  9. #include <functions.h>
  10.  
  11. void *MidiBase;
  12.  
  13. main (argc,argv)
  14. char **argv;
  15. {
  16.     struct MSource *source=0;
  17.     struct MRoute *route=0;
  18.     static struct MRouteInfo routeinfo = { -1, -1 };    /* route spec's: transmit all */
  19.     char buf[128];        /* buffer used for midi transfer */
  20.     long len;
  21.     extern int Enable_Abort;
  22.  
  23.     Enable_Abort = 0;        /* disable auto CTRL-C termination */
  24.  
  25.     if (argc < 2) {
  26.     printf ("MIDI Hex Transmit\n");
  27.     printf ("usage: ht <hex byte>...\n");
  28.     exit (1);
  29.     }
  30.  
  31.     if (!(MidiBase = OpenLibrary (MIDINAME,MIDIVERSION))) {
  32.     printf ("can't open midi.library\n");
  33.     goto clean;
  34.     }
  35.                 /* create our Source node (private) */
  36.     if (!(source = CreateMSource (NULL,NULL))) {
  37.     printf ("can't create Source\n");
  38.     goto clean;
  39.     }
  40.                 /* create out Route to MidiOut */
  41.     if (!(route = MRouteSource (source,"MidiOut",&routeinfo))) {
  42.     printf ("can't create Route (can't find MidiOut?)\n");
  43.     goto clean;
  44.     }
  45.                 /* parse the command line for hex bytes, make into an array */
  46.     len = makestream (buf,argc-1,argv+1);
  47.                 /* convert array to midi messages and send */
  48.     PutMidiStream (source,NULL,buf,len,len);
  49.  
  50. clean:                /* clean up */
  51.     if (route) DeleteMRoute (route);
  52.     if (source) DeleteMSource (source);
  53.     if (MidiBase) CloseLibrary (MidiBase);
  54. }
  55.  
  56. makestream (buf,argc,argv)    /* convert args into an array of bytes, return length */
  57. char *buf;
  58. char **argv;
  59. {
  60.     int len=0;
  61.  
  62.     while (argc--) {
  63.     *buf++ = atox(*argv++);
  64.     len++;
  65.     }
  66.     return len;
  67. }
  68.  
  69.  
  70. atox(cp)            /* like atoi() but read string as hex rather than decimal */
  71. char *cp;
  72. {
  73.     int x;
  74.  
  75.     sscanf (cp,"%x",&x);
  76.     return x;
  77. }
  78.