예제 #1
0
int main() {
    srand(time(NULL));
    UserData ud;
    uint32_t bufsize;
    sp_data *sp;
    sp_create(&sp);
    sp_auxdata rvaux;
    sp_dtrig_create(&ud.dt);
    sp_tenv_create(&ud.tenv);
    sp_ftbl_create(sp, &ud.ft, 2048);
    sp_ftbl_create(sp, &ud.delta, 4);
    sp_ftbl_create(sp, &ud.nn, 1);
    sp_osc_create(&ud.osc);

    sp_gen_vals(sp, ud.delta, "0.2 0.2 0.2 0.1");
    sp_gen_vals(sp, ud.nn, "60 62 64 67");
    sp_tseq_create(&ud.seq);
    sp_tseq_init(sp, ud.seq, ud.nn);

    sp_dtrig_init(sp, ud.dt, ud.delta);
    ud.dt->loop = 1.0;
    sp_tenv_init(sp, ud.tenv);
    ud.tenv->atk = 0.01;
    ud.tenv->hold = 0.01;
    ud.tenv->rel =  0.05;

    sp_gen_sine(sp, ud.ft);
    sp_osc_init(sp, ud.osc, ud.ft, 0);
    ud.osc->freq = 1000;
    ud.osc->amp = 0.5;
    sp->len = 44100 * 5;
    sp_process(sp, &ud, write_osc);

    sp_dtrig_destroy(&ud.dt);
    sp_tseq_destroy(&ud.seq);
    sp_tenv_destroy(&ud.tenv);
    sp_ftbl_destroy(&ud.ft);
    sp_ftbl_destroy(&ud.nn);
    sp_ftbl_destroy(&ud.delta);
    sp_osc_destroy(&ud.osc);
    sp_destroy(&sp);
    return 0;
}
예제 #2
0
int main() {
    srand(time(NULL));
    udata ud;
    sp_data *sp;
    sp_create(&sp);
    sp_ftbl_create(sp, &ud.ft, 4096);
    sp_osc_create(&ud.osc);

    sp_gen_sinesum(sp, ud.ft, "1 0 0 1");
    sp_osc_init(sp, ud.osc, ud.ft);
    ud.osc->freq = 500;
    sp->len = 44100 * 5;
    sp_process(sp, &ud, write_osc);

    sp_ftbl_destroy(&ud.ft);
    sp_osc_destroy(&ud.osc);
    sp_destroy(&sp);
    return 0;
}
예제 #3
0
파일: ex_revsc.c 프로젝트: aure/Soundpipe
int main() {
    srand(time(NULL));
    udata ud;
    ud.counter = 0;
    sp_data *sp;
    sp_create(&sp);
    sp_noise_create(&ud.ns);
    sp_revsc_create(&ud.rev);
    sp_noise_init(sp, ud.ns);
    sp_revsc_init(sp, ud.rev);

    sp->len = 44100 * 5;
    sp_process(sp, &ud, process);

    sp_noise_destroy(&ud.ns);
    sp_revsc_destroy(&ud.rev);
    sp_destroy(&sp);
    return 0;
}
예제 #4
0
struct socket_server * 
socket_server_create() {
	int i;
	int fd[2];
	poll_fd efd = sp_create();
	if (sp_invalid(efd)) {
		fprintf(stderr, "socket-server: create event pool failed.\n");
		return NULL;
	}
	if (pipe(fd)) {
		sp_release(efd);
		fprintf(stderr, "socket-server: create socket pair failed.\n");
		return NULL;
	}
	if (sp_add(efd, fd[0], NULL)) {
		// add recvctrl_fd to event poll
		fprintf(stderr, "socket-server: can't add server fd to event pool.\n");
		close(fd[0]);
		close(fd[1]);
		sp_release(efd);
		return NULL;
	}

	struct socket_server *ss = MALLOC(sizeof(*ss));
	ss->event_fd = efd;
	ss->recvctrl_fd = fd[0];
	ss->sendctrl_fd = fd[1];
	ss->checkctrl = 1;

	for (i=0;i<MAX_SOCKET;i++) {
		struct socket *s = &ss->slot[i];
		s->type = SOCKET_TYPE_INVALID;
		clear_wb_list(&s->high);
		clear_wb_list(&s->low);
	}
	ss->alloc_id = 0;
	ss->event_n = 0;
	ss->event_index = 0;
	FD_ZERO(&ss->rfds);
	assert(ss->recvctrl_fd < FD_SETSIZE);

	return ss;
}
예제 #5
0
    void init(int channelCount, double inSampleRate) {
        channels = channelCount;

        sampleRate = float(inSampleRate);

        sp_create(&sp);
        sp->sr = sampleRate;
        sp->nchan = channels;
        sp_blsquare_create(&blsquare);
        sp_blsquare_init(sp, blsquare);
        *blsquare->freq = 440;
        *blsquare->amp = 1.0;
        *blsquare->width = 0.5;

        frequencyRamper.init();
        amplitudeRamper.init();
        pulseWidthRamper.init();
        detuningOffsetRamper.init();
        detuningMultiplierRamper.init();
    }
예제 #6
0
파일: ex_posc3.c 프로젝트: aure/Soundpipe
int main() {
    srand(time(NULL));
    udata ud;
    ud.counter = 0;
    sp_data *sp;
    sp_create(&sp);
    sp_ftbl_create(sp, &ud.ft, 1024);
    sp_posc3_create(&ud.posc3);

    sp_gen_sine(sp, ud.ft);
    sp_posc3_init(sp, ud.posc3, ud.ft);
    ud.posc3->freq = 500;
    sp->len = 44100 * 5;
    sp_process(sp, &ud, write_posc3);

    sp_ftbl_destroy(&ud.ft);
    sp_posc3_destroy(&ud.posc3);
    sp_destroy(&sp);
    return 0;
}
예제 #7
0
int main() {
    UserData ud;
    sp_data *sp;
    sp_create(&sp);

    sp_phaser_create(&ud.phaser);
    sp_diskin_create(&ud.disk);

    sp_diskin_init(sp, ud.disk, "oneart.wav");
    sp_phaser_init(sp, ud.phaser);
    
    sp->len = 44100 * 5;
    sp_process(sp, &ud, process);

    sp_phaser_destroy(&ud.phaser);
    sp_diskin_destroy(&ud.disk);

    sp_destroy(&sp);
    return 0;
}
예제 #8
0
struct socket_server * 
socket_server_create() {
	int i;
	int fd[2];
	poll_fd efd = sp_create();
	if (sp_invalid(efd)) {
		fprintf(stderr, "socket-server: create event pool failed.\n");
		return NULL;
	}
	if (socketpair(AF_UNIX,SOCK_STREAM,0,fd)) {
		sp_release(efd);
		fprintf(stderr, "socket-server: create socket pair failed.\n");
		return NULL;
	}
	if (sp_add(efd, fd[0], NULL)) {
		// add server_fd to event poll
		fprintf(stderr, "socket-server: can't add server fd to event pool.\n");
		close(fd[0]);
		close(fd[1]);
		sp_release(efd);
		return NULL;
	}

	struct socket_server *ss = MALLOC(sizeof(*ss));
	ss->event_fd = efd;
	ss->server_fd = fd[0];
	ss->client_fd = fd[1];

	for (i=0;i<MAX_SOCKET;i++) {
		struct socket *s = &ss->slot[i];
		s->type = SOCKET_TYPE_INVALID;
		s->head = NULL;
		s->tail = NULL;
	}
	ss->alloc_id = 0;
	ss->event_n = 0;
	ss->event_index = 0;
	ss->session_id = 0;

	return ss;
}
예제 #9
0
파일: control.c 프로젝트: yeonsh/Amoeba
/*
** ppro_dirinit -- initialize the ps directory.
*/
void
ppro_dirinit()
{
    /*
    ** The number of strings in colnames must be equal to NPS_COLUMNS
    ** which is defined in procdefs.h.  However the directory that we
    ** are appending it to has NROOTCOLUMNS.
    */
    static char *colnames[] = { "owner", "group", "other", 0 };
    static long cols[NROOTCOLUMNS] =
				{0xFF & ~(SP_DELRGT | SP_MODRGT), 0x2, 0x4};
    
    /*
    ** Create an internal soap directory and append it to the root.
    */
    if (sp_create(&_sp_rootdir, colnames, &psdir) != STD_OK)
	panic("ppro_dirinit: can't create directory");
    if (sp_append(&_sp_rootdir, PROCESS_LIST_NAME,
    				&psdir, NROOTCOLUMNS, cols) != STD_OK)
	panic("ppro_dirinit: can't append directory");
}
예제 #10
0
int main() {
    UserData ud;
    sp_data *sp;
    sp_create(&sp);

    sp_autowah_create(&ud.autowah);
    sp_diskin_create(&ud.disk);

    sp_diskin_init(sp, ud.disk, "riff.wav");
    sp_autowah_init(sp, ud.autowah);
    *ud.autowah->wah = 1.0;
    
    sp->len = 44100 * 5;
    sp_process(sp, &ud, process);

    sp_autowah_destroy(&ud.autowah);
    sp_diskin_destroy(&ud.disk);

    sp_destroy(&sp);
    return 0;
}
예제 #11
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;
}
예제 #12
0
int main() {
    srand(1234567);
    UserData ud;
    sp_data *sp;
    sp_create(&sp);

    sp_thresh_create(&ud.thresh);
    sp_osc_create(&ud.osc);
    sp_osc_create(&ud.lfo);
    sp_tenv_create(&ud.tenv);
    sp_ftbl_create(sp, &ud.ft, 2048);

    sp_thresh_init(sp, ud.thresh);
    ud.thresh->mode = 1;
    sp_gen_sine(sp, ud.ft);
    sp_osc_init(sp, ud.osc, ud.ft, 0);

    sp_osc_init(sp, ud.lfo, ud.ft, 0);
    ud.lfo->freq = 3;
    ud.lfo->amp = 1;

    sp_tenv_init(sp, ud.tenv);
    ud.tenv->atk = 0.01;
    ud.tenv->hold = 0.01;
    ud.tenv->rel = 0.01;

    sp->len = 44100 * 5;
    sp_process(sp, &ud, process);

    sp_thresh_destroy(&ud.thresh);
    sp_ftbl_destroy(&ud.ft);
    sp_osc_destroy(&ud.osc);
    sp_osc_destroy(&ud.lfo);
    sp_tenv_destroy(&ud.tenv);

    sp_destroy(&sp);
    return 0;
}
예제 #13
0
int main() {
    srand(1234567);
    UserData ud;
    sp_data *sp;
    sp_create(&sp);

    sp_diskin_create(&ud.diskin);
    sp_conv_create(&ud.conv);
    sp_ftbl_loadfile(sp, &ud.ft, "imp.wav");

    sp_diskin_init(sp, ud.diskin, "oneart.wav");
    sp_conv_init(sp, ud.conv, ud.ft, 8192);

    sp->len = 44100 * 5;
    sp_process(sp, &ud, process);

    sp_conv_destroy(&ud.conv);
    sp_ftbl_destroy(&ud.ft);
    sp_diskin_destroy(&ud.diskin);

    sp_destroy(&sp);
    return 0;
}
예제 #14
0
파일: ex_drip.c 프로젝트: eriser/Soundpipe
int main() {
    srand(time(NULL));
    UserData ud;
    sp_data *sp;
    sp_create(&sp);
    sp_revsc_create(&ud.rev);
    sp_drip_create(&ud.drip);
    sp_dust_create(&ud.trig);
    
    sp_dust_init(sp, ud.trig, 1, 1);
    sp_drip_init(sp, ud.drip, 0.09);
    ud.drip->amp = 0.3;
    sp_revsc_init(sp, ud.rev);
    ud.rev->feedback = 0.9;
    
    sp->len = 44100 * 30;
    sp_process(sp, &ud, write_osc);
    sp_drip_destroy(&ud.drip);
    sp_dust_destroy(&ud.trig);
    sp_revsc_destroy(&ud.rev);
    sp_destroy(&sp);
    return 0;
}
예제 #15
0
int main() {
    srand(1234567);
    UserData ud;
    sp_data *sp;
    sp_create(&sp);

    sp_delay_create(&ud.delay);
    sp_osc_create(&ud.osc);
    sp_ftbl_create(sp, &ud.ft, 2048);
    sp_metro_create(&ud.met);
    sp_tenv_create(&ud.tenv);

    sp_delay_init(sp, ud.delay, 0.75 * 0.5);
    ud.delay->feedback = 0.5;
    sp_gen_sine(sp, ud.ft);
    sp_osc_init(sp, ud.osc, ud.ft, 0);
    ud.osc->amp = 0.5;
    sp_metro_init(sp, ud.met);
    ud.met->freq = 1;
    sp_tenv_init(sp, ud.tenv);
    ud.tenv->atk = 0.005;
    ud.tenv->hold = 0.1;
    ud.tenv->rel =  0.1;


    sp->len = 44100 * 5;
    sp_process(sp, &ud, process);

    sp_delay_destroy(&ud.delay);
    sp_ftbl_destroy(&ud.ft);
    sp_osc_destroy(&ud.osc);
    sp_metro_destroy(&ud.met);
    sp_tenv_destroy(&ud.tenv);

    sp_destroy(&sp);
    return 0;
}
예제 #16
0
int main() {
    srand(1234567);
    UserData ud;
    sp_data *sp;
    sp_create(&sp);

    sp_dmetro_create(&ud.dmetro);
    sp_osc_create(&ud.osc);
    sp_osc_create(&ud.lfo);
    sp_ftbl_create(sp, &ud.ft, 2048);
    sp_tenv_create(&ud.tenv);

    sp_dmetro_init(sp, ud.dmetro);
    ud.dmetro->time = 0.05;
    sp_gen_sine(sp, ud.ft);
    sp_osc_init(sp, ud.osc, ud.ft, 0);
    sp_osc_init(sp, ud.lfo, ud.ft, 0);
    ud.lfo->freq = 0.3;
    ud.lfo->amp = 0.5;
    sp_tenv_init(sp, ud.tenv);
    ud.tenv->atk = 0.001;
    ud.tenv->hold = 0.03;
    ud.tenv->rel =  0.001;


    sp->len = 44100 * 5;
    sp_process(sp, &ud, process);

    sp_dmetro_destroy(&ud.dmetro);
    sp_ftbl_destroy(&ud.ft);
    sp_osc_destroy(&ud.osc);
    sp_osc_destroy(&ud.lfo);
    sp_tenv_destroy(&ud.tenv);

    sp_destroy(&sp);
    return 0;
}
예제 #17
0
파일: ex_foo.c 프로젝트: aure/Soundpipe
int main() {
    srand(1234567);
    UserData ud;
    sp_data *sp;
    sp_create(&sp);

    sp_foo_create(&ud.foo);
    sp_osc_create(&ud.osc);
    sp_ftbl_create(sp, &ud.ft, 2048);

    sp_foo_init(sp, ud.foo);
    sp_gen_sine(sp, ud.ft);
    sp_osc_init(sp, ud.osc, ud.ft, 0);

    sp->len = 44100 * 5;
    sp_process(sp, &ud, process);

    sp_foo_destroy(&ud.foo);
    sp_ftbl_destroy(&ud.ft);
    sp_osc_destroy(&ud.osc);

    sp_destroy(&sp);
    return 0;
}
예제 #18
0
int main() {
    srand(time(NULL));
    int i;
    UserData ud;
    sp_data *sp;
    sp_create(&sp);
    sp_ftbl_create(sp, &ud.ft, 4096);
    for(i = 0; i < 3; i++) sp_osc_create(&ud.osc[i]);
    sp_lpf18_create(&ud.lpf);
    sp_osc_create(&ud.lfo);
    sp_ftbl_create(sp, &ud.sine_ft, 4096);
    sp_gen_sine(sp, ud.sine_ft);

    sp_gen_line(sp, ud.ft, "0 1 4096 -1");
    sp_osc_init(sp, ud.osc[0], ud.ft);
    ud.osc[0]->freq = sp_midi2cps(40 - 0.05);
    sp_osc_init(sp, ud.osc[1], ud.ft);
    ud.osc[1]->freq = sp_midi2cps(40 - 12);
    sp_osc_init(sp, ud.osc[2], ud.ft);
    ud.osc[2]->freq = sp_midi2cps(40 + 0.05);
    sp_lpf18_init(sp, ud.lpf);
    sp_osc_init(sp, ud.lfo, ud.sine_ft);
    ud.lfo->freq = 0.4;

    sp->len = 44100 * 5;
    sp_process(sp, &ud, write_osc);

    sp_ftbl_destroy(&ud.ft);
    for(i = 0; i < 3; i++) sp_osc_destroy(&ud.osc[i]);
    sp_lpf18_destroy(&ud.lpf);
    sp_osc_destroy(&ud.lfo);
    sp_ftbl_destroy(&ud.sine_ft);

    sp_destroy(&sp);
    return 0;
}
예제 #19
0
int sporth_gen_eval(sporth_stack *stack, void *ud)
{
    plumber_data *pd = ud;
    plumber_data my_pd;

    uint32_t size;
    sp_data *sp;
    sp_ftbl *ft;
    char *ftname;
    char *str;
    uint32_t n;

    switch(pd->mode){
        case PLUMBER_CREATE:
            plumber_add_ugen(pd, SPORTH_GEN_EVAL, NULL);

            if(sporth_check_args(stack, "sfs") != SPORTH_OK) {
                plumber_print(pd, "Init: not enough arguments for gen_sine\n");
                return PLUMBER_NOTOK;
            }
            str = sporth_stack_pop_string(stack);
            size = (uint32_t) sporth_stack_pop_float(stack);
            ftname = sporth_stack_pop_string(stack);
            sp_ftbl_create(pd->sp, &ft, size);
            plumber_ftmap_add(pd, ftname, ft);
#ifdef DEBUG_MODE
            plumber_print(pd, "gen_sporth: compiling file %s to table of size %d\n", 
                    filename, size);
#endif
            plumber_register(&my_pd);
            plumber_init(&my_pd);
            sp_create(&sp);
            sp->sr = pd->sp->sr;
            sp_srand(sp, pd->seed);
            my_pd.sp = sp;
            my_pd.sp->len = size;
            if(plumber_parse_string(&my_pd, str) == PLUMBER_OK) {
                plumber_compute(&my_pd, PLUMBER_INIT);
                for(n = 0; n < ft->size; n++) {
                    plumber_compute(&my_pd, PLUMBER_COMPUTE);
                    ft->tbl[n] = sporth_stack_pop_float(&my_pd.sporth.stack);
                }
            }
            plumber_clean(&my_pd);
            sp_destroy(&sp);
            break;

        case PLUMBER_INIT:
            sporth_stack_pop_string(stack);
            sporth_stack_pop_float(stack);
            sporth_stack_pop_string(stack);
            break;

        case PLUMBER_COMPUTE:
            sporth_stack_pop_float(stack);
            break;

        case PLUMBER_DESTROY:
            break;

        default:
           printf("Error: Unknown mode!");
           break;
    }
    return PLUMBER_OK;
}
예제 #20
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;
}
예제 #21
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;
}
예제 #22
0
 AKSoundpipeKernel(int channelCount, double sampleRate) :
     AKDSPKernel(channelCount, sampleRate) {
     sp_create(&sp);
     sp->sr = sampleRate;
     sp->nchan = channelCount;
 }