void PeakODF::reset() { reset_mq(mq_params); destroy_mq(mq_params); mq_params->frame_size = frame_size; mq_params->num_bins = (frame_size/2) + 1; mq_params->fundamental = 44100.0 / frame_size; /* TODO: change to params->sampling_rate */ init_mq(mq_params); }
int init_mq(MQParameters* params) { /* TODO: check memory allocation */ /* allocate memory for window */ params->window = (sample*) malloc(sizeof(sample) * params->frame_size); int i; for(i = 0; i < params->frame_size; i++) { params->window[i] = 1.0; } hann_window(params->frame_size, params->window); /* allocate memory for FFT */ params->fft_in = (sample*) fftw_malloc(sizeof(sample) * params->frame_size); params->fft_out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * params->num_bins); params->fft_plan = fftw_plan_dft_r2c_1d(params->frame_size, params->fft_in, params->fft_out, FFTW_ESTIMATE); /* set other variables to defaults */ reset_mq(params); return 0; }
int init_mq(MQParameters* params) { // allocate memory for window params->window = (sample*) malloc(sizeof(sample) * params->frame_size); int i; for(i = 0; i < params->frame_size; i++) { params->window[i] = 1.0; } hann_window(params->frame_size, params->window); // allocate memory for FFT params->fft_in = (sample*) fftw_malloc(sizeof(sample) * params->frame_size); params->fft_out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * params->num_bins); params->fft_plan = fftw_plan_dft_r2c_1d(params->frame_size, params->fft_in, params->fft_out, FFTW_ESTIMATE); // set other variables to defaults params->prev_peaks = NULL; params->prev_peaks2 = NULL; reset_mq(params); return 0; }