⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dumb_c.c

📁 MIDI解码程序(用VC编写)
💻 C
字号:
/*    TiMidity++ -- MIDI to WAVE converter and player    Copyright (C) 1999-2002 Masanao Izumo <mo@goice.co.jp>    Copyright (C) 1995 Tuukka Toivonen <tt@cgs.fi>    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    dumb_c.c    Minimal control mode -- no interaction, just prints out messages.    */#ifdef HAVE_CONFIG_H#include "config.h"#endif /* HAVE_CONFIG_H */#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#ifndef NO_STRING_H#include <string.h>#else#include <strings.h>#endif#include "timidity.h"#include "common.h"#include "output.h"#include "controls.h"#include "instrum.h"#include "playmidi.h"#include "readmidi.h"#ifdef __W32__#include "wrd.h"#endif /* __W32__ */static int ctl_open(int using_stdin, int using_stdout);static void ctl_close(void);static int ctl_read(int32 *valp);static int cmsg(int type, int verbosity_level, char *fmt, ...);static void ctl_total_time(long tt);static void ctl_file_name(char *name);static void ctl_current_time(int ct);static void ctl_lyric(int lyricid);static void ctl_event(CtlEvent *e);/**********************************//* export the interface functions */#define ctl dumb_control_modeControlMode ctl={    "dumb interface", 'd',    1,0,0,    0,    ctl_open,    ctl_close,    dumb_pass_playing_list,    ctl_read,    cmsg,    ctl_event};static FILE *outfp;int dumb_error_count;/*ARGSUSED*/static int ctl_open(int using_stdin, int using_stdout){  if(using_stdout)    outfp=stderr;  else    outfp=stdout;  ctl.opened=1;  return 0;}static void ctl_close(void){  fflush(outfp);  ctl.opened=0;}/*ARGSUSED*/static int ctl_read(int32 *valp){  return RC_NONE;}static int cmsg(int type, int verbosity_level, char *fmt, ...){  va_list ap;  if ((type==CMSG_TEXT || type==CMSG_INFO || type==CMSG_WARNING) &&      ctl.verbosity<verbosity_level)    return 0;  va_start(ap, fmt);  if(type == CMSG_WARNING || type == CMSG_ERROR || type == CMSG_FATAL)      dumb_error_count++;  if (!ctl.opened)    {      vfprintf(stderr, fmt, ap);      fputs(NLS, stderr);    }  else    {      vfprintf(outfp, fmt, ap);      fputs(NLS, outfp);      fflush(outfp);    }  va_end(ap);  return 0;}static void ctl_total_time(long tt){  int mins, secs;  if (ctl.trace_playing)    {      secs=(int)(tt/play_mode->rate);      mins=secs/60;      secs-=mins*60;      cmsg(CMSG_INFO, VERB_NORMAL,	   "Total playing time: %3d min %02d s", mins, secs);    }}static void ctl_file_name(char *name){  if (ctl.verbosity>=0 || ctl.trace_playing)      cmsg(CMSG_INFO, VERB_NORMAL, "Playing %s", name);}static void ctl_current_time(int secs){  int mins;  static int prev_secs = -1;#ifdef __W32__	  if(wrdt->id == 'w')	    return;#endif /* __W32__ */  if (ctl.trace_playing && secs != prev_secs)    {      prev_secs = secs;      mins=secs/60;      secs-=mins*60;      fprintf(outfp, "\r%3d:%02d", mins, secs);      fflush(outfp);    }}static void ctl_lyric(int lyricid){    char *lyric;    lyric = event2string(lyricid);    if(lyric != NULL)    {	if(lyric[0] == ME_KARAOKE_LYRIC)	{	    if(lyric[1] == '/' || lyric[1] == '\\')	    {		fprintf(outfp, "\n%s", lyric + 2);		fflush(outfp);	    }	    else if(lyric[1] == '@')	    {		if(lyric[2] == 'L')		    fprintf(outfp, "\nLanguage: %s\n", lyric + 3);		else if(lyric[2] == 'T')		    fprintf(outfp, "Title: %s\n", lyric + 3);		else		    fprintf(outfp, "%s\n", lyric + 1);	    }	    else	    {		fputs(lyric + 1, outfp);		fflush(outfp);	    }	}	else	{	    if(lyric[0] == ME_CHORUS_TEXT || lyric[0] == ME_INSERT_TEXT)		fprintf(outfp, "\r");	    fputs(lyric + 1, outfp);	    fflush(outfp);	}    }}static void ctl_event(CtlEvent *e){    switch(e->type)    {      case CTLE_NOW_LOADING:	ctl_file_name((char *)e->v1);	break;      case CTLE_PLAY_START:	ctl_total_time(e->v1);	break;      case CTLE_CURRENT_TIME:	ctl_current_time((int)e->v1);	break;      #ifndef CFG_FOR_SF      case CTLE_LYRIC:	ctl_lyric((int)e->v1);	break;      #endif    }}/* * interface_<id>_loader(); */ControlMode *interface_d_loader(void){    return &ctl;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -