home *** CD-ROM | disk | FTP | other *** search
/ ftp.4front-tech.com / ftp.4front-tech.com.tar / ftp.4front-tech.com / ossfree / snd-util-3.8.tar.gz / snd-util-3.8.tar / sndkit / v30 / music / tempo.c < prev   
C/C++ Source or Header  |  1995-03-03  |  1KB  |  72 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <fcntl.h>
  5. #include <sys/soundcard.h>
  6.  
  7. #define BUFLEN 1024
  8. SEQ_DEFINEBUF(4*BUFLEN);
  9.  
  10. int seqfd;
  11. int mididev=3;
  12. int tempo=60;
  13. int timebase=192;
  14. int delay=10;
  15.  
  16. void
  17. seqbuf_dump ()
  18. {
  19.   if (_seqbufptr)
  20.     if (write (seqfd, _seqbuf, _seqbufptr) == -1)
  21.       {
  22.     perror ("write /dev/sequencer");
  23.     exit (-1);
  24.       }
  25.   _seqbufptr = 0;
  26. }
  27.  
  28. main (int argc, char *argv[])
  29. {
  30.   int i, tmp, n, p;
  31.   struct midi_info info;
  32.  
  33.   int cbkfd;    /* Sysex file */
  34.   char cbk_name[1024];
  35.  
  36.   if (argc>1) delay=atoi(argv[1]);
  37.   if (argc>2) tempo=atoi(argv[2]);
  38.   if (argc>3) timebase=atoi(argv[3]);
  39.  
  40.   if ((seqfd = open ("/dev/sequencer2", O_RDWR, 0)) == -1)
  41.     {
  42.       perror ("/dev/sequencer");
  43.       exit (-1);
  44.     }
  45.  
  46.     tmp=timebase;
  47.     if (ioctl(seqfd, SNDCTL_TMR_TIMEBASE, &tmp)==-1)
  48.     {
  49.         perror("Set timebase");
  50.         exit(-1);
  51.     }
  52.  
  53.     tmp = tempo;
  54.     if (ioctl(seqfd, SNDCTL_TMR_TEMPO, &tmp)==-1)
  55.     {
  56.         perror("Set tempo");
  57.         exit(-1);
  58.     }
  59.  
  60.     SEQ_START_TIMER();
  61.     while (1)
  62.     {
  63.         SEQ_START_NOTE(mididev, 9, 60, 64);
  64.         SEQ_DELTA_TIME(delay);
  65.         SEQ_STOP_NOTE(mididev, 9, 60, 64);
  66.         SEQ_DELTA_TIME(delay);
  67.     }
  68.  
  69.     exit(0);
  70.  
  71. }
  72.