Device_impl* new_DSP_gc(DSP* dsp) { DSP_gc* gc = memory_alloc_item(DSP_gc); if (gc == NULL) return NULL; if (!Device_impl_init(&gc->parent, del_DSP_gc)) { memory_free(gc); return NULL; } gc->parent.device = (Device*)dsp; Device_set_process((Device*)dsp, DSP_gc_process); gc->map = NULL; if (!Device_impl_register_set_envelope( &gc->parent, "p_e_map.json", NULL, DSP_gc_set_map, NULL)) { del_DSP_gc(&gc->parent); return NULL; } Device_register_port(gc->parent.device, DEVICE_PORT_TYPE_RECEIVE, 0); Device_register_port(gc->parent.device, DEVICE_PORT_TYPE_SEND, 0); return &gc->parent; }
Device_impl* new_Proc_ringmod(void) { Proc_ringmod* ringmod = memory_alloc_item(Proc_ringmod); if (ringmod == NULL) return NULL; if (!Device_impl_init(&ringmod->parent, del_Proc_ringmod)) { del_Device_impl(&ringmod->parent); return NULL; } ringmod->parent.create_pstate = new_Ringmod_pstate; ringmod->parent.init_vstate = Ringmod_vstate_init; return &ringmod->parent; }
Device_impl* new_Proc_noise(void) { Proc_noise* noise = memory_alloc_item(Proc_noise); if (noise == NULL) return NULL; if (!Device_impl_init(&noise->parent, del_Proc_noise)) { del_Device_impl(&noise->parent); return NULL; } noise->parent.create_pstate = new_Noise_pstate; noise->parent.get_vstate_size = Noise_vstate_get_size; noise->parent.init_vstate = Noise_vstate_init; return &noise->parent; }
Device_impl* new_DSP_freeverb(DSP* dsp) { DSP_freeverb* freeverb = memory_alloc_item(DSP_freeverb); if (freeverb == NULL) return NULL; if (!Device_impl_init(&freeverb->parent, del_DSP_freeverb)) { memory_free(freeverb); return NULL; } freeverb->parent.device = (Device*)dsp; Device_set_process((Device*)dsp, DSP_freeverb_process); Device_set_state_creator( freeverb->parent.device, DSP_freeverb_create_state); DSP_set_clear_history((DSP*)freeverb->parent.device, DSP_freeverb_clear_history); Device_impl_register_reset_device_state( &freeverb->parent, DSP_freeverb_reset); // Register key set/update handlers bool reg_success = true; reg_success &= Device_impl_register_set_float( &freeverb->parent, "p_f_refl.json", initial_reflect, DSP_freeverb_set_refl, NULL); reg_success &= Device_impl_register_set_float( &freeverb->parent, "p_f_damp.json", initial_damp, DSP_freeverb_set_damp, NULL); Device_impl_register_set_audio_rate( &freeverb->parent, DSP_freeverb_set_audio_rate); Device_register_port(freeverb->parent.device, DEVICE_PORT_TYPE_RECEIVE, 0); Device_register_port(freeverb->parent.device, DEVICE_PORT_TYPE_SEND, 0); freeverb->gain = 0; freeverb->reflect = 0; freeverb->reflect1 = 0; freeverb->damp = 0; freeverb->damp1 = 0; freeverb->wet = 0; freeverb->wet1 = 0; freeverb->wet2 = 0; // freeverb->dry = 0; freeverb->width = 0; DSP_freeverb_update_reflectivity(freeverb, initial_reflect); DSP_freeverb_update_damp(freeverb, initial_damp); const double fixed_gain = 0.015; DSP_freeverb_update_gain(freeverb, fixed_gain); DSP_freeverb_update_wet(freeverb, initial_wet); return &freeverb->parent; }