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

📄 motif_i.c

📁 linux上播放midi音乐,但是要一些设置.可网上查找. 软件名称: TiMidity++-2.13.0.tar
💻 C
📖 第 1 页 / 共 3 页
字号:
	    if (pc==NULL)		pc=filename;	    else		pc++;	    ac=0;	    XtSetArg(al[ac], XmNlabelString,		     XmStringCreate(pc, char_set)); ac++;	    XtSetValues(file_namelbl, al, ac);	    /* Change the icon  */	    ac=0;	    XtSetArg(al[ac], XmNiconName,pc); ac++;	    XtSetValues(toplevel,al,ac);	    /* Put a separator in the text Window */	    ac=0;	    nbcol=10;	    XtSetArg(al[ac], XmNcolumns,&nbcol); ac++;	    XtGetValues(text,al,ac);	    for (i=0;i<nbcol;i++)		separator[i]='*';	    separator[i]='\0';	    XmTextInsert(text,wpr_position, separator);	    wpr_position+= strlen(separator);	    XmTextInsert(text,wpr_position++,"\n");	    XtVaSetValues(text,XmNcursorPosition, wpr_position,NULL);	    XmTextShowPosition(text,wpr_position);	}	    break;	case FILE_LIST_MESSAGE : {	    char filename[255];	    int i, number_of_files;	    XmString s;	    /* reset the playing list : play from the start */	    file_number_to_play=0;	    m_pipe_int_read(&number_of_files);	    for (i=0;i<number_of_files;i++)		{		    m_pipe_string_read(filename);		    s=XmStringCreate(filename,char_set);		    XmListAddItemUnselected(file_list,s,0);		    XmStringFree(s);		}	}	    break;	case ERROR_MESSAGE :	case NEXT_FILE_MESSAGE :	case PREV_FILE_MESSAGE :	case TUNE_END_MESSAGE :{	    Arg al[10];	    int ac;	    int nbfile;	    XmStringTable files;	    /* When a file ends, launch next if auto_next toggle */	    if ((message==TUNE_END_MESSAGE) &&		!XmToggleButtonGetState(auto_next_option))		return;	    /* Total number of file to play in the list */	    ac=0;	    XtSetArg(al[ac], XmNitemCount, &nbfile); ac++;	    XtGetValues(file_list, al, ac);	    XmListDeselectAllItems(file_list);	    if (message==NEXT_FILE_MESSAGE||message==TUNE_END_MESSAGE)		file_number_to_play++;	    else if (message==PREV_FILE_MESSAGE)		file_number_to_play--;		else		{			ac=0;			XtSetArg(al[ac], XmNitems, &files); ac++;			XtGetValues(file_list, al, ac);			XmListDeleteItem(file_list, files[file_number_to_play-1]);			XmListSelectPos(file_list,file_number_to_play,TRUE);			return;		}	    /* Do nothing if requested file is before first one */	    if (file_number_to_play<=0)		{			file_number_to_play=0;			XmScaleSetValue(locator_scale,0);		    return;		}	    /* Stop after playing the last file */	    if (file_number_to_play>nbfile)		{			file_number_to_play=nbfile+1;			XmScaleSetValue(locator_scale,0);		    return;		}	    XmListSelectPos(file_list,file_number_to_play,TRUE);	}	    break;	case CURTIME_MESSAGE : {	    int tseconds;	    int  sec,seconds, minutes;	    int nbvoice;	    char local_string[20];	    Arg al[10];	    int ac;	    m_pipe_int_read(&tseconds);	    m_pipe_int_read(&nbvoice);	    sec=seconds=tseconds;				/* To avoid blinking */	    if (sec!=last_sec)		{		    minutes=seconds/60;		    seconds-=minutes*60;		    sprintf(local_string,"%02d:%02d",			    minutes, seconds);		    ac=0;		    XtSetArg(al[ac], XmNlabelString,			     XmStringCreate(local_string, char_set)); ac++;		    XtSetValues(counterlbl, al, ac);		}	    last_sec=sec;	    /* Readjust the time scale if not dragging the scale */	    if ( (locator_scale_button==ButtonRelease) &&		 (tseconds<max_sec))		XmScaleSetValue(locator_scale, tseconds);	}	    break;	case NOTE_MESSAGE : {	    int channel;	    int note;	    m_pipe_int_read(&channel);	    m_pipe_int_read(&note);#ifdef DEBUG	    printf("NOTE chn%i %i\n",channel,note);#endif /* DEBUG */	}	    break;	case    PROGRAM_MESSAGE :{	    int channel;	    int pgm;	    m_pipe_int_read(&channel);	    m_pipe_int_read(&pgm);#ifdef DEBUG	    printf("NOTE chn%i %i\n",channel,pgm);#endif /* DEBUG */	}	    break;	case VOLUME_MESSAGE : {	    int channel;	    int volume;	    m_pipe_int_read(&channel);	    m_pipe_int_read(&volume);#ifdef DEBUG	    printf("VOLUME= chn%i %i \n",channel, volume);#endif /* DEBUG */	}	    break;	case EXPRESSION_MESSAGE : {	    int channel;	    int express;	    m_pipe_int_read(&channel);	    m_pipe_int_read(&express);#ifdef DEBUG	    printf("EXPRESSION= chn%i %i \n",channel, express);#endif /* DEBUG */	}	    break;	case PANNING_MESSAGE : {	    int channel;	    int pan;	    m_pipe_int_read(&channel);	    m_pipe_int_read(&pan);#ifdef DEBUG	    printf("PANNING= chn%i %i \n",channel, pan);#endif /* DEBUG */	}	    break;	case  SUSTAIN_MESSAGE : {	    int channel;	    int sust;	    m_pipe_int_read(&channel);	    m_pipe_int_read(&sust);#ifdef DEBUG	    printf("SUSTAIN= chn%i %i \n",channel, sust);#endif /* DEBUG */	}	    break;	case  PITCH_MESSAGE : {	    int channel;	    int bend;	    m_pipe_int_read(&channel);	    m_pipe_int_read(&bend);#ifdef DEBUG	    printf("PITCH BEND= chn%i %i \n",channel, bend);#endif /* DEBUG */	}	    break;	case RESET_MESSAGE : {#ifdef DEBUG	    printf("RESET_MESSAGE\n");#endif /* DEBUG */	}	    break;	case CLOSE_MESSAGE : {#ifdef DEBUG	    printf("CLOSE_MESSAGE\n");#endif /* DEBUG */	    exit(0);	}	    break;	case CMSG_MESSAGE : {	    int type;	    char message[1000];	    m_pipe_int_read(&type);	    m_pipe_string_read(message);	    XmTextInsert(text,wpr_position, message);	    wpr_position+= strlen(message);	    XmTextInsert(text,wpr_position++, "\n");	    XtVaSetValues(text,XmNcursorPosition, wpr_position,NULL);	    XmTextShowPosition(text,wpr_position);	}	    break;	case LYRIC_MESSAGE : {	    char message[1000];	    m_pipe_string_read(message);	    XmTextInsert(text, wpr_position, message);	    wpr_position += strlen(message);	    XtVaSetValues(text,XmNcursorPosition, wpr_position,NULL);	    XmTextShowPosition(text,wpr_position);	    XmTextInsert(text,wpr_position, ""); /* Update cursor */	}	    break;	default:	    fprintf(stderr,"UNKNOW MOTIF MESSAGE %i" NLS, message);	}}/* *************************************** *                                       * * Convenience function to create menus  * *                                       * *****************************************//* adds an accelerator to a menu option. */static void add_accelerator(Widget w,char *acc_text,char *key){    int ac;    Arg al[10];    ac=0;    XtSetArg(al[ac],XmNacceleratorText,	     XmStringCreate(acc_text,char_set)); ac++;    XtSetArg(al[ac],XmNaccelerator,key); ac++;    XtSetValues(w,al,ac);}/* Adds a toggle option to an existing menu. */static Widget make_menu_toggle(char *item_name, int client_data, Widget menu){    int ac;    Arg al[10];    Widget item;    ac = 0;    XtSetArg(al[ac],XmNlabelString, XmStringCreateLtoR(item_name,						       char_set)); ac++;    item=XmCreateToggleButton(menu,item_name,al,ac);    XtManageChild(item);    XtAddCallback(item, XmNvalueChangedCallback,		  (XtCallbackProc) menuCB,(XtPointer) client_data);    XtSetSensitive(item, True);    return(item);}/* Adds an option to an existing menu. */static Widget make_menu_option(char *option_name, KeySym mnemonic,			       int client_data, Widget menu){    int ac;    Arg al[10];    Widget b;    ac = 0;    XtSetArg(al[ac], XmNlabelString,	     XmStringCreateLtoR(option_name, char_set)); ac++;    XtSetArg (al[ac], XmNmnemonic, mnemonic); ac++;    b=XtCreateManagedWidget(option_name,xmPushButtonWidgetClass,			    menu,al,ac);    XtAddCallback (b, XmNactivateCallback,		   (XtCallbackProc) menuCB, (XtPointer) client_data);    return(b);}/* Creates a new menu on the menu bar. */static Widget make_menu(char *menu_name,KeySym  mnemonic, Widget menu_bar){    int ac;    Arg al[10];    Widget menu, cascade;    ac = 0;    menu = XmCreatePulldownMenu (menu_bar, menu_name, al, ac);    ac = 0;    XtSetArg (al[ac], XmNsubMenuId, menu); ac++;    XtSetArg (al[ac], XmNmnemonic, mnemonic); ac++;    XtSetArg(al[ac], XmNlabelString,        XmStringCreateLtoR(menu_name, char_set)); ac++;    cascade = XmCreateCascadeButton (menu_bar, menu_name, al, ac);    XtManageChild (cascade);    return(menu);}/* ******************************************* *                                           * * Interface initialisation before launching * *                                           * *********************************************/static void create_menus(Widget menu_bar){    Widget menu;    menu=make_menu("File",'F',menu_bar);    open_option = make_menu_option("Open", 'O', MENU_OPEN, menu);    add_accelerator(open_option, "meta+o", "Meta<Key>o:");    quit_option = make_menu_option("Exit", 'E', MENU_QUIT, menu);    add_accelerator(quit_option, "meta+q", "Meta<Key>q:");    menu=make_menu("Options",'O',menu_bar);    auto_next_option= make_menu_toggle("Auto Next", MENU_TOGGLE, menu);    XmToggleButtonSetState( auto_next_option , True , False );}static void create_dialog_boxes(void){    Arg al[10];    int ac;    XmString add_all = XmStringCreateLocalized("ADD ALL");    /* create the file selection box used by MENU_OPEN */    ac=0;    XtSetArg(al[ac],XmNmustMatch,True); ac++;    XtSetArg(al[ac],XmNautoUnmanage,False); ac++;    XtSetArg(al[ac],XmNdialogTitle,	     XmStringCreateLtoR("TIMIDITY: Open",char_set)); ac++;    open_dialog=XmCreateFileSelectionDialog(toplevel,"open_dialog",al,ac);    XtAddCallback(open_dialog, XmNokCallback,		  (XtCallbackProc) openCB, (XtPointer) DIALOG_OK);    XtAddCallback(open_dialog, XmNcancelCallback,		  (XtCallbackProc) openCB, (XtPointer) DIALOG_CANCEL);    XtUnmanageChild(XmFileSelectionBoxGetChild(open_dialog, XmDIALOG_HELP_BUTTON));    ac = 0;    XtSetArg(al[ac], XmNleftOffset, 10); ac++;    XtSetArg(al[ac], XmNrightOffset, 10); ac++;    XtSetArg(al[ac], XmNtopOffset, 10); ac++;    XtSetArg(al[ac], XmNbottomOffset, 10); ac++;    XtSetArg(al[ac], XmNlabelString, add_all); ac++;    add_all_button = XmCreatePushButton(open_dialog, "add_all",al, ac);    XtManageChild(add_all_button);    XtAddCallback(add_all_button, XmNactivateCallback,		  (XtCallbackProc) openCB, (XtPointer) DIALOG_ALL);}void Launch_Motif_Process(int pipe_number){    Arg al[20];    int ac;    int argc=0;    XtSetLanguageProc(NULL,NULL,NULL); /* By KINOSHITA, K. <kino@krhm.jvc-victor.co.jp> */    /* create the toplevel shell */    toplevel = XtAppInitialize(&context,"timidity",NULL,0,&argc,NULL,			       NULL,NULL,0);    /*******************/    /* Main form       */    /*******************/

⌨️ 快捷键说明

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