sdl_c.c
上传用户:nini_0081
上传日期:2022-07-21
资源大小:2628k
文件大小:4k
源码类别:

多媒体编程

开发平台:

DOS

  1. /* 
  2.     TiMidity -- Experimental MIDI to WAVE converter
  3.     Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.fi>
  4.     This program is free software; you can redistribute it and/or modify
  5.     it under the terms of the GNU General Public License as published by
  6.     the Free Software Foundation; either version 2 of the License, or
  7.     (at your option) any later version.
  8.     This program is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11.     GNU General Public License for more details.
  12.     You should have received a copy of the GNU General Public License
  13.     along with this program; if not, write to the Free Software
  14.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  15.     sdl_c.c
  16.     Minimal control mode -- no interaction, just stores messages.
  17.     */
  18. #include <stdio.h>
  19. #include <stdlib.h>
  20. #include <stdarg.h>
  21. #include "config.h"
  22. #include "common.h"
  23. #include "output.h"
  24. #include "ctrlmode.h"
  25. #include "instrum.h"
  26. #include "playmidi.h"
  27. static void ctl_refresh(void);
  28. static void ctl_total_time(int tt);
  29. static void ctl_master_volume(int mv);
  30. static void ctl_file_name(char *name);
  31. static void ctl_current_time(int ct);
  32. static void ctl_note(int v);
  33. static void ctl_program(int ch, int val);
  34. static void ctl_volume(int channel, int val);
  35. static void ctl_expression(int channel, int val);
  36. static void ctl_panning(int channel, int val);
  37. static void ctl_sustain(int channel, int val);
  38. static void ctl_pitch_bend(int channel, int val);
  39. static void ctl_reset(void);
  40. static int ctl_open(int using_stdin, int using_stdout);
  41. static void ctl_close(void);
  42. static int ctl_read(int32 *valp);
  43. static int cmsg(int type, int verbosity_level, char *fmt, ...);
  44. /**********************************/
  45. /* export the interface functions */
  46. #define ctl sdl_control_mode
  47. ControlMode ctl= 
  48. {
  49.   "SDL interface", 's',
  50.   1,0,0,
  51.   ctl_open,NULL, ctl_close, ctl_read, cmsg,
  52.   ctl_refresh, ctl_reset, ctl_file_name, ctl_total_time, ctl_current_time, 
  53.   ctl_note, 
  54.   ctl_master_volume, ctl_program, ctl_volume, 
  55.   ctl_expression, ctl_panning, ctl_sustain, ctl_pitch_bend
  56. };
  57. static int ctl_open(int using_stdin, int using_stdout)
  58. {
  59.   ctl.opened=1;
  60.   return 0;
  61. }
  62. static void ctl_close(void)
  63.   ctl.opened=0;
  64. }
  65. static int ctl_read(int32 *valp)
  66. {
  67.   return RC_NONE;
  68. }
  69. static int cmsg(int type, int verbosity_level, char *fmt, ...)
  70. {
  71. #ifdef GREGS_DEBUG
  72.   va_list ap;
  73.   int flag_newline = 1;
  74.   if ((type==CMSG_TEXT || type==CMSG_INFO || type==CMSG_WARNING) &&
  75.       ctl.verbosity<verbosity_level-1)
  76.     return 0;
  77.   if (*fmt == '~')
  78.     {
  79.       flag_newline = 0;
  80.       fmt++;
  81.     }
  82.   va_start(ap, fmt);
  83.   if (!ctl.opened)
  84.     {
  85.       vfprintf(stderr, fmt, ap);
  86.       if (flag_newline) fprintf(stderr, "n");
  87.     }
  88.   else
  89.     {
  90.       vfprintf(stderr, fmt, ap);
  91.       if (flag_newline) fprintf(stderr, "n");
  92.     }
  93.   va_end(ap);
  94.   if (!flag_newline) fflush(stderr);
  95.   return 0;
  96. #else
  97.   va_list ap;
  98.   if ((type==CMSG_TEXT || type==CMSG_INFO || type==CMSG_WARNING) &&
  99.       ctl.verbosity<verbosity_level)
  100.     return 0;
  101.   va_start(ap, fmt);
  102.   SDL_vsnprintf(timidity_error, TIMIDITY_ERROR_SIZE, fmt, ap);
  103.   va_end(ap);
  104.   return 0;
  105. #endif
  106. }
  107. static void ctl_refresh(void) { }
  108. static void ctl_total_time(int tt) {}
  109. static void ctl_master_volume(int mv) {}
  110. static void ctl_file_name(char *name) {}
  111. static void ctl_current_time(int ct) {}
  112. static void ctl_note(int v) {}
  113. static void ctl_program(int ch, int val) {}
  114. static void ctl_volume(int channel, int val) {}
  115. static void ctl_expression(int channel, int val) {}
  116. static void ctl_panning(int channel, int val) {}
  117. static void ctl_sustain(int channel, int val) {}
  118. static void ctl_pitch_bend(int channel, int val) {}
  119. static void ctl_reset(void) {}