Example #1
0
static void dev_RT_process(SoundPlugin *plugin, int64_t time, int num_frames, float **inputs, float **outputs){
  Devdata *devdata = (Devdata*)plugin->data;
  Data *data = devdata->reply.data;

  int num_inputs = 0;
  int num_outputs = 0;

  if (data != NULL) {
    num_inputs = data->voices[0].dsp_instance->getNumInputs();
    num_outputs = data->voices[0].dsp_instance->getNumOutputs();

    if (num_inputs > MAX_CHANNELS || num_outputs > MAX_CHANNELS){
      for(int ch = 0 ; ch < MAX_CHANNELS ; ch++)
        memset(outputs[ch], 0, num_frames*sizeof(float));
      return;
    }

    if (devdata->reply.is_instrument)
      RT_process_instrument2(num_outputs, data, time, num_frames, inputs, outputs);
    else
      RT_process_effect2(data, time, num_frames, inputs, outputs);
  }

  // clear unused channels
  for(int ch = num_outputs ; ch < MAX_CHANNELS ; ch++)
    memset(outputs[ch], 0, num_frames*sizeof(float));

}
Example #2
0
static void RT_process_effect(SoundPlugin *plugin, int64_t time, int num_frames, float **inputs, float **outputs){
  Data *data = (Data*)plugin->data;
  RT_process_effect2(data, time, num_frames, inputs, outputs);
}