static int open_audio_port (AudioContext return_ac, AudioContext desc) { ALconfig config = ALnewconfig(); long params[2]; adjust_audio_volume (& desc->device); return_ac->ac_left_speaker_gain = desc->ac_left_speaker_gain; return_ac->ac_right_speaker_gain = desc->ac_right_speaker_gain; params[0] = AL_OUTPUT_RATE; params[1] = desc->ac_output_rate; ALsetparams (desc->ac_device, params, 2); return_ac->ac_output_rate = desc->ac_output_rate; if (set_channels (config, desc->ac_nchan)==-1) return -1; return_ac->ac_nchan = desc->ac_nchan; if (set_output_format (config, desc->ac_format)==-1) return -1; return_ac->ac_format = desc->ac_format; ALsetqueuesize (config, (long) CHUNKSIZE); return_ac->ac_port = ALopenport("XEmacs audio output", "w", config); ALfreeconfig (config); if (return_ac->ac_port==0) { report_file_error ("Opening audio output port", Qnil); return -1; } return 0; }
// handle long options (like "--example"). Return unknown string. static const char* long_option(const char* string) { if(strcmp(string, OPTION_HELP) == 0) show_help_and_exit(); else if(strcmp(string, OPTION_FORMAT) == 0) set_output_format(); else if(strcmp(string, OPTION_OUTFILE) == 0) output_filename = cliargs_get_string(name_outfile); else if(strcmp(string, OPTION_LABELDUMP) == 0) labeldump_filename = cliargs_get_string(name_dumpfile); else if(strcmp(string, OPTION_VICELABELDUMP) == 0) vicelabeldump_filename = cliargs_get_string(name_dumpfile); else if(strcmp(string, OPTION_SETPC) == 0) set_starting_pc(); else if(strcmp(string, OPTION_CPU) == 0) set_starting_cpu(); else if(strcmp(string, OPTION_INITMEM) == 0) set_mem_contents(); else if(strcmp(string, OPTION_MAXERRORS) == 0) max_errors = cliargs_get_long("maximum error count"); else if(strcmp(string, OPTION_MAXDEPTH) == 0) macro_recursions_left = (source_recursions_left = cliargs_get_long("recursion depth")); // else if(strcmp(string, "strictsyntax") == 0) // strict_syntax = TRUE; else if(strcmp(string, OPTION_USE_STDOUT) == 0) msg_stream = stdout; else if(strcmp(string, OPTION_MSVC) == 0) format_msvc = TRUE; PLATFORM_LONGOPTION_CODE else if(strcmp(string, OPTION_VERSION) == 0) show_version(TRUE); else return(string); return(NULL); }
// Handle short options (like "-e"). Return unknown character. static char short_option(const char* argument) { while(*argument) { switch(*argument) { // case 'D': // "-D" define constants // add_cli_definition(); case 'h': // "-h" shows help show_help_and_exit(); case 'f': // "-f" selects output format set_output_format(); break; case 'o': // "-o" selects output filename output_filename = cliargs_get_string(name_outfile); break; case 'l': // "-l" selects label dump filename labeldump_filename = cliargs_get_string(name_dumpfile); break; case 'v': // "-v" changes verbosity Process_verbosity++; if((argument[1] >= '0') && (argument[1] <= '9')) Process_verbosity = *(++argument) - '0'; break; // platform specific switches are inserted here PLATFORM_SHORTOPTION_CODE case 'V': // "-V" shows version show_version(TRUE); break; default: // unknown ones: program termination return(*argument); } argument++; } return('\0'); }
int main (int argc, char **argv) { FILE *f = NULL, *f_page = NULL; Jbig2Ctx *ctx; uint8_t buf[4096]; jbig2dec_params_t params; int filearg; /* set defaults */ params.mode = render; params.verbose = 1; params.hash = 0; params.output_file = NULL; params.output_format = jbig2dec_format_none; filearg = parse_options(argc, argv, ¶ms); if (params.hash) hash_init(¶ms); switch (params.mode) { case usage: print_usage(); exit (0); break; case dump: fprintf(stderr, "Sorry, segment dump not yet implemented\n"); break; case render: if ((argc - filearg) == 1) /* only one argument--open as a jbig2 file */ { char *fn = argv[filearg]; f = fopen(fn, "rb"); if (f == NULL) { fprintf(stderr, "error opening %s\n", fn); return 1; } } else if ((argc - filearg) == 2) /* two arguments open as separate global and page streams */ { char *fn = argv[filearg]; char *fn_page = argv[filearg+1]; f = fopen(fn, "rb"); if (f == NULL) { fprintf(stderr, "error opening %s\n", fn); return 1; } f_page = fopen(fn_page, "rb"); if (f_page == NULL) { fprintf(stderr, "error opening %s\n", fn_page); return 1; } } else /* any other number of arguments */ return print_usage(); ctx = jbig2_ctx_new(NULL, f_page != NULL ? JBIG2_OPTIONS_EMBEDDED : 0, NULL, error_callback, ¶ms); /* pull the whole file/global stream into memory */ for (;;) { int n_bytes = fread(buf, 1, sizeof(buf), f); if (n_bytes <= 0) break; jbig2_data_in(ctx, buf, n_bytes); } fclose(f); /* if there's a local page stream read that in its entirety */ if (f_page != NULL) { Jbig2GlobalCtx *global_ctx = jbig2_make_global_ctx(ctx); ctx = jbig2_ctx_new(NULL, JBIG2_OPTIONS_EMBEDDED, global_ctx, error_callback, ¶ms); for (;;) { int n_bytes = fread(buf, 1, sizeof(buf), f_page); if (n_bytes <= 0) break; jbig2_data_in(ctx, buf, n_bytes); } fclose(f_page); jbig2_global_ctx_free(global_ctx); } /* retrieve and output the returned pages */ { Jbig2Image *image; /* work around broken CVision embedded streams */ if (f_page != NULL) jbig2_complete_page(ctx); if (params.output_file == NULL) { #ifdef HAVE_LIBPNG params.output_file = make_output_filename(argv[filearg], ".png"); params.output_format = jbig2dec_format_png; #else params.output_file = make_output_filename(argv[filearg], ".pbm"); params.output_format = jbig2dec_format_pbm; #endif } else { int len = strlen(params.output_file); if ((len >= 3) && (params.output_format == jbig2dec_format_none)) /* try to set the output type by the given extension */ set_output_format(¶ms, params.output_file + len - 3); } /* retrieve and write out all the completed pages */ while ((image = jbig2_page_out(ctx)) != NULL) { write_page_image(¶ms, image); if (params.hash) hash_image(¶ms, image); jbig2_release_page(ctx, image); } if (params.hash) write_document_hash(¶ms); } jbig2_ctx_free(ctx); } /* end params.mode switch */ if (params.output_file) free(params.output_file); if (params.hash) hash_free(¶ms); /* fin */ return 0; }
static int parse_options(int argc, char *argv[], jbig2dec_params_t *params) { static struct option long_options[] = { {"version", 0, NULL, 'V'}, {"help", 0, NULL, 'h'}, {"quiet", 0, NULL, 'q'}, {"verbose", 2, NULL, 'v'}, {"dump", 0, NULL, 'd'}, {"hash", 0, NULL, 'm'}, {"output", 1, NULL, 'o'}, {"format", 1, NULL, 't'}, {NULL, 0, NULL, 0} }; int option_idx = 1; int option; while (1) { option = getopt_long(argc, argv, "Vh?qvdo:t:", long_options, &option_idx); if (option == -1) break; switch (option) { case 0: /* unknown long option */ if (!params->verbose) fprintf(stdout, "unrecognized option: --%s\n", long_options[option_idx].name); break; case 'q': params->verbose = 0; break; case 'v': if (optarg) params->verbose = atoi(optarg); else params->verbose = 9; break; case 'h': case '?': params->mode = usage; break; case 'V': /* the GNU Coding Standards suggest --version should override all other options */ print_version(); exit(0); break; case 'd': params->mode=dump; break; case 'm': params->hash = 1; break; case 'o': params->output_file = strdup(optarg); break; case 't': set_output_format(params, optarg); break; default: if (!params->verbose) fprintf(stdout, "unrecognized option: -%c\n", option); break; } } return (optind); }
static int srconv(CSOUND *csound, int argc, char **argv) { MYFLT *input, /* pointer to start of input buffer */ *output, /* pointer to start of output buffer */ *nextIn, /* pointer to next empty word in input */ *nextOut, /* pointer to next empty word in output */ *fxval = 0, /* pointer to start of time-array for time-vary function */ *fyval = 0, /* pointer to start of P-scale-array for time-vary func */ *i0, /* pointer */ *i1; /* pointer */ float *window, /* pointer to center of analysis window */ *wj, /* pointer to window */ *wj1; /* pointer to window */ int M = 2401, /* length of window impulse response */ N = 120, /* length of sinc period */ L = 120, /* internal sample rate is L*Rin */ m, /* current input sample in buffer */ o, /* current input at L*Rin mod L */ del, /* increment */ WinLen, /* half-length of window at L*Rin */ wLen, /* half-length of window at Rin */ jMin, /* initial offset in window */ mMax; /* maximum valid m */ long n, /* current input sample */ nMax = 2000000000; /* last input sample (unless EOF) */ MYFLT beta = FL(6.8), /* parameter for Kaiser window */ sum, /* scale factor for renormalizing windows */ fdel, /* float del */ idel, /* float del */ fo, /* float o */ of, /* fractional o */ fL = (MYFLT) L, /* float L */ iw, /* interpolated window */ tvx0 = 0, /* current x value of time-var function */ tvx1 = 0, /* next x value of time-var function */ tvdx, /* tvx1 - tvx0 */ tvy0 = 0, /* current y value of time-var function */ tvy1 = 0, /* next y value of time-var function */ tvdy, /* tvy1 - tvy0 */ tvslope = 0, /* tvdy / tvdx */ time, /* n / Rin */ invRin, /* 1. / Rin */ P = FL(0.0), /* Rin / Rout */ Rin = FL(0.0), /* input sampling rate */ Rout = FL(0.0); /* output sample rate */ int i,k, /* index variables */ nread, /* number of bytes read */ tvflg = 0, /* flag for time-varying time-scaling */ tvnxt = 0, /* counter for stepping thru time-var func */ tvlen, /* length of time-varying function */ Chans = 1, /* number of channels */ chan, /* current channel */ Q = 2; /* quality factor */ FILE *tvfp = NULL; /* time-vary function file */ SOUNDIN *p; int channel = ALLCHNLS; MYFLT beg_time = FL(0.0), input_dur = FL(0.0), sr = FL(0.0); char *infile = NULL, *bfile = NULL; SNDFILE *inf = NULL; char c, *s; const char *envoutyp; char outformch = 's'; unsigned outbufsiz = 0U; SNDFILE *outfd = NULL; OPARMS O; int block = 0; char err_msg[256]; O.outformat = AE_SHORT; /* csound->e0dbfs = csound->dbfs_to_float = FL(1.0);*/ if ((envoutyp = csound->GetEnv(csound, "SFOUTYP")) != NULL) { if (strcmp(envoutyp, "AIFF") == 0) O.filetyp = TYP_AIFF; else if (strcmp(envoutyp, "WAV") == 0) O.filetyp = TYP_WAV; else if (strcmp(envoutyp, "IRCAM") == 0) O.filetyp = TYP_IRCAM; else { snprintf(err_msg, 256, Str("%s not a recognized SFOUTYP env setting"), envoutyp); dieu(csound, err_msg); return -1; } } /* call getopt to interpret commandline */ ++argv; while (--argc > 0) { s = *argv++; if (*s++ == '-') { /* read all flags: */ while ((c = *s++) != '\0') { switch (c) { case 'o': FIND(Str("no outfilename")) O.outfilename = s; /* soundout name */ for ( ; *s != '\0'; s++) ; if (strcmp(O.outfilename, "stdin") == 0) { csound->ErrorMsg(csound, Str("-o cannot be stdin")); return -1; } #if defined WIN32 if (strcmp(O.outfilename, "stdout") == 0) { csound->ErrorMsg(csound, Str("stdout audio not supported")); return -1; } #endif break; case 'A': O.filetyp = TYP_AIFF; /* AIFF output request*/ break; case 'J': O.filetyp = TYP_IRCAM; /* IRCAM output request */ break; case 'W': O.filetyp = TYP_WAV; /* WAV output request */ break; case 'h': O.filetyp = TYP_RAW; /* skip sfheader */ break; case 'c': case '8': case 'a': case 'u': case 's': case 'l': case '3': case 'f': outformch = set_output_format(csound, c, outformch, &O); break; case 'R': O.rewrt_hdr = 1; break; case 'H': if (isdigit(*s)) { int n; sscanf(s, "%d%n", &O.heartbeat, &n); s += n; } else O.heartbeat = 1; break; case 'N': O.ringbell = 1; /* notify on completion */ break; case 'Q': FIND(Str("No Q argument")) sscanf(s,"%d", &Q); while (*++s); break; case 'P': FIND(Str("No P argument")) #if defined(USE_DOUBLE) csound->sscanf(s,"%lf", &P); #else csound->sscanf(s,"%f", &P); #endif while (*++s); break; case 'r': FIND(Str("No r argument")) #if defined(USE_DOUBLE) csound->sscanf(s,"%lf", &Rout); #else csound->sscanf(s,"%f", &Rout); #endif while (*++s); break; case 'i': FIND(Str("No break file")) tvflg = 1; bfile = s; while ((*s++)) {}; s--; break; default: csound->Message(csound, Str("Looking at %c\n"), c); usage(csound); /* this exits with error */ return -1; } } } else if (infile == NULL) { infile = --s; csound->Message(csound, Str("Infile set to %s\n"), infile); } else { csound->Message(csound, Str("End with %s\n"), s); usage(csound); return -1; } } if (infile == NULL) { csound->Message(csound, Str("No input given\n")); usage(csound); return -1; } if ((inf = csound->SAsndgetset(csound, infile, &p, &beg_time, &input_dur, &sr, channel)) == NULL) { csound->ErrorMsg(csound, Str("error while opening %s"), infile); return -1; } if (Rin == FL(0.0)) Rin = (MYFLT)p->sr; if (Chans == 0) Chans = (int) p->nchanls; if (Chans == 0) Chans = 1; if ((P != FL(0.0)) && (Rout != FL(0.0))) { strncpy(err_msg, Str("srconv: cannot specify both -r and -P"), 256); goto err_rtn_msg; } if (P != FL(0.0)) Rout = Rin / P; else if (Rout == FL(0.0)) Rout = Rin; if (tvflg) { P = FL(0.0); /* will be reset to max in time-vary function */ if ((tvfp = fopen(bfile, "r")) == NULL) { strncpy(err_msg, Str("srconv: cannot open time-vary function file"), 256); goto err_rtn_msg; } /* register file to be closed by csoundReset() */ (void) csound->CreateFileHandle(csound, &tvfp, CSFILE_STD, bfile); if (UNLIKELY(fscanf(tvfp, "%d", &tvlen) != 1)) csound->Message(csound, Str("Read failure\n")); if(tvlen <= 0) { strncpy(err_msg, Str("srconv: tvlen <= 0 "), 256); goto err_rtn_msg; } fxval = (MYFLT*) csound->Malloc(csound, tvlen * sizeof(MYFLT)); fyval = (MYFLT*) csound->Malloc(csound, tvlen * sizeof(MYFLT)); i0 = fxval; i1 = fyval; for (i = 0; i < tvlen; i++, i0++, i1++) { #ifdef USE_DOUBLE if ((fscanf(tvfp, "%lf %lf", i0, i1)) != 2) #else if ((fscanf(tvfp, "%f %f", i0, i1)) != 2) #endif { strncpy(err_msg, Str("srconv: too few x-y pairs " "in time-vary function file"), 256); goto err_rtn_msg; } if (*i1 > P) P = *i1; } Rout = Rin / P; /* this is min Rout */ tvx0 = fxval[0]; tvx1 = fxval[1]; tvy0 = fyval[0]; tvy1 = fyval[1]; tvdx = tvx1 - tvx0; if (tvx0 != FL(0.0)) { strncpy(err_msg, Str("srconv: first x value " "in time-vary function must be 0"), 256); goto err_rtn_msg; } if (tvy0 <= FL(0.0)) { strncpy(err_msg, Str("srconv: invalid initial y value " "in time-vary function"),256); goto err_rtn_msg; } if (tvdx <= FL(0.0)) { strncpy(err_msg, Str("srconv: invalid x values in time-vary function"), 256); goto err_rtn_msg; } tvdy = tvy1 - tvy0; tvslope = tvdy / tvdx; tvnxt = 1; } /* This is not right ********* */ if (P != FL(0.0)) { csound->SetUtilSr(csound,Rin); } if (P == FL(0.0)) { csound->SetUtilSr(csound,Rout); } if (O.outformat == 0) O.outformat = AE_SHORT;//p->format; O.sfsampsize = csound->sfsampsize(FORMAT2SF(O.outformat)); if (O.filetyp == TYP_RAW) { O.sfheader = 0; O.rewrt_hdr = 0; } else O.sfheader = 1; #ifdef NeXT if (O.outfilename == NULL && !O.filetyp) O.outfilename = "test.snd"; else if (O.outfilename == NULL) O.outfilename = "test"; #else if (O.outfilename == NULL) { if (O.filetyp == TYP_WAV) O.outfilename = "test.wav"; else if (O.filetyp == TYP_AIFF) O.outfilename = "test.aif"; else O.outfilename = "test"; } #endif { SF_INFO sfinfo; char *name; memset(&sfinfo, 0, sizeof(SF_INFO)); sfinfo.samplerate = (int) ((double) Rout + 0.5); sfinfo.channels = (int) p->nchanls; //printf("filetyp=%x outformat=%x\n", O.filetyp, O.outformat); sfinfo.format = TYPE2SF(O.filetyp) | FORMAT2SF(O.outformat); if (strcmp(O.outfilename, "stdout") != 0) { name = csound->FindOutputFile(csound, O.outfilename, "SFDIR"); if (name == NULL) { snprintf(err_msg, 256, Str("cannot open %s."), O.outfilename); goto err_rtn_msg; } outfd = sf_open(name, SFM_WRITE, &sfinfo); if (outfd != NULL) csound->NotifyFileOpened(csound, name, csound->type2csfiletype(O.filetyp, O.outformat), 1, 0); else { snprintf(err_msg, 256, Str("libsndfile error: %s\n"), sf_strerror(NULL)); goto err_rtn_msg; } csound->Free(csound, name); } else outfd = sf_open_fd(1, SFM_WRITE, &sfinfo, 1); if (outfd == NULL) { snprintf(err_msg, 256, Str("cannot open %s."), O.outfilename); goto err_rtn_msg; } /* register file to be closed by csoundReset() */ (void) csound->CreateFileHandle(csound, &outfd, CSFILE_SND_W, O.outfilename); sf_command(outfd, SFC_SET_CLIPPING, NULL, SF_TRUE); } csound->SetUtilSr(csound, (MYFLT)p->sr); csound->SetUtilNchnls(csound, Chans = p->nchanls); outbufsiz = OBUF * O.sfsampsize; /* calc outbuf size */ csound->Message(csound, Str("writing %d-byte blks of %s to %s"), outbufsiz, csound->getstrformat(O.outformat), O.outfilename); csound->Message(csound, " (%s)\n", csound->type2string(O.filetyp)); /* this program performs arbitrary sample-rate conversion with high fidelity. the method is to step through the input at the desired sampling increment, and to compute the output points as appropriately weighted averages of the surrounding input points. there are two cases to consider: 1) sample rates are in a small-integer ratio - weights are obtained from table, 2) sample rates are in a large-integer ratio - weights are linearly interpolated from table. */ /* calculate increment: if decimating, then window is impulse response of low- pass filter with cutoff frequency at half of Rout; if interpolating, then window is ipulse response of lowpass filter with cutoff frequency at half of Rin. */ fdel = ((MYFLT) (L * Rin) / Rout); del = (int) ((double) fdel + 0.5); idel = (MYFLT) del; if (del > L) N = del; if ((Q >= 1) && (Q <= 8)) M = Q * N * 10 + 1; if (tvflg) fdel = tvy0 * L; invRin = FL(1.0) / Rin; /* make window: the window is the product of a kaiser and a sin(x)/x */ window = (float*) csound->Calloc(csound, (size_t) (M + 2) * sizeof(float)); WinLen = (M-1)/2; window += WinLen; wLen = (M/2 - L) / L; kaiser(M, window, WinLen, 1, (double) beta); for (i = 1; i <= WinLen; i++) { double tmp = (double) N; tmp = tmp * sin(PI * (double) i / tmp) / (PI * (double) i); window[i] = (float) ((double) window[i] * tmp); } if (Rout < Rin) { #if 0 sum = (MYFLT) window[0]; for (i = L-1; i <= WinLen; i += L) sum += (MYFLT) window[i]; sum = FL(2.0) / sum; #else sum = Rout / (Rin * (MYFLT) window[0]); #endif } else sum = FL(1.0) / (MYFLT) window[0]; window[0] = (float) ((double) window[0] * (double) sum); for (i = 1; i <= WinLen; i++) { window[i] = (float) ((double) window[i] * (double) sum); *(window - i) = window[i]; } window[WinLen + 1] = 0.0f; /* set up input buffer: nextIn always points to the next empty word in the input buffer. If the buffer is full, then nextIn jumps back to the beginning, and the old values are written over. */ input = (MYFLT*) csound->Calloc(csound, (size_t) IBUF * sizeof(MYFLT)); /* set up output buffer: nextOut always points to the next empty word in the output buffer. If the buffer is full, then it is flushed, and nextOut jumps back to the beginning. */ output = (MYFLT*) csound->Calloc(csound, (size_t) OBUF * sizeof(MYFLT)); nextOut = output; /* initialization: */ nread = csound->getsndin(csound, inf, input, IBUF2, p); for(i=0; i < nread; i++) input[i] *= 1.0/csound->Get0dBFS(csound); nMax = (long)(input_dur * p->sr); nextIn = input + nread; for (i = nread; i < IBUF2; i++) *(nextIn++) = FL(0.0); jMin = -(wLen + 1) * L; mMax = IBUF2; o = n = m = 0; fo = FL(0.0); /* main loop: If nMax is not specified it is assumed to be very large and then readjusted when read detects the end of input. */ while (n < nMax) { time = n * invRin; /* case 1: (Rin / Rout) * 120 = integer */ if ((tvflg == 0) && (idel == fdel)) { /* apply window (window is sampled at L * Rin) */ for (chan = 0; chan < Chans; chan++) { *nextOut = FL(0.0); k = Chans * (m - wLen) + chan - Chans; if (k < 0) k += IBUF; wj = window + jMin - o; for (i = -wLen; i <= wLen+1; i++){ wj += L; k += Chans; if (k >= IBUF) k -= IBUF; *nextOut += (MYFLT) *wj * *(input + k); } nextOut++; if (nextOut >= (output + OBUF)) { nextOut = output; writebuffer(csound, output, &block, outfd, OBUF, &O); } } /* move window (window advances by del samples at L*Rin sample rate) */ o += del; while (o >= L) { o -= L; n++; m++; if ((Chans * (m + wLen + 1)) >= mMax) { if (!csound->CheckEvents(csound)) csound->LongJmp(csound, 1); mMax += IBUF2; if (nextIn >= (input + IBUF)) nextIn = input; nread = csound->getsndin(csound, inf, nextIn, IBUF2, p); for(i=0; i < nread; i++) input[i] *= 1.0/csound->Get0dBFS(csound); nextIn += nread; if (nread < IBUF2) nMax = n + wLen + (nread / Chans) + 1; for (i = nread; i < IBUF2; i++) *(nextIn++) = FL(0.0); } if ((Chans * m) >= IBUF) { m = 0; mMax = IBUF2; } } } /* case 2: (Rin / Rout) * 120 = non-integer constant */ else { /* apply window (window values are linearly interpolated) */ for (chan = 0; chan < Chans; chan++) { *nextOut = FL(0.0); o = (int)fo; of = fo - o; wj = window + jMin - o; wj1 = wj + 1; k = Chans * (m - wLen) + chan - Chans; if (k < 0) k += IBUF; for (i = -wLen; i <= wLen+1; i++) { wj += L; wj1 += L; k += Chans; if (k >= IBUF) k -= IBUF; iw = (MYFLT) *wj + of * ((MYFLT) *wj1 - (MYFLT) *wj); *nextOut += iw * *(input + k); } nextOut++; if (nextOut >= (output + OBUF)) { nextOut = output; writebuffer(csound, output, &block, outfd, OBUF, &O); } } /* move window */ fo += fdel; while (fo >= fL) { fo -= fL; n++; m++; if ((Chans * (m + wLen + 1)) >= mMax) { if (!csound->CheckEvents(csound)) csound->LongJmp(csound, 1); mMax += IBUF2; if (nextIn >= (input + IBUF)) nextIn = input; nread = csound->getsndin(csound, inf, nextIn, IBUF2, p); for(i=0; i < nread; i++) input[i] *= 1.0/csound->Get0dBFS(csound); nextIn += nread; if (nread < IBUF2) nMax = n + wLen + (nread / Chans) + 1; for (i = nread; i < IBUF2; i++) *(nextIn++) = FL(0.0); } if ((Chans * m) >= IBUF) { m = 0; mMax = IBUF2; } } if (tvflg && (time > FL(0.0))) { while (tvflg && (time >= tvx1)) { if (++tvnxt >= tvlen) tvflg = 0; else { tvx0 = tvx1; tvx1 = fxval[tvnxt]; tvy0 = tvy1; tvy1 = fyval[tvnxt]; tvdx = tvx1 - tvx0; if (tvdx <= FL(0.0)) { strncpy(err_msg, Str("srconv: invalid x values " "in time-vary function"), 256); goto err_rtn_msg; } tvdy = tvy1 - tvy0; tvslope = tvdy / tvdx; } } P = tvy0 + tvslope * (time - tvx0); fdel = (MYFLT) L * P; } } } nread = nextOut - output; writebuffer(csound, output, &block, outfd, nread, &O); csound->Message(csound, "\n\n"); if (O.ringbell) csound->MessageS(csound, CSOUNDMSG_REALTIME, "\a"); return 0; err_rtn_msg: csound->ErrorMsg(csound, err_msg); return -1; }
/// Set lilypond output format. inline std::ios_base& lilypond_output_format(std::ios_base& ios) { set_output_format(ios, output_format::lilypond); return ios; }
/// Set verbatim source output format. inline std::ios_base& identity_output_format(std::ios_base& ios) { set_output_format(ios, output_format::identity); return ios; }
static AudioContext initialize_audio_port (AudioContext desc) { /* we can't use the same port for mono and stereo */ static AudioContextRec mono_port_state = { { 0, 0, 0, 0 }, { (ALport) 0, AFunknown, 1, 0 }, { (void *) 0, (unsigned long) 0 } }; #if HAVE_STEREO static AudioContextRec stereo_port_state = { { 0, 0, 0, 0 }, { (ALport) 0, AFunknown, 2, 0 }, { (void *) 0, (unsigned long) 0 } }; static AudioContext return_ac; switch (desc->ac_nchan) { case 1: return_ac = & mono_port_state; break; case 2: return_ac = & stereo_port_state; break; default: return (AudioContext) 0; } #else /* not HAVE_STEREO */ static AudioContext return_ac = & mono_port_state; #endif /* not HAVE_STEREO */ return_ac->device = desc->device; return_ac->buffer = desc->buffer; return_ac->ac_format = desc->ac_format; return_ac->ac_queue_size = desc->ac_queue_size; if (return_ac->ac_port==(ALport) 0) { if ((open_audio_port (return_ac, desc))==-1) { report_file_error ("Open audio port", Qnil); return (AudioContext) 0; } } else { ALconfig config = ALgetconfig (return_ac->ac_port); int changed = 0; long params[2]; params[0] = AL_OUTPUT_RATE; ALgetparams (return_ac->ac_device, params, 2); return_ac->ac_output_rate = params[1]; if (return_ac->ac_output_rate != desc->ac_output_rate) { return_ac->ac_output_rate = params[1] = desc->ac_output_rate; ALsetparams (return_ac->ac_device, params, 2); } if ((changed = set_output_format (config, return_ac->ac_format))==-1) return (AudioContext) 0; return_ac->ac_format = desc->ac_format; if (changed) ALsetconfig (return_ac->ac_port, config); } return_ac->ac_write_chunk_function = desc->ac_write_chunk_function; get_current_volumes (& return_ac->device); if (return_ac->ac_left_speaker_gain != desc->ac_left_speaker_gain || return_ac->ac_right_speaker_gain != desc->ac_right_speaker_gain) adjust_audio_volume (& desc->device); return return_ac; }
/** * Function reads console params and calls appropriate functions. * */ int main(int agrc, char * agrv[]) { int i, j, limit=50, desc=0; char sort_by[COL_TITLE_LEN] = "date"; struct category category_to_add; struct task task_to_add; DIR* dir = opendir(".."); struct dirent* dent; FILE* fptr; regex_t et_schedule; regcomp(&et_schedule, "^et_.*$", 0); for(i=1;i<agrc;i++) { if(strcmp(agrv[i], "-f") == 0) { if(i+1 < agrc) set_output_format(agrv[i+1]); } } for(i=1;i<agrc;i++) { if(strcmp(agrv[i], "-a") == 0) { for(j=1;j<agrc;j++) { if(strcmp(agrv[j], "-c") == 0) { get_category_values(agrc, agrv, &category_to_add); throw_errors(); add_category(&category_to_add); throw_errors(); return 0; } else if(strcmp(agrv[j], "-t") == 0) { get_task_values(agrc, agrv, &task_to_add); throw_errors(); add_task(&task_to_add); throw_errors(); return 0; } } } else if(strcmp(agrv[i], "-ac") == 0 || strcmp(agrv[i], "-ca") == 0) { get_category_values(agrc, agrv, &category_to_add); throw_errors(); add_category(&category_to_add); throw_errors(); return 0; } else if(strcmp(agrv[i], "-at") == 0 || strcmp(agrv[i], "-ta") == 0) { get_task_values(agrc, agrv, &task_to_add); throw_errors(); add_task(&task_to_add); throw_errors(); return 0; } } for(i=1;i<agrc;i++) { if(strcmp(agrv[i], "-c") == 0) { show_categories(); throw_errors(); } else if(strcmp(agrv[i], "-t") == 0) { if(i+1 < agrc && agrv[i+1][0] != '-') { /*GET sql info about the task*/ dir = opendir("/home/hafron/.pal/"); if(dir) { while((dent=readdir(dir))) { if( ! regexec(&et_schedule, dent->d_name, 0, NULL, 0) ) { puts(dent->d_name); if(fptr = fopen(dent->d_name,"r")) { fclose(fptr) ; } else { error("CANNOT_OPEN_SCHEDULE_FILE"); throw_errors(); } } } closedir(dir); } else { error("CANNOT_OPEN_PAL_DIRECTORY"); throw_errors(); } } else { for(j=1;j<agrc;j++) { if(strcmp(agrv[j], "-l") == 0) { if(j+1 < agrc && agrv[j+1][0] != '-') limit = atoi(agrv[j+1]); } else if(strcmp(agrv[j], "-d") == 0) { desc = 1; } else if(strcmp(agrv[j], "-s") == 0) { if(j+1 < agrc && agrv[j+1][0] != '-') strncpy(sort_by, agrv[j+1], COL_TITLE_LEN); } } show_tasks(limit, sort_by, desc); } throw_errors(); } } return 0; }