Ejemplo n.º 1
0
void write_osc(sp_data *sp, void *ud) {
    UserData *udp = ud;
    SPFLOAT trig, rev1, rev2, drip;
    sp_dust_compute(sp, udp->trig, NULL, &trig);
    sp_drip_compute(sp, udp->drip, &trig, &drip);
    sp_revsc_compute(sp, udp->rev, &drip, &drip, &rev1, &rev2);
    sp->out[0] = drip + rev1 * 0.05;
}
Ejemplo n.º 2
0
int chord_cloud_compute(sp_data *sp, chord_cloud *cc, SPFLOAT *in, SPFLOAT *out)
{
    int i;
    SPFLOAT dust = 0, osc = 0, env = 0, tmp = 0, dummy;
    for(i = 0; i < cc->notes->size; i++) {
        chord_grain *grain = &cc->grains[i];
        sp_dust_compute(sp, grain->dust, NULL, &dust);
        sp_tenv_compute(sp, grain->env, &dust, &env);
        sp_osc_compute(sp, grain->osc, NULL, &osc);
        sp_tevent_compute(sp, grain->retrig, &dust, &dummy);
        tmp += osc * env * cc->ampmax * grain->amp;
    }
    *out = tmp;
    return SP_OK;
}
Ejemplo n.º 3
0
void write_dust(sp_data *data, void *ud) {
    udata *udata = ud;
    SPFLOAT in = 0;
    sp_dust_compute(data, udata->dst, NULL, &data->out[0]);
}