Ejemplo n.º 1
0
void introducirSincronizacion() {

    int contador_picos = 0;

    for(indice_muestras=0 ; indice_muestras<LONGITUD_SINCRONIZACION ; ) {

        if(contador_picos % (SM) == 0) {

            for(indice_sincronizacion = 0 ; indice_sincronizacion < LONGITUD_PICO ; indice_sincronizacion++) {

                sincronizacion1_float[indice_muestras] = VALOR_PICO;
                indice_muestras++;
            }

        } else {

            sincronizacion1_float[indice_muestras] = 0;
            indice_muestras++;
        }

        contador_picos++;


    }


    for(indice_sincronizacion=0 ; indice_sincronizacion<LONGITUD_SINCRONIZACION ; indice_sincronizacion++) {

        sincronizacion1_fr32[indice_sincronizacion]=float_to_fr32(sincronizacion1_float[indice_sincronizacion]/VALOR_PICO);

    }

}
Ejemplo n.º 2
0
void calc_hamming_coef(void)
{
	int index;
	float w;
	for (index = 0; index < WINDOW_LENGTH; index++) {
		w = 0.54 - 0.46 * cosf( 2 * PI * (float) index / (float) (WINDOW_LENGTH-1) );
		hamming_coef[index] = float_to_fr32(w);
	}
}
Ejemplo n.º 3
0
int main() {
	/* Initialization */
	calc_shelving_coef();
	calc_hamming_coef();
	calc_bank_gain();
	twidfftrad2_fr32(twiddle_table, WINDOW_LENGTH);
	calc_dct_coef();
	/* /Initialization */

	int index;
	for (index = 0; index < TOTAL_LENGTH; index++) {
		input_fr[index] = float_to_fr32(test_input[index]);
	}

	pre_emphasis(input_fr, TOTAL_LENGTH);
	// printf("pre emphasis done\n");

	int frame_offset = 0;
	fract32 frame_data[WINDOW_LENGTH];
	int obs_length = 0;

	int frame_num;
	for (frame_num = 0; frame_num < FRAME_NUM; frame_num++) {
		for (index = 0; index < WINDOW_LENGTH; index++) {
			frame_data[index] = input_fr[index+frame_offset];
		}

		hamming(frame_data);

		float energy = calc_energy(frame_data, WINDOW_LENGTH);

		if (energy > 0.1) {
			float mfcc[FEAT_NUM] = {0.0};
			calc_mfcc(frame_data, mfcc_matrix[obs_length]);
			obs_length++;
		}
		frame_offset += WINDOW_LENGTH/2;
	}

	int feat_num;
	for (frame_num = 0; frame_num < obs_length; frame_num++) {
		for (feat_num = 0; feat_num < FEAT_NUM; feat_num++) {
			printf("%f\t", mfcc_matrix[frame_num][feat_num]);
		}
		printf("\n");
	}

	return 0;
}
Ejemplo n.º 4
0
void sumador() {

    //Sumar
    for(indice_muestrasModuladas=0 ; indice_muestrasModuladas<NUM_MODULADOS ; indice_muestrasModuladas++) {

        trama_salida_mod_float[indice_muestrasModuladas]=(garraiatzaile_real[indice_muestrasModuladas] - garraiatzaile_imag[indice_muestrasModuladas]);
    }

    //Convertir de float a fract32 para que se envie al dac
    for(indice_muestrasModuladas=0 ; indice_muestrasModuladas<NUM_MODULADOS ; indice_muestrasModuladas++) {

        trama_salida_mod_fr32[indice_muestrasModuladas]=REGULADOR_POTENCIA*float_to_fr32(trama_salida_mod_float[indice_muestrasModuladas]/(VALOR_MAX_CONSTELACION));

    }

}
Ejemplo n.º 5
0
void module_process_frame(const f32* in, f32* out) {

    static fract32* const pIn[4] = { &in0, &in1, &in2, &in3 };
    u32 frame;
    u8 chan;
    // i/o buffers are (sometimes) interleaved in portaudio,
    // so need to introduce 1-sample delay for x-channel processing
    //  static int _in0, _in1, _in2, _in3;
    for(frame=0; frame<BLOCKSIZE; frame++) {
        calc_frame();
        for(chan=0; chan<NUMCHANNELS; chan++) { // stereo interleaved
            *out++ = fr32_to_float(frameVal);
            *(pIn[chan]) = float_to_fr32(*in++);
        }
    }
}
Ejemplo n.º 6
0
float calc_energy(fract32 data[], int arr_length)
{
	int shift = 9;
	// shift = log_2(arr_length)

	fract32 energy_fr = float_to_fr32(0.0);

	int index;
	for (index = 0; index < arr_length; index++) {
		fract32 temp = mult_fr1x32x32(data[index], data[index]);
		temp = shl_fr1x32(temp, -shift);
		// right shift in case of overflow
		energy_fr = add_fr1x32(energy_fr, temp);
	}

	float energy = fr32_to_float(energy_fr) * (1<<shift);

	return energy;
}