HarmEnhancer::HarmEnhancer(Parameters *param, float *Rmag, float hfreq, float lfreq, float gain) { this->param = param; inputl = (float *) malloc (sizeof (float) * 44100+100);//param->PERIOD); inputr = (float *) malloc (sizeof (float) * 44100+100);//param->PERIOD); set_vol(0,gain); realvol = gain; itm1l = 0.0f; itm1r = 0.0f; otm1l = 0.0f; otm1r = 0.0f; hpffreq = hfreq; lpffreq = lfreq; hpfl = new AnalogFilter(param,3, hfreq, 1, 0); hpfr = new AnalogFilter(param,3, hfreq, 1, 0); lpfl = new AnalogFilter(param,2, lfreq, 1, 0); lpfr = new AnalogFilter(param,2, lfreq, 1, 0); limiter = new Compressor (param,inputl, inputr); limiter->Compressor_Change_Preset(0,4); calcula_mag(Rmag); }
static void runexciter (LADSPA_Handle instance, unsigned long sample_count, snd_seq_event_t * events, unsigned long event_count) { exciter_t *exc = (exciter_t *) instance; LADSPA_Data *const pinputl = exc->inputl; LADSPA_Data *const pinputr = exc->inputr; // LADSPA_Data dry = *(exc->dry); LADSPA_Data vol = *(exc->outvolume); LADSPA_Data pan = *(exc->panning); LADSPA_Data mag_1 = *(exc->mag_1); LADSPA_Data mag_2 = *(exc->mag_2); LADSPA_Data mag_3 = *(exc->mag_3); LADSPA_Data mag_4 = *(exc->mag_4); LADSPA_Data mag_5 = *(exc->mag_5); LADSPA_Data mag_6 = *(exc->mag_6); LADSPA_Data mag_7 = *(exc->mag_7); LADSPA_Data mag_8 = *(exc->mag_8); LADSPA_Data mag_9 = *(exc->mag_9); LADSPA_Data mag_10 = *(exc->mag_10); LADSPA_Data ffreq = *(exc->ffreq); unsigned long event_pos = 0; unsigned long pos; unsigned long count; int i; // memset (exc->efxoutl, 0, sizeof (LADSPA_Data) * sample_count); // memset (exc->efxoutr, 0, sizeof (LADSPA_Data) * sample_count); for (pos = 0, event_pos = 0; pos < sample_count; pos += STEP_SIZE) { while (event_pos < event_count) { switch (events[event_pos].type) { case SND_SEQ_EVENT_NOTEON: for (i = 0; i < POLY; i++) { if (events[event_pos].data.note.velocity != 0) { if (exc->rc.note_active[i] == 0) { exc->rc.note_active[i] = 1; exc->rc.rnote[i] = events[event_pos].data.note.note; exc->rc.gate[i] = 1; MiraChord (exc); calcula_mag (exc); if (exc->rc.cc) { lo_send (exc->m_host, exc->osc_configure_path, "ss", "schord", exc->rc.NombreAcorde); exc->rc.cc = 0; } break; } } if (events[event_pos].data.note.velocity == 0) { if ((exc->rc.note_active[i]) && (exc->rc.rnote[i] == events[event_pos].data.note.note)) { exc->rc.note_active[i] = 0; exc->rc.gate[i] = 0; break; } } } break; case SND_SEQ_EVENT_NOTEOFF: for (i = 0; i < POLY; i++) { if ((exc->rc.note_active[i]) && (exc->rc.rnote[i] == events[event_pos].data.note.note)) { exc->rc.note_active[i] = 0; exc->rc.gate[i] = 0; break; } } break; case SND_SEQ_EVENT_CONTROLLER: if (events[event_pos].data.control.param == 10) { pan = (float) events[event_pos].data.control.value / 128.0; break; } if (events[event_pos].data.control.param == 7) { vol = (float) events[event_pos].data.control.value / 128.0; break; } if (events[event_pos].data.control.param == 48) { mag_1 = (float) ((events[event_pos].data.control.value - 64.0) / 64.0); break; } if (events[event_pos].data.control.param == 49) { mag_2 = (float) ((events[event_pos].data.control.value - 64.0) / 64.0); break; } if (events[event_pos].data.control.param == 50) { mag_3 = (float) ((events[event_pos].data.control.value - 64.0) / 64.0); break; } if (events[event_pos].data.control.param == 51) { mag_4 = (float) ((events[event_pos].data.control.value - 64.0) / 64.0); break; } if (events[event_pos].data.control.param == 52) { mag_5 = (float) ((events[event_pos].data.control.value - 64.0) / 64.0); break; } if (events[event_pos].data.control.param == 53) { mag_6 = (float) ((events[event_pos].data.control.value - 64.0) / 64.0); break; } if (events[event_pos].data.control.param == 54) { mag_7 = (float) ((events[event_pos].data.control.value - 64.0) / 64.0); break; } if (events[event_pos].data.control.param == 55) { mag_8 = (float) ((events[event_pos].data.control.value - 64.0) / 64.0); break; } if (events[event_pos].data.control.param == 56) { mag_9 = (float) ((events[event_pos].data.control.value - 64.0) / 64.0); break; } if (events[event_pos].data.control.param == 57) { mag_10 = (float) ((events[event_pos].data.control.value - 64.0) / 64.0); break; } if (events[event_pos].data.control.param == 58) { ffreq = (float) 21.0 + (float) (events[event_pos].data.control.value * 10000.0 / 127.0); break; } } event_pos++; } count = (sample_count - pos) > STEP_SIZE ? STEP_SIZE : sample_count - pos; if (exc->rmag_1 != mag_1) { exc->rmag_1 = mag_1; calcula_mag (exc); } if (exc->rmag_2 != mag_2) { exc->rmag_2 = mag_2; calcula_mag (exc); } if (exc->rmag_3 != mag_3) { exc->rmag_3 = mag_3; calcula_mag (exc); } if (exc->rmag_4 != mag_4) { exc->rmag_4 = mag_4; calcula_mag (exc); } if (exc->rmag_5 != mag_5) { exc->rmag_5 = mag_5; calcula_mag (exc); } if (exc->rmag_6 != mag_6) { exc->rmag_6 = mag_6; calcula_mag (exc); } if (exc->rmag_7 != mag_7) { exc->rmag_7 = mag_7; calcula_mag (exc); } if (exc->rmag_8 != mag_8) { exc->rmag_8 = mag_8; calcula_mag (exc); } if (exc->rmag_9 != mag_9) { exc->rmag_9 = mag_9; calcula_mag (exc); } if (exc->rmag_10 != mag_10) { exc->rmag_10 = mag_10; calcula_mag (exc); } if (exc->rfreq != ffreq) { exc->rfreq = ffreq; setfreq (exc, &exc->lhpf, exc->rfreq); setfreq (exc, &exc->rhpf, exc->rfreq); } out_exciter (exc, pinputl, pinputr, count); } }