Exemple #1
0
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;
	}
}
Exemple #3
0
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;
}
Exemple #4
0
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;
}