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

📄 meter.c

📁 speech signal process tools
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * This material contains unpublished, proprietary software of  * Entropic Research Laboratory, Inc. Any reproduction, distribution,  * or publication of this work must be authorized in writing by Entropic  * Research Laboratory, Inc., and must bear the notice:  * *    "Copyright (c) 1990-1993 Entropic Research Laboratory, Inc.  *                   All rights reserved" * * The copyright notice above does not evidence any actual or intended  * publication of this source code.      * * Written by:  Derek Lin * Checked by: * Revised by: * * Brief description: A front-end record control panel for ESPS record programs * */static char *sccs_id = "@(#)meter.c	1.4	1/7/94	ERL";#include <stdio.h>#include <math.h>#include <sys/types.h>#include <X11/IntrinsicP.h>#include <X11/StringDefs.h>#include <Xm/Label.h>#include <Xm/Form.h>#include <Xm/RowColumn.h>#include <Xm/PushB.h>#include <Xm/ToggleB.h>#include "Bar.h"#include <esps/esps.h>#include <esps/feasd.h>#include <esps/fea.h>#define SYNTAX USAGE("meter [-i update_time] [-c RC_const] [-s] [-m] [-r] [-z] [-] outfile")#define TIMEOUT 0.1 /* time out inverval in seconds */#define TIME_DC 20  /* DC level is computed from TIME_DC * TIMEOUT sec *//* tag messages */#define MRecording "Recording...."#define MNot_Recording "    "#define MPause "pause"#define MResume "resume"#define MRestart "Re-start"#define MStart "Start"#define MQuit "Stop/Quit"int debug_level = 0;void get_input();static float *find_max();static void do_dc_offset();double log10();/* callback list */static void start_record();static void pause_resume();static void quit();static void dc_offset_onoff();static void meter_onoff();static void dc_read_onoff();/* global variables */static int START = False;static int RESTART = False;static int PAUSE = True;static int DC_OFFSET = False;static int METER = True;static int METER_READOUT = True;static int QUIT = False;static float INTERVAL = 0.1;static Widget Bar[2];Widget dbval_label[2];Widget startB, pauseB, quitB, rc_label;XmFontList myfontlist;  /*need be accessed in other */XmFontList myfontlist2;char *outfilename;int magic = 0;main(argc, argv)     int argc;     char *argv[];{  Widget toplevel;  Widget backdrop, formM, rcpush, rctog, formB, formR;  Widget ch_label[2];  Widget chanT, chTb1, chTb2, dc_offB, meterB, dc_readB;  Arg wargs[10];  int n;  XmString mystring;  Dimension label_w, label_h;  /* label */  Dimension met_w, met_h;  Dimension tmpd;  XFontStruct *font1, *font2;  char c;  float RC = -0.1;  extern int optind;  extern char *optarg;  while((c=getopt(argc,argv,"i:c:smrz"))!= EOF){    switch(c){    case 'i':      INTERVAL = atof(optarg);      break;    case 'c':      RC = -1 * (float) atof(optarg);      if(RC > 0) {	fprintf(stderr,"meter: -c argument must be positive - exiting\n");	exit(1);      }      break;    case 's':      DC_OFFSET = True;      break;    case 'm':      METER = False;      break;    case 'r':      METER_READOUT = False;      break;    case 'z':      magic = 1;      break;    default:      SYNTAX;    }  }    if( argc <= 1)    SYNTAX;  outfilename = argv[argc - 1];  if( 0==strcmp(argv[argc-2], "-")) argv[argc-2] = "a";  toplevel = XtInitialize( argv[0], "Meter", NULL, 0, &argc, argv);  font1 = XLoadQueryFont(XtDisplay(toplevel), "-adobe-helvetica-medium-r-normal--14-140-75-75-p-77-iso8859-1");  myfontlist = XmFontListCreate(font1, "chset1");  font2 = XLoadQueryFont(XtDisplay(toplevel), "-adobe-utopia-bold-i-normal--15-140-75-75-p-82-iso8859-1");  myfontlist2 = XmFontListCreate(font2, "chset2");  n = 0;  XtSetArg( wargs[n], XmNx, 100); n++;  XtSetArg( wargs[n], XmNy, 100); n++;  XtSetArg( wargs[n], XmNresizable, False); n++;  backdrop =    XtCreateManagedWidget("backdrop",			  xmFormWidgetClass, toplevel,			  wargs, n);    n = 0;  XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_FORM); n++;  XtSetArg( wargs[n], XmNleftAttachment, XmATTACH_FORM); n++;  XtSetArg( wargs[n], XmNbottomAttachment, XmATTACH_FORM); n++;  formB = XtCreateManagedWidget("formB", xmFormWidgetClass, backdrop,				 wargs, n);  n = 0;  XtSetArg( wargs[n], XmNorientation, XmVERTICAL); n++;  XtSetArg( wargs[n], XmNnumColumns, 1); n++;  XtSetArg( wargs[n], XmNspacing, 5); n++;  rcpush = XtCreateManagedWidget("rcpush", xmRowColumnWidgetClass, formB,				 wargs, n);  n = 0;  mystring = XmStringCreateLtoR(MStart, "chset1");  XtSetArg( wargs[n], XmNshadowThickness, 5); n++;  XtSetArg( wargs[n], XmNfontList, myfontlist); n++;  XtSetArg( wargs[n], XmNlabelString, mystring); n++;  startB = XtCreateManagedWidget("startB", xmPushButtonWidgetClass, rcpush,				 wargs, n);  XmStringFree(mystring);  XtAddCallback(startB, XmNactivateCallback, start_record, NULL);  n = 0;  mystring = XmStringCreateLtoR(MPause, "chset1");  XtSetArg( wargs[n], XmNshadowThickness, 5); n++;  XtSetArg( wargs[n], XmNfontList, myfontlist); n++;  XtSetArg( wargs[n], XmNlabelString, mystring); n++;  XtSetArg( wargs[n], XmNsensitive, False); n++;  pauseB = XtCreateManagedWidget("pauseB", xmPushButtonWidgetClass, rcpush,				 wargs, n);  XmStringFree(mystring);  XtAddCallback(pauseB, XmNactivateCallback, pause_resume, NULL);  mystring = XmStringCreateLtoR("dc-offset", "chset1");  n = 0;  XtSetArg( wargs[n], XmNfontList, myfontlist); n++;  XtSetArg( wargs[n], XmNlabelString, mystring); n++;  XtSetArg( wargs[n], XmNshadowThickness, 0); n++;  XtSetArg( wargs[n], XmNset, DC_OFFSET); n++;  dc_offB = XmCreateToggleButton(rcpush, "dc_offB", wargs, n);  XtAddCallback(dc_offB, XmNarmCallback, dc_offset_onoff, NULL);  XtManageChild(dc_offB);  XmStringFree(mystring);  mystring = XmStringCreateLtoR("Meter", "chset1");  n = 0;  XtSetArg( wargs[n], XmNfontList, myfontlist); n++;  XtSetArg( wargs[n], XmNlabelString, mystring); n++;  XtSetArg( wargs[n], XmNshadowThickness, 0); n++;  XtSetArg( wargs[n], XmNset, METER); n++;  meterB = XmCreateToggleButton(rcpush, "meterB", wargs, n);  XtAddCallback(meterB, XmNarmCallback, meter_onoff, NULL);  XtManageChild(meterB);  XmStringFree(mystring);  mystring = XmStringCreateLtoR("Meter dB readout", "chset1");  n = 0;  XtSetArg( wargs[n], XmNfontList, myfontlist); n++;  XtSetArg( wargs[n], XmNlabelString, mystring); n++;  XtSetArg( wargs[n], XmNshadowThickness, 0); n++;  XtSetArg( wargs[n], XmNset, METER_READOUT); n++;  dc_readB = XmCreateToggleButton(rcpush, "dc_readB", wargs, n);  XtAddCallback(dc_readB, XmNarmCallback, dc_read_onoff, NULL);  XtManageChild(dc_readB);  XmStringFree(mystring);  n = 0;  mystring = XmStringCreateLtoR(MQuit, "chset1");  XtSetArg( wargs[n], XmNshadowThickness, 5); n++;  XtSetArg( wargs[n], XmNfontList, myfontlist); n++;  XtSetArg( wargs[n], XmNlabelString, mystring); n++;  quitB = XtCreateManagedWidget("quitB", xmPushButtonWidgetClass, rcpush,				 wargs, n);  XmStringFree(mystring);  XtAddCallback(quitB, XmNactivateCallback, quit, NULL);  n = 0;  XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_FORM); n++;  XtSetArg( wargs[n], XmNtopPosition, 10); n++;  XtSetArg( wargs[n], XmNleftAttachment, XmATTACH_WIDGET); n++;  XtSetArg( wargs[n], XmNleftWidget, formB); n++;  XtSetArg( wargs[n], XmNleftOffset, 20); n++;  formM =     XtCreateManagedWidget("formM",			  xmFormWidgetClass, backdrop,			  wargs, n);  mystring = XmStringCreateLtoR("Chan. 1", "chset1");  n = 0;  XtSetArg( wargs[n], XmNfontList, myfontlist); n++;  XtSetArg( wargs[n], XmNlabelString, mystring); n++;  XtSetArg( wargs[n], XmNmarginBottom, 6); n++;  XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_FORM); n++;  XtSetArg( wargs[n], XmNleftAttachment, XmATTACH_FORM); n++;  ch_label[0] = XtCreateManagedWidget("label", xmLabelWidgetClass,				 formM, wargs,n);  XmStringFree(mystring);  mystring = XmStringCreateLtoR("Chan. 2", "chset1");  n = 0;  XtSetArg( wargs[n], XmNfontList, myfontlist); n++;  XtSetArg( wargs[n], XmNlabelString, mystring); n++;  XtSetArg( wargs[n], XmNmarginBottom, 6); n++;  XtSetArg( wargs[n], XmNleftAttachment, XmATTACH_WIDGET); n++;  XtSetArg( wargs[n], XmNleftOffset, 10); n++;  XtSetArg( wargs[n], XmNleftWidget, ch_label[0]); n++;  ch_label[1] = XtCreateManagedWidget("label", xmLabelWidgetClass,				 formM, wargs,n);  XmStringFree(mystring);  n = 0;  XtSetArg( wargs[n], XtNwidth, &label_w); n++;  XtSetArg( wargs[n], XtNheight, &label_h); n++;  XtGetValues(ch_label[0], wargs, n);  met_w = 15;  met_h = 150;  n = 0;  XtSetArg( wargs[n], XmNheight, met_h); n++;  XtSetArg( wargs[n], XmNwidth, met_w); n++;  XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_WIDGET); n++;  XtSetArg( wargs[n], XmNtopWidget, ch_label[0]); n++;  tmpd = (Dimension ) (label_w/2) - (met_w/2);  XtSetArg( wargs[n], XmNleftOffset, tmpd); n++;  XtSetArg( wargs[n], XmNleftAttachment, XmATTACH_FORM); n++;  XtSetArg( wargs[n], XtNconstRC, &RC); n++;  XtSetArg( wargs[n], XtNintv, &INTERVAL); n++;  Bar[0] = XtCreateManagedWidget("bar", XebarWidgetClass,			      formM,			      wargs, n);  n = 0;  XtSetArg( wargs[n], XmNheight, met_h); n++;  XtSetArg( wargs[n], XmNwidth, met_w); n++;  XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_WIDGET); n++;  XtSetArg( wargs[n], XmNtopWidget, ch_label[1]); n++;  tmpd = (Dimension ) (label_w/2) - (met_w/2);  XtSetArg( wargs[n], XmNrightOffset, tmpd); n++;  XtSetArg( wargs[n], XmNrightAttachment, XmATTACH_FORM); n++;  XtSetArg( wargs[n], XtNconstRC, &RC); n++;  XtSetArg( wargs[n], XtNintv, &INTERVAL); n++;  Bar[1] = XtCreateManagedWidget("bar", XebarWidgetClass,			      formM,			      wargs, n);  mystring = XmStringCreateLtoR("0", "chset1");  n = 0;  XtSetArg( wargs[n], XmNfontList, myfontlist); n++;  XtSetArg( wargs[n], XmNlabelString, mystring); n++;  XtSetArg( wargs[n], XmNmarginBottom, 6); n++;  XtSetArg( wargs[n], XmNmarginTop, 6); n++;  XtSetArg( wargs[n], XmNalignment, XmALIGNMENT_END); n++;  XtSetArg( wargs[n], XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET); n++;  XtSetArg( wargs[n], XmNrightWidget, Bar[0]); n++;  XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_WIDGET); n++;  XtSetArg( wargs[n], XmNtopWidget, Bar[0]); n++;  dbval_label[0] = XtCreateManagedWidget("label", xmLabelWidgetClass,				 formM, wargs,n);  XmStringFree(mystring);  mystring = XmStringCreateLtoR("0", "chset1");  n = 0;  XtSetArg( wargs[n], XmNfontList, myfontlist); n++;  XtSetArg( wargs[n], XmNlabelString, mystring); n++;  XtSetArg( wargs[n], XmNmarginBottom, 6); n++;  XtSetArg( wargs[n], XmNmarginTop, 6); n++;  XtSetArg( wargs[n], XmNalignment, XmALIGNMENT_END); n++;  XtSetArg( wargs[n], XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET); n++;  XtSetArg( wargs[n], XmNrightWidget, Bar[1]); n++;  XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_WIDGET); n++;  XtSetArg( wargs[n], XmNtopWidget, Bar[1]); n++;  dbval_label[1] = XtCreateManagedWidget("label", xmLabelWidgetClass,				 formM, wargs,n);  XmStringFree(mystring);  mystring = XmStringCreateLtoR(MNot_Recording, "chset2");  n = 0;  XtSetArg( wargs[n], XmNfontList, myfontlist2); n++;  XtSetArg( wargs[n], XmNlabelString, mystring); n++;  XtSetArg( wargs[n], XmNmarginBottom, 6); n++;  XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_WIDGET); n++;  XtSetArg( wargs[n], XmNtopOffset, 5); n++;  XtSetArg( wargs[n], XmNtopWidget, dbval_label[0]); n++;  XtSetArg( wargs[n], XmNbottomAttachment, XmATTACH_FORM); n++;  XtSetArg( wargs[n], XmNbottomOffset, 10); n++;  rc_label = XtCreateManagedWidget("rc_label", xmLabelWidgetClass,				   formM, wargs,n);  XmStringFree(mystring);

⌨️ 快捷键说明

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