Ejemplo n.º 1
0
void measure_speed (float *speed, uint32_t size){
	shift_right(speed,size);	//Abrindo Espaço na Fila
	
	//Medição de velocidade pela Duty:
	if (flag_speed == SPEED_DUTY){
		measure_speed_duty(speed);
		if (speed[0] > MAX_DUTY){
			flag_speed = SPEED_FREQ;
		}
	} 
	//Medição de velocidade pela Freq:
	else if (flag_speed == SPEED_FREQ){
		measure_speed_freq(speed);
		if (speed[0] < MIN_FREQ){
			flag_speed = SPEED_DUTY;
		}
	}
	
	speed[0] = speed[0]*RPMtoRADs;	//Convertendo RPM para Rad/s
	filter_lowpass(speed,&Hd,size);
	//speed[0] = N0*speed[0] + N1*speed[1];
}
Ejemplo n.º 2
0
char	*play(t_platine *p)
{
  char	*str;
  if (p->cmd[p->index][0] == '#')
    str = strdup("shrrrck");
  else
    str = remove_cut(strdup(p->cmd[p->index]));
  if (p->lowpass == 1)
    str = filter_lowpass(str);
  if (p->highpass == 1)
    str = filter_highpass(str);
  if (p->doubl == 1)
    str = fx_double(str);
  if (p->flanger == 1)
    str = flanger(str);
  if (p->echo == 1)
    str = fx_echo(str);
  reset_all_fx(p);
  if (p->reversed == 1)
    return (revstr(str));
  return (str);
}
Ejemplo n.º 3
0
int main(int argc, char **argv)
{
	struct tap tapfile;
	struct wav wavfile;
	FILE *infile;
	long pulse;
	long i;
	fixedpoint len, accum;
	long channels[2];
	int wave[2];
	int sample;
	
	getopts(argc, argv);
	if (invert) {
		wave[0] = LOW;
		wave[1] = HIGH;
	} else {
		wave[0] = HIGH;
		wave[1] = LOW;
	}
	
	if (optind == argc) {
		infile = stdin;
	} else if (optind == argc - 1) {
		if (!strcmp(argv[optind], "-")) {
			infile = stdin;
		} else {
			infile = fopen(argv[optind], "rb");
			if (!infile) {
				perror(argv[optind]);
				return 1;
			}
		}
	} else {
		fprintf(stderr, "%s: too many arguments\n", argv0);
		usage();
		return 1;
	}
	if (tap_read_header(&tapfile, infile)) {
		fprintf(stderr, "%s: error reading TAP file\n", argv0);
		return 1;
	}
	wavfile.SampleRate = samplerate;
	wavfile.BitsPerSample = 8;
	wavfile.NumChannels = 1;
	if (wav_write_header(&wavfile, stdout)) {
		fprintf(stderr, "%s: error writing WAV file\n", argv0);
		return 1;
	}
	filter_init(&lowpass_filter, lowpass_freq, wavfile.SampleRate);
#if 0
	/* put one initial sample so the first pulse is recognized */
	channels[0] = wave[1];
	wav_put_sample(&wavfile, channels);
	accum = TO_FIXED(1.5);
#else
	accum = TO_FIXED(2);
#endif
	while ((pulse = tap_get_pulse(&tapfile)) >= 0) {
		//fprintf(stderr, "pulse: %6ld (%04lx)\n", pulse, pulse);
		//if (pulse < 8*256)
			//++pulsehist[pulse/8];
		len = TO_FIXED(((double)pulse * samplerate / PAL_MHZ / speed / 1000000));

		if (len < TO_FIXED(2)) {
			fprintf(stderr, "%s: warning: pulse length (%ld) is less than 2 samples\n", argv0, pulse);
		}
#if 0
		accum = FIXED_F(len + accum);
#else
		len += accum;
		accum = FIXED_F(len);
#endif
#if 0
		fprintf(stderr, "%ld.%03ld 0.%03ld \n",
		        FIXED_I(len),
		        FIXED_F(len) * 1000 / FIXED_ONE,
		        FIXED_F(accum) * 1000 / FIXED_ONE);
#endif
		
		for (i = 0; i < FIXED_I(len) / 2 - 1; ++i) {
			channels[0] = filter_lowpass(&lowpass_filter, wave[0]) << 16;
			wav_put_sample(&wavfile, channels);
		}
		
		for (; i < FIXED_I(len) - 2; ++i) {
			channels[0] = filter_lowpass(&lowpass_filter, wave[1]) << 16;
			wav_put_sample(&wavfile, channels);
		}
#if 0
		channels[0] = FIXED_MUL(wave[1], accum) +
		              FIXED_MUL(wave[0], FIXED_ONE - accum);
		wav_put_sample(&wavfile, channels);
#else
		sample = FIXED_MUL(wave[1], accum);
		channels[0] = filter_lowpass(&lowpass_filter, sample) << 16;
		wav_put_sample(&wavfile, channels);
		sample -= wave[1];
		channels[0] = filter_lowpass(&lowpass_filter, sample) << 16;
		wav_put_sample(&wavfile, channels);
#endif
	}
	wav_close(&wavfile);
	return 0;
}