static void init(state_t* state) { state->color = (color_t) {0.0, 0.0, 0.0, 0.0}; freq_init(&state->freq_state, 0.5, 0); state->type = OSC_SINE; state->last_t = 0; state->kx = 1.0; state->ky = 1.0; state->rho = 0.5; }
int num_to_freq(int n, unsigned int *f) { freq_init(); if (f != NULL && n>=0 && n<32) { //*f = (unsigned int)floor(BB_BASEFREQUENCY * pow(BB_SEMITONE, n)); *f = (unsigned int)floor(frequencies[n]); return 0; } return -1; }
int freq_to_num(unsigned int f, int *n) { /* frequencies[0] = (unsigned int)floor(BB_BASEFREQUENCY * pow(BB_SEMITONE, 0)); frequencies[31] = (unsigned int)floor(BB_BASEFREQUENCY * pow(BB_SEMITONE, 31)); if (n != NULL && f >= frequencies[0]-BB_THRESHOLD*pow(BB_SEMITONE, 0) && f <= frequencies[31]+BB_THRESHOLD*pow(BB_SEMITONE, 31)) { unsigned int i; for (i=0; i<32; i++) { unsigned int freq = (unsigned int)floor(BB_BASEFREQUENCY * pow(BB_SEMITONE, i)); frequencies[i] = freq; if (abs(frequencies[i] - f) <= BB_THRESHOLD*pow(BB_SEMITONE, i)) { //if (abs(frequencies[i] - f) <= BB_THRESHOLD) { *n = i; return 0; } } } */ freq_init(); if (n != NULL && f >= frequencies[0]-BB_THRESHOLD && f <= frequencies[31]+BB_THRESHOLD) { unsigned int i; for (i=0; i<32; i++) { if (abs(frequencies[i] - f) <= BB_THRESHOLD) { *n = i; return 0; } } } /* if (n!=NULL && f>freq_range[0].start && f<freq_range[31].end) { unsigned int i; for (i=0; i<32; i++) { if (f>freq_range[i].start && f<freq_range[i].end) { *n = i; return 0; } } } */ return -1; }