Exemplo n.º 1
0
int main() {
    sp_data *sp;
    sp_create(&sp);
    sp_srand(sp, 12345);
    sp->sr = SR;
    sp->len = sp->sr * LEN;
    uint32_t t, u;
    SPFLOAT in = 0, out = 0;

    sp_maygate *unit[NUM];

    for(u = 0; u < NUM; u++) { 
        sp_maygate_create(&unit[u]);
        sp_maygate_init(sp, unit[u]);
    }

    for(t = 0; t < sp->len; t++) {
        for(u = 0; u < NUM; u++) sp_maygate_compute(sp, unit[u], &in, &out);
    }

    for(u = 0; u < NUM; u++) sp_maygate_destroy(&unit[u]);

    sp_destroy(&sp);
    return 0;
}
Exemplo n.º 2
0
int sporth_maygate(sporth_stack *stack, void *ud)
{
    plumber_data *pd = ud;
    SPFLOAT trig;
    SPFLOAT out;
    SPFLOAT prob;
    sp_maygate *maygate;

    switch(pd->mode) {
        case PLUMBER_CREATE:

#ifdef DEBUG_MODE
            fprintf(stderr, "maygate: Creating\n");
#endif

            sp_maygate_create(&maygate);
            plumber_add_ugen(pd, SPORTH_MAYGATE, maygate);
            if(sporth_check_args(stack, "ff") != SPORTH_OK) {
                fprintf(stderr,"Not enough arguments for maygate\n");
                stack->error++;
                return PLUMBER_NOTOK;
            }
            prob = sporth_stack_pop_float(stack);
            trig = sporth_stack_pop_float(stack);
            sporth_stack_push_float(stack, 0);
            break;
        case PLUMBER_INIT:

#ifdef DEBUG_MODE
            fprintf(stderr, "maygate: Initialising\n");
#endif

            prob = sporth_stack_pop_float(stack);
            trig = sporth_stack_pop_float(stack);
            maygate = pd->last->ud;
            sp_maygate_init(pd->sp, maygate);
            maygate->mode = 0;
            sporth_stack_push_float(stack, 0);
            break;
        case PLUMBER_COMPUTE:
            prob = sporth_stack_pop_float(stack);
            trig = sporth_stack_pop_float(stack);
            maygate = pd->last->ud;
            maygate->prob = prob;
            sp_maygate_compute(pd->sp, maygate, &trig, &out);
            sporth_stack_push_float(stack, out);
            break;
        case PLUMBER_DESTROY:
            maygate = pd->last->ud;
            sp_maygate_destroy(&maygate);
            break;
        default:
            fprintf(stderr, "maygate: Unknown mode!\n");
            break;
    }
    return PLUMBER_OK;
}
Exemplo n.º 3
0
int main(){
    sp_data *sp;
    UserData ud;
    sp_create(&sp);
    int tempo = 120;
    sp_rpt_create(&ud.rpt);
    sp_maygate_create(&ud.mg);
    sp_osc_create(&ud.osc);
    sp_ftbl_create(sp, &ud.ft, 4096);
    sp_metro_create(&ud.mt);
    sp_tenv_create(&ud.te);


    sp_maygate_init(sp, ud.mg);
    ud.mg->prob = 0.5;
    sp_gen_sine(sp, ud.ft);
    sp_osc_init(sp, ud.osc, ud.ft, 0);
    sp_metro_init(sp, ud.mt);
    ud.mt->freq = tempo / 60.0;
    sp_rpt_init(sp, ud.rpt, 1.0);
    ud.rpt->bpm = tempo;
    ud.rpt->div = 8;
    ud.rpt->rep = 4;
    sp_tenv_init(sp, ud.te);
    ud.te->atk = 0.001;
    ud.te->hold = 0.1;
    ud.te->rel =  0.1;

    sp_process(sp, &ud, compute);

    sp_tenv_destroy(&ud.te);
    sp_metro_destroy(&ud.mt);
    sp_ftbl_destroy(&ud.ft);
    sp_osc_destroy(&ud.osc);
    sp_rpt_destroy(&ud.rpt);

    sp_destroy(&sp);
    return 0;
}
Exemplo n.º 4
0
int main() {
    srand(time(NULL));
    sp_data *sp;
    user_data ud;
    sp_create(&sp);

    SPFLOAT tempo = 144;
    ud.tempo = tempo;

    /* Create */
    sp_count_create(&ud.cnt);
    sp_metro_create(&ud.clk);
    sp_metro_create(&ud.dblclk);
    samp_create(sp, &ud.snare, 5574, "snare.wav", "2 0.75 0.25", tempo, 1);
    samp_create(sp, &ud.kick, 7385, "kick.wav", "0.75 1.25 1 1", tempo, 0);
    samp_create(sp, &ud.hh, 4507, "hh.wav",
                "0.5 0.25 0.5 0.5 0.25 0.5 0.25 0.5 0.5 0.25",
                tempo, 0);
    sp_revsc_create(&ud.rev);
    sp_maygate_create(&ud.rthrow);
    sp_maygate_create(&ud.rgate);
    sp_rpt_create(&ud.rpt);
    sp_ftbl_create(sp, &ud.reps, 1);
    sp_tseq_create(&ud.rpick);
    sp_gen_vals(sp, ud.reps, "4 8 16 6");
    sp_tseq_init(sp, ud.rpick, ud.reps);
    ud.rpick->shuf = 1.0;
    sp_reverse_create(&ud.rvs);
    sp_maygate_create(&ud.rvs_switch);

    /* Init */
    sp->len = 44100 * (60.0 / tempo) * 32;
    sp_count_init(sp, ud.cnt);
    ud.cnt->count = 4;
    sp_metro_init(sp, ud.clk);
    ud.clk->freq = tempo / 60.0;
    sp_metro_init(sp, ud.dblclk);
    ud.dblclk->freq = tempo * 2 / 60.0;
    sp_revsc_init(sp, ud.rev);
    ud.rev->feedback = 0.9;
    ud.rev->lpfreq = 10000;
    sp_maygate_init(sp, ud.rthrow);
    ud.rthrow->prob = 0.5;
    sp_rpt_init(sp, ud.rpt, 1.0);
    //sp_rpt_set(ud.rpt, tempo, 8, 4);
    ud.rpt->bpm = tempo;
    ud.rpt->div = 8;
    ud.rpt->reps = 4;
    sp_maygate_init(sp, ud.rgate);
    ud.rgate->prob = 0.18;
    ud.rgate->mode = 1.0;
    sp_reverse_init(sp, ud.rvs, 60.0 / tempo);
    sp_maygate_init(sp, ud.rvs_switch);
    ud.rvs_switch->prob = 0.1;

    /* Process */
    sp_process(sp, &ud, process);

    /* Destroy */
    samp_destroy(&ud.snare);
    samp_destroy(&ud.kick);
    samp_destroy(&ud.hh);
    sp_revsc_destroy(&ud.rev);
    sp_maygate_destroy(&ud.rthrow);
    sp_maygate_destroy(&ud.rgate);
    sp_maygate_destroy(&ud.rvs_switch);
    sp_count_destroy(&ud.cnt);
    sp_metro_destroy(&ud.clk);
    sp_metro_destroy(&ud.dblclk);
    sp_rpt_destroy(&ud.rpt);
    sp_ftbl_destroy(&ud.reps);
    sp_tseq_destroy(&ud.rpick);
    sp_reverse_destroy(&ud.rvs);

    sp_destroy(&sp);
    return 0;
}
Exemplo n.º 5
0
int main()
{
    srand(time(NULL));
    int i;
    UserData ud;
    ud.pdel = 0;
    sp_data *sp;
    sp_create(&sp);
    sp->len = 44100 * 40;
    char *notes[] = {
        "62 69 78",
        "55 62 69 71",
        "43 50"
    };


    for(i = 0; i < NUMLINE; i++) {
        sp_randi_create(&ud.line[i].randi);
        chord_cloud_create(&ud.line[i].cc);
        chord_cloud_init(sp, ud.line[i].cc, notes[i], 0.1);
        sp_randi_init(sp, ud.line[i].randi, rand());
        ud.line[i].randi->cps = 0.1 + randf(1.5);
    }
    sp_revsc_create(&ud.rev);
    sp_revsc_init(sp, ud.rev);
    ud.rev->feedback = 0.95;
    sp_metro_create(&ud.clk);
    sp_metro_init(sp, ud.clk);
    ud.clk->freq = 86.0 / 60.0;
    sp_count_create(&ud.meter);
    sp_count_init(sp, ud.meter);
    ud.meter->count = 5;
    sp_drip_create(&ud.drip);
    sp_drip_init(sp, ud.drip, 0.01);
    sp_vdelay_create(&ud.del);
    /* give some headroom for the delay */
    sp_vdelay_init(sp, ud.del, 0.4);
    ud.del->del = 0.3;

    sp_tenv_create(&ud.master);
    sp_tenv_init(sp, ud.master);
    ud.master->atk = 0;
    ud.master->hold = 30;
    ud.master->rel =  10;


    sp_progress_create(&ud.prog);
    sp_progress_init(sp, ud.prog);

    modal_create(&ud.mod);
    modal_init(sp, ud.mod);
    sp_ftbl_create(sp, &ud.notes, 1);
    sp_gen_vals(sp, ud.notes, "62 64 59 57");
    sp_tseq_create(&ud.seq);
    sp_tseq_init(sp, ud.seq, ud.notes);
    sp_maygate_create(&ud.mg);
    sp_maygate_init(sp, ud.mg);
    ud.mg->prob = 0.3;
    ud.mg->mode = 1;
    sp_process(sp, &ud, process);

    for(i = 0; i < NUMLINE; i++) {
        sp_randi_destroy(&ud.line[i].randi);
        chord_cloud_destroy(&ud.line[i].cc);
    }


    sp_drip_destroy(&ud.drip);
    sp_revsc_destroy(&ud.rev);
    sp_metro_destroy(&ud.clk);
    sp_count_destroy(&ud.meter);
    sp_vdelay_destroy(&ud.del);
    sp_tenv_destroy(&ud.master);
    modal_destroy(&ud.mod);
    sp_ftbl_destroy(&ud.notes);
    sp_tseq_destroy(&ud.seq);
    sp_maygate_destroy(&ud.mg);
    sp_progress_destroy(&ud.prog);

    sp_destroy(&sp);
    return 0;
}