Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: This feature may not be available in some browsers.
t_int *lfo_tilde_perform(t_int *w)
{
t_lfo_tilde *x = (t_lfo_tilde *)(w[1]);
x->lfo->process();
return (w + 4);
}
void lfo_tilde_dsp(t_lfo_tilde *x, t_signal **sp)
{
t_sample *out = sp[0]->s_vec;
x->samplerate = sp[0]->s_sr;
x->blockSize = sp[0]->s_n;
DSP::initializeAudio(x->samplerate, x->blockSize);
x->lfo->initialize(dsp_math::unique_string_id("lfo"));
x->lfo->setMode(LFOMode::Buffered);
x->lfo->connectOutputToBus(DSPBusManager::registerModulationBus(x->lfo->getName() + "_bus", out));
dsp_add(lfo_tilde_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
}
void *lfo_tilde_new(t_floatarg f)
{
t_lfo_tilde *x = (t_lfo_tilde *)pd_new(lfo_tilde_class);
DSP::registerLogger(&log);
x->lfo = new LFO();
x->lfo->setIdleSignal(f);
x->lfo->onPhaseWrap = [x]()
{
outlet_bang(x->x_out_bang);
};
x->x_out_sig = outlet_new(&x->x_obj, &s_signal);
x->x_out_bang = outlet_new(&x->x_obj, &s_bang);
return (void *)x;
}
void lfo_tilde_free(t_lfo_tilde *x)
{
delete x->lfo;
}
extern "C"
{
void lfo_tilde_setup(void)
{
lfo_tilde_class = class_new(gensym("lfo~"),
(t_newmethod)lfo_tilde_new,
(t_method)lfo_tilde_free,
sizeof(t_lfo_tilde),
CLASS_DEFAULT,
A_DEFFLOAT,
0);
class_addmethod(lfo_tilde_class, (t_method)lfo_tilde_dsp, gensym("dsp"), A_CANT, 0);
CLASS_MAINSIGNALIN(lfo_tilde_class, t_lfo_tilde, inletValue);
class_addmethod(lfo_tilde_class, (t_method)lfo_tilde_setfreq, gensym("freq"), A_DEFFLOAT, A_NULL);
class_addmethod(lfo_tilde_class, (t_method)lfo_tilde_settype, gensym("type"), A_DEFFLOAT, A_NULL);
class_addmethod(lfo_tilde_class, (t_method)lfo_tilde_setoffset, gensym("offset"), A_DEFFLOAT, A_NULL);
class_addmethod(lfo_tilde_class, (t_method)lfo_tilde_setdepth, gensym("depth"), A_DEFFLOAT, A_NULL);
class_addmethod(lfo_tilde_class, (t_method)lfo_tilde_setshape, gensym("shape"), A_DEFFLOAT, A_NULL);
class_addmethod(lfo_tilde_class, (t_method)lfo_tilde_setpw, gensym("pw"), A_DEFFLOAT, A_NULL);
class_addmethod(lfo_tilde_class, (t_method)lfo_tilde_setsmooth, gensym("smooth"), A_DEFFLOAT, A_NULL);
class_addmethod(lfo_tilde_class, (t_method)lfo_tilde_unipolar, gensym("unipolar"), A_DEFFLOAT, A_NULL);
class_addmethod(lfo_tilde_class, (t_method)lfo_tilde_reset, gensym("reset"), A_NULL);
}
}
t_int *adsr_perform(t_int *w)
{
t_adsr_tilde *x = (t_adsr_tilde *)(w[1]);
x->adsr->process();
return (w + 4);
}
void adsr_dsp(t_adsr_tilde *x, t_signal **sp)
{
t_sample *out = sp[0]->s_vec;
x->samplerate = sp[0]->s_sr;
x->blockSize = sp[0]->s_n;
DSP::initializeAudio(x->samplerate, x->blockSize);
x->adsr->initialize(dsp_math::unique_string_id("adsr"));
x->adsr->connectOutputToBus(DSPBusManager::registerModulationBus(x->adsr->getName() + "_bus", out));
dsp_add(adsr_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
}
// === Object constructor ===
void *adsr_new(t_floatarg f)
{
t_adsr_tilde *x = (t_adsr_tilde *)pd_new(adsr_tilde_class);
x->x_out = outlet_new(&x->x_obj, &s_signal);
DSP::registerLogger(&log);
x->adsr = new ADSR();
x->adsr->setStartAtCurrent(f != 0);
return (void *)x;
}
void adsr_tilde_free(t_adsr_tilde *x)
{
delete x->adsr;
}
extern "C"
{
void adsr_tilde_setup(void)
{
adsr_tilde_class = class_new(gensym("adsr~"),
(t_newmethod)adsr_new,
(t_method)adsr_tilde_free,
sizeof(t_adsr_tilde),
CLASS_DEFAULT,
A_DEFFLOAT,
0);
class_addmethod(adsr_tilde_class, (t_method)adsr_dsp, gensym("dsp"), A_CANT, 0);
CLASS_MAINSIGNALIN(adsr_tilde_class, t_adsr_tilde, inletValue);
class_addmethod(adsr_tilde_class, (t_method)adsr_trigger_start, gensym("start"), A_NULL);
class_addmethod(adsr_tilde_class, (t_method)adsr_trigger_stop, gensym("stop"), A_NULL);
class_addmethod(adsr_tilde_class, (t_method)adsr_attack, gensym("attack"), A_DEFFLOAT, A_NULL);
class_addmethod(adsr_tilde_class, (t_method)adsr_decay, gensym("decay"), A_DEFFLOAT, A_NULL);
class_addmethod(adsr_tilde_class, (t_method)adsr_sustain, gensym("sustain"), A_DEFFLOAT, A_NULL);
class_addmethod(adsr_tilde_class, (t_method)adsr_release, gensym("release"), A_DEFFLOAT, A_NULL);
class_addmethod(adsr_tilde_class, (t_method)adsr_attackshape, gensym("attackshape"), A_DEFFLOAT, A_NULL);
class_addmethod(adsr_tilde_class, (t_method)adsr_releaseshape, gensym("releaseshape"), A_DEFFLOAT, A_NULL);
class_addmethod(adsr_tilde_class, (t_method)adsr_g, gensym("g"), A_DEFFLOAT, A_NULL);
class_addmethod(adsr_tilde_class, (t_method)adsr_oneshot, gensym("oneshot"), A_DEFFLOAT, A_NULL);
}
}