示例#1
0
/*-------------------------------------------------*/
void filter_set_window_type(Filter* self, filter_window_t window)
{
  if(window == self->window_type) return;

  self->window_type = window;
  void (*init_window)(Filter*) = NULL;
  
  switch(self->window_type)
    {
      case FILTER_WINDOW_RECT : 
        init_window = filter_init_rect_window;
        break;
      case FILTER_WINDOW_HANN:
        init_window = filter_init_hann_window;
        break;
      case FILTER_WINDOW_HAMMING:
        init_window = filter_init_hamming_window;
        break;
      case FILTER_WINDOW_BLACKMANN:
        init_window = filter_init_blackmann_window;
        break;

      default:break;
    }
  if(init_window != NULL)
    init_window(self);

  filter_set_cutoff(self, self->cutoff);  
}
示例#2
0
static
void
	set_parameter_osc_all_cutoff
(synth_parameter_union_t 	 value,
 voice_t					*voice)
{
	for (int i = 0; i < NUM_OSCILLATORS; i++)
	{
        filter_set_cutoff
		    (&voice->a_filters[i],
             value.real_value);
	}
}
示例#3
0
/*-------------------------------------------------*/
void filter_set_sample_rate(Filter* self, float sample_rate)
{
  self->sample_rate = sample_rate;
  filter_set_cutoff(self, self->cutoff);
}
示例#4
0
/*-------------------------------------------------*/
void filter_set_filter_type(Filter* self, filter_type_t type)
{
  if((self->type == type) || (type < 0) || (type >= FILTER_NUMBER_OF_TYPES)) 
    return;
  filter_set_cutoff(self, self->cutoff);
}