static int get_resp_value(int ret) { char resp[STD_RESP_LEN + 1], **argv; int count, result = -1, argc; count = read(serverfd, resp, STD_RESP_LEN); if (count > 0) { resp[count] = '\0'; argc = str_to_argv(resp, &argv); if (argc == -1) printf_die(stderr, "[ERROR] Cannot allocate buffer... exiting!\n", EXIT_FAILURE); if (argc >= 1 && str_isnumber(argv[0])) { eval_response(atoi(argv[0])); if (argc >= 2 && str_isnumber(argv[1])) result = atoi(argv[1]); else result = 0; } free(argv); } if (ret == -1) printf_die(stdout, "Server probably dead or you have been killed!\n"); return result; }
int ServerSettings::parseDayOfWeek(std::string dow) { if(dow.size()==1 && str_isnumber(dow[0])==true) { int r=atoi(dow.c_str()); if(r==0) r=7; return r; } else { dow=strlower(dow); if(dow=="mon" || dow=="mo" ) return 1; if(dow=="tu" || dow=="tue" || dow=="tues" || dow=="di" ) return 2; if(dow=="wed" || dow=="mi" ) return 3; if(dow=="th" || dow=="thu" || dow=="thur" || dow=="thurs" || dow=="do" ) return 4; if(dow=="fri" || dow=="fr" ) return 5; if(dow=="sat" || dow=="sa" ) return 6; if(dow=="sun" || dow=="so" ) return 7; return -1; } }
static int get_resp(int *resp, int count) { char buf[STD_RESP_LEN + 1], *tmp; char **argv; int len, cmd, i; len = read(serverfd, buf, STD_RESP_LEN); if (len > 0) { buf[len] = '\0'; tmp = get_command(buf, &cmd); switch (cmd) { case DEAD: printf_die(stdout, "Killed: %s\n", 1, *tmp ? tmp : "unknown reason"); break; case OK: break; case ERROR: printf_die(stderr, "Error: %s\n", 2, *tmp ? tmp : "unknown error"); break; default: printf_die(stderr, "Error: unexpected response from the server\n", 2); break; } argv = malloc(count * sizeof(char *)); count = tokenize_args(tmp, count, argv); for (i = 0; i < count; i++) { if (str_isnumber(argv[i])) resp[i] = atoi(argv[i]); else resp[i] = -1; } free(argv); } else count = 0; return count; }
int main(int argc, char *argv[]) { log_file("Starting arss ..."); test_fft(); FILE *fin; FILE *fout; int32_t i; double **sound, **image, basefreq=0, maxfreq=0, pixpersec=0, bpo=0, brightness=1; int32_t channels, samplecount=0, samplerate=0, Xsize=0, Ysize=0, format_param=0; int32_t clockb; char mode=0, *in_name=NULL, *out_name=NULL; // initialisation of global using defaults defined in dsp.h pi=PI_D; LOGBASE=LOGBASE_D; LOOP_SIZE_SEC=LOOP_SIZE_SEC_D; BMSQ_LUT_SIZE=BMSQ_LUT_SIZE_D; #ifdef QUIET quiet=1; #else quiet=0; #endif printf("The Analysis & Resynthesis Sound Spectrograph %s\n", version); srand(time(NULL)); for (i=1; i<argc; i++) { if (strcmp(argv[i], "/?")==0) // DOS friendly help { argv[i][0] = '-'; argv[i][1] = 'h'; } if (argv[i][0] != '-') // if the argument is not a function { if (in_name==NULL) // if the input file name hasn't been filled in yet in_name = argv[i]; else if (out_name==NULL) // if the input name has been filled but not the output name yet out_name = argv[i]; else // if both names have already been filled in { fprintf(stderr, "You can only have two file names as parameters.\nRemove parameter \"%s\".\nExiting with error.\n", argv[i]); exit(EXIT_FAILURE); } } else // if the argument is a parameter { if (strcmp(argv[i], "--analysis")==0 || strcmp(argv[i], "-a")==0) mode=1; if (strcmp(argv[i], "--sine")==0 || strcmp(argv[i], "-s")==0) mode=2; if (strcmp(argv[i], "--noise")==0 || strcmp(argv[i], "-n")==0) mode=3; if (strcmp(argv[i], "--quiet")==0 || strcmp(argv[i], "-q")==0) quiet=1; if (strcmp(argv[i], "--linear")==0 || strcmp(argv[i], "-l")==0) LOGBASE=1.0; if (strcmp(argv[i], "--sample-rate")==0 || strcmp(argv[i], "-r")==0) if (str_isnumber(argv[++i])) samplerate = atoi(argv[i]); else { fprintf(stderr, MSG_NUMBER_EXPECTED, argv[i-1]); exit(EXIT_FAILURE); } if (strcmp(argv[i], "--min-freq")==0 || strcmp(argv[i], "-min")==0) if (str_isnumber(argv[++i])) { basefreq = atof(argv[i]); if (basefreq==0) basefreq = DBL_MIN; // Set it to this extremely close-to-zero number so that it's considered set } else { fprintf(stderr, MSG_NUMBER_EXPECTED, argv[i-1]); exit(EXIT_FAILURE); } if (strcmp(argv[i], "--max-freq")==0 || strcmp(argv[i], "-max")==0) if (str_isnumber(argv[++i])) maxfreq = atof(argv[i]); else { fprintf(stderr, MSG_NUMBER_EXPECTED, argv[i-1]); exit(EXIT_FAILURE); } if (strcmp(argv[i], "--bpo")==0 || strcmp(argv[i], "-b")==0) if (str_isnumber(argv[++i])) bpo = atof(argv[i]); else { fprintf(stderr, MSG_NUMBER_EXPECTED, argv[i-1]); exit(EXIT_FAILURE); } if (strcmp(argv[i], "--pps")==0 || strcmp(argv[i], "-p")==0) if (str_isnumber(argv[++i])) pixpersec = atof(argv[i]); else { fprintf(stderr, MSG_NUMBER_EXPECTED, argv[i-1]); exit(EXIT_FAILURE); } if (strcmp(argv[i], "--height")==0 || strcmp(argv[i], "-y")==0) if (str_isnumber(argv[++i])) Ysize = atoi(argv[i]); else { fprintf(stderr, MSG_NUMBER_EXPECTED, argv[i-1]); exit(EXIT_FAILURE); } if (strcmp(argv[i], "--width")==0 || strcmp(argv[i], "-x")==0) if (str_isnumber(argv[++i])) Xsize = atoi(argv[i]); else { fprintf(stderr, MSG_NUMBER_EXPECTED, argv[i-1]); exit(EXIT_FAILURE); } if (strcmp(argv[i], "--loop-size")==0) if (str_isnumber(argv[++i])) LOOP_SIZE_SEC = atoi(argv[i]); else { fprintf(stderr, MSG_NUMBER_EXPECTED, argv[i-1]); exit(EXIT_FAILURE); } if (strcmp(argv[i], "--log-base")==0) if (str_isnumber(argv[++i])) LOGBASE = atof(argv[i]); else { fprintf(stderr, MSG_NUMBER_EXPECTED, argv[i-1]); exit(EXIT_FAILURE); } if (strcmp(argv[i], "--bmsq-lut-size")==0) if (str_isnumber(argv[++i])) BMSQ_LUT_SIZE = atoi(argv[i]); else { fprintf(stderr, MSG_NUMBER_EXPECTED, argv[i-1]); exit(EXIT_FAILURE); } if (strcmp(argv[i], "--pi")==0) // lol if (str_isnumber(argv[++i])) pi = atof(argv[i]); else { fprintf(stderr, MSG_NUMBER_EXPECTED, argv[i-1]); exit(EXIT_FAILURE); } if (strcmp(argv[i], "--format-param")==0 || strcmp(argv[i], "-f")==0) if (str_isnumber(argv[++i])) format_param = atoi(argv[i]); else { fprintf(stderr, MSG_NUMBER_EXPECTED, argv[i-1]); exit(EXIT_FAILURE); } if (strcmp(argv[i], "--brightness")==0 || strcmp(argv[i], "-g")==0) if (str_isnumber(argv[++i])) brightness = atof(argv[i]); else { fprintf(stderr, MSG_NUMBER_EXPECTED, argv[i-1]); exit(EXIT_FAILURE); } // TODO implement --duration, -d if (strcmp(argv[i], "--version")==0 || strcmp(argv[i], "-v")==0) { printf("Copyright (C) 2005-2008 Michel Rouzic\nProgram last modified by its author on %s\n", date); exit(EXIT_SUCCESS); } if (strcmp(argv[i], "--help")==0 || strcmp(argv[i], "-h")==0) { print_help(); exit(EXIT_SUCCESS); } if (strcmp(argv[i], "--adv-help")==0) { print_adv_help(); exit(EXIT_SUCCESS); } } } if (in_name!=NULL) // if in_name has already been filled in { fin=fopen(in_name, "rb"); // try to open it if (fin==NULL) { fprintf(stderr, "The input file %s could not be found\nExiting with error.\n", in_name); exit(EXIT_FAILURE); } printf("Input file : %s\n", in_name); } else { if (quiet==1) { fprintf(stderr, "Please specify an input file.\nExiting with error.\n"); exit(EXIT_FAILURE); } printf("Type 'help' to read the manual page\n"); do { printf("Input file : "); in_name=getstring(); if (strcmp(in_name, "help")==0) // if 'help' has been typed { fin=NULL; print_help(); // print the help } else fin=fopen(in_name, "rb"); } while (fin==NULL); } if (out_name!=NULL) // if out_name has already been filled in { fout=fopen(out_name, "wb"); if (fout==NULL) { fprintf(stderr, "The output file %s could not be opened.\nPlease make sure it isn't opened by any other program and press Return.\nExiting with error.\n", out_name); exit(EXIT_FAILURE); } printf("Output file : %s\n", out_name); } else { if (quiet==1) { fprintf(stderr, "Please specify an output file.\nExiting with error.\n"); exit(EXIT_FAILURE); } printf("Output file : "); out_name=getstring(); fout=fopen(out_name, "wb"); while (fout==NULL) { fprintf(stderr, "The output file %s could not be opened.\nPlease make sure it isn't opened by any other program and press Return.\n", out_name); getchar(); fout=fopen(out_name, "wb"); } } for (i=0; i<strlen(in_name); i++) if (in_name[i]>='A' && in_name[i]<='Z') in_name[i] -= 'A' - 'a'; // make the string lowercase if (mode==0 && strstr(in_name, ".wav")!=NULL && strstr(in_name, ".wav")[4]==0) mode=1; // Automatic switch to the Analysis mode if (mode==0) do { if (quiet==1) { fprintf(stderr, "Please specify an operation mode.\nUse either --analysis (-a), --sine (-s) or --noise (-n).\nExiting with error.\n"); exit(EXIT_FAILURE); } printf("Choose the mode (Press 1, 2 or 3) :\n\t1. Analysis\n\t2. Sine synthesis\n\t3. Noise synthesis\n> "); mode=getfloat(); } while (mode!=1 && mode!=2 && mode!=3); if (mode==1) { sound=wav_in(fin, &channels, &samplecount, &samplerate); // Sound input log_file("Read sound..."); #ifdef DEBUG printf("samplecount : %i\nchannels : %i\n", samplecount, channels); #endif settingsinput(&Ysize, samplecount, &samplerate, &basefreq, maxfreq, &pixpersec, &bpo, Xsize, 0); // User settings input image = anal(sound[0], samplecount, samplerate, &Xsize, Ysize, bpo, pixpersec, basefreq); // Analysis if (brightness!=1.0) brightness_control(image, Ysize, Xsize, 1.0/brightness); bmp_out(fout, image, Ysize, Xsize); // Image output } if (mode==2 || mode==3) { sound = calloc (1, sizeof(double *)); image = bmp_in(fin, &Ysize, &Xsize); // Image input if (format_param==0) // if the output format parameter is undefined if (quiet==0) // if prompting is allowed format_param = wav_out_param(); else format_param = 32; // default is 32 settingsinput(&Ysize, samplecount, &samplerate, &basefreq, maxfreq, &pixpersec, &bpo, Xsize, 1); // User settings input if (brightness!=1.0) brightness_control(image, Ysize, Xsize, brightness); if (mode==2) sound[0] = synt_sine(image, Xsize, Ysize, &samplecount, samplerate, basefreq, pixpersec, bpo); // Sine synthesis else sound[0] = synt_noise(image, Xsize, Ysize, &samplecount, samplerate, basefreq, pixpersec, bpo); // Noise synthesis wav_out(fout, sound, 1, samplecount, samplerate, format_param); } clockb=gettime(); printf("Processing time : %.3f s\n", (double) (clockb-clocka)/1000.0); win_return(); return 0; }