int main() { UserData ud; sp_data *sp; sp_createn(&sp, 2); sp_pan2_create(&ud.pan2); sp_osc_create(&ud.osc); sp_osc_create(&ud.lfo); sp_ftbl_create(sp, &ud.ft, 2048); sp_pan2_init(sp, ud.pan2); ud.pan2->type = 2; 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->amp = 1; ud.lfo->freq = 1; sp->len = 44100 * 5; sp_process(sp, &ud, process); sp_pan2_destroy(&ud.pan2); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); sp_osc_destroy(&ud.lfo); sp_destroy(&sp); return 0; }
int main() { udata ud; sp_data *sp; sp_create(&sp); sp_vdelay_create(&ud.del); sp_ftbl_create(sp, &ud.ft, 2048); sp_osc_create(&ud.osc); sp_ftbl_create(sp, &ud.sine, 4096); sp_osc_create(&ud.lfo); sp_vdelay_init(sp, ud.del, 0.5); sp_gen_file(sp, ud.ft, "Formant04.wav"); sp_osc_init(sp, ud.osc, ud.ft, 0); ud.osc->freq = sp_midi2cps(50); sp_gen_sine(sp, ud.sine); sp_osc_init(sp, ud.lfo, ud.sine, 0); ud.lfo->freq = 0.2; sp->len = 44100 * 5; sp_process(sp, &ud, process); sp_vdelay_destroy(&ud.del); sp_ftbl_destroy(&ud.ft); sp_ftbl_destroy(&ud.sine); sp_osc_destroy(&ud.osc); sp_osc_destroy(&ud.lfo); sp_destroy(&sp); return 0; }
int main() { srand(1234567); UserData ud; sp_data *sp; sp_create(&sp); sp_expon_create(&ud.line); sp_osc_create(&ud.osc); sp_ftbl_create(sp, &ud.ft, 2048); sp_dmetro_create(&ud.dm); sp_expon_init(sp, ud.line); ud.line->a = 100; ud.line->b = 400; ud.line->dur = 1; sp_gen_sine(sp, ud.ft); sp_osc_init(sp, ud.osc, ud.ft, 0); sp_dmetro_init(sp, ud.dm); ud.dm->time = 2; sp->len = 44100 * 5; sp_process(sp, &ud, process); sp_expon_destroy(&ud.line); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); sp_dmetro_destroy(&ud.dm); sp_destroy(&sp); return 0; }
int main() { srand(1234567); UserData ud; sp_data *sp; sp_create(&sp); sp_pluck_create(&ud.pluck); sp_osc_create(&ud.osc); sp_metro_create(&ud.met); sp_ftbl_create(sp, &ud.ft, 2048); sp_pluck_init(sp, ud.pluck, 110); sp_gen_sine(sp, ud.ft); sp_metro_init(sp, ud.met, 2); sp_osc_init(sp, ud.osc, ud.ft, 0); ud.osc->freq = 1; ud.osc->amp = 1; sp->len = 44100 * 5; sp_process(sp, &ud, process); sp_pluck_destroy(&ud.pluck); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); sp_metro_destroy(&ud.met); sp_destroy(&sp); return 0; }
int main() { srand(1234567); UserData ud; sp_data *sp; sp_create(&sp); sp_tseg_create(&ud.tseg); sp_osc_create(&ud.osc); sp_ftbl_create(sp, &ud.ft, 2048); sp_tseg_init(sp, ud.tseg, 0.0001); ud.tseg->end = 1.0; ud.tseg->type = 3.0; ud.tseg->dur = 4.0; 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_tseg_destroy(&ud.tseg); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); sp_destroy(&sp); return 0; }
int main() { srand(time(NULL)); udata ud; uint32_t bufsize; sp_data *sp; sp_create(&sp); sp_reverse_create(&ud.rv); sp_tenv_create(&ud.tenv); sp_ftbl_create(sp, &ud.ft, 2048); sp_osc_create(&ud.osc); sp_reverse_init(sp, ud.rv, 1.0); sp_tenv_init(sp, ud.tenv); ud.tenv->atk = 0.03; ud.tenv->hold = 0.01; ud.tenv->rel = 0.3; 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_reverse_destroy(&ud.rv); sp_tenv_destroy(&ud.tenv); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); sp_destroy(&sp); return 0; }
int main() { srand(1234567); UserData ud; sp_data *sp; sp_create(&sp); sp_biscale_create(&ud.biscale); sp_osc_create(&ud.osc); sp_ftbl_create(sp, &ud.ft, 2048); sp_biscale_init(sp, ud.biscale); ud.biscale->min = 0; ud.biscale->max = 880; sp_gen_sine(sp, ud.ft); sp_osc_init(sp, ud.osc, ud.ft, 0); ud.osc->amp = 0.1; sp->len = 44100 * 5; sp_process(sp, &ud, process); sp_biscale_destroy(&ud.biscale); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); sp_destroy(&sp); return 0; }
int main() { srand(time(NULL)); udata ud; SPFLOAT *freqp = &ud.freq; ud.freq = 400; sp_data *sp; sp_create(&sp); sp_tenv_create(&ud.tenv); sp_metro_create(&ud.met); sp_tevent_create(&ud.te); sp_ftbl_create(sp, &ud.ft, 2048); sp_osc_create(&ud.osc); sp_tenv_init(sp, ud.tenv); ud.tenv->atk = 0.03; ud.tenv->hold = 0.01; ud.tenv->rel = 0.1; sp_metro_init(sp, ud.met); ud.met->freq = 3; sp_tevent_init(sp, ud.te, freq_reinit, freq_compute, freqp); sp_gen_sine(sp, ud.ft); sp_osc_init(sp, ud.osc, ud.ft, 0); ud.osc->freq = *freqp; sp->len = 44100 * 5; sp_process(sp, &ud, write_osc); sp_tenv_destroy(&ud.tenv); sp_metro_destroy(&ud.met); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); sp_tevent_destroy(&ud.te); sp_destroy(&sp); return 0; }
void init(int _channels, double _sampleRate) override { AKSoundpipeDSPBase::init(_channels, _sampleRate); sp_osc_create(&_trem); sp_osc_init(_sp, _trem, _tbl, 0); _trem->freq = 10.0; _trem->amp = 1.0; }
int t_osc(sp_test *tst, sp_data *sp, const char *hash) { uint32_t n; int fail = 0; SPFLOAT osc; sp_osc *osc_d; sp_ftbl *ft_d; sp_ftbl_create(sp, &ft_d, 2048); sp_osc_create(&osc_d); sp_gen_sine(sp, ft_d); sp_osc_init(sp, osc_d, ft_d, 0); osc_d->freq = 500; sp->len = 44100 * 5; for(n = 0; n < tst->size; n++) { osc = 0; sp_osc_compute(sp, osc_d, NULL, &osc); sp_out(sp, 0, osc); sp_test_add_sample(tst, sp->out[0]); } if(sp_test_compare(tst, hash) == SP_NOT_OK) { printf("Generated hash %s does not match reference hash %s\n", tst->md5string, hash); fail = 1; } sp_ftbl_destroy(&ft_d); sp_osc_destroy(&osc_d); if(fail) return SP_NOT_OK; else return SP_OK; }
int main() { srand(time(NULL)); udata ud; SPFLOAT *freqp = &ud.freq; ud.counter = 0; ud.freq = 400; sp_data *sp; sp_create(&sp); sp_tevent_create(&ud.te); sp_ftbl_create(sp, &ud.ft, 2048); sp_osc_create(&ud.osc); sp_tevent_init(sp, ud.te, freq_reinit, freq_compute, freqp); sp_gen_sine(sp, ud.ft); sp_osc_init(sp, ud.osc, ud.ft); ud.osc->freq = *freqp; sp->len = 44100 * 5; sp_process(sp, &ud, write_osc); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); sp_tevent_destroy(&ud.te); sp_destroy(&sp); return 0; }
int main() { UserData ud; sp_data *sp; sp_create(&sp); sp_srand(sp, 1234567); sp_metro_create(&ud.met); sp_trand_create(&ud.trand); sp_osc_create(&ud.osc); sp_ftbl_create(sp, &ud.ft, 2048); sp_metro_init(sp, ud.met); ud.met->freq = 20; sp_trand_init(sp, ud.trand); ud.trand->min = 40; ud.trand->max = 1000; 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_trand_destroy(&ud.trand); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); sp_metro_destroy(&ud.met); sp_destroy(&sp); return 0; }
int main() { UserData ud; sp_data *sp; sp_create(&sp); sp_clip_create(&ud.clp); sp_osc_create(&ud.osc); sp_ftbl_create(sp, &ud.ft, 4096); sp_moogladder_create(&ud.filt); sp_gen_line(sp, ud.ft, "0 1 4096 -1"); sp_osc_init(sp, ud.osc, ud.ft, 0); ud.osc->freq = sp_midi2cps(48); sp_clip_init(sp, ud.clp); sp_moogladder_init(sp, ud.filt); ud.filt->freq = 1000; ud.filt->res = 0.8; sp->len = 44100 * 5; sp_process(sp, &ud, write_clip); sp_osc_destroy(&ud.osc); sp_clip_destroy(&ud.clp); sp_ftbl_destroy(&ud.ft); sp_moogladder_destroy(&ud.filt); sp_destroy(&sp); return 0; }
int main() { srand(1234567); UserData ud; sp_data *sp; sp_create(&sp); sp_tenv2_create(&ud.tenv2); sp_osc_create(&ud.osc); sp_ftbl_create(sp, &ud.ft, 2048); sp_tenv2_init(sp, ud.tenv2); ud.tenv2->atk = 3; ud.tenv2->rel = 1; sp_gen_sine(sp, ud.ft); sp_osc_init(sp, ud.osc, ud.ft, 0); ud.osc->amp = 0.6; sp->len = 44100 * 5; sp_process(sp, &ud, process); sp_tenv2_destroy(&ud.tenv2); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); sp_destroy(&sp); return 0; }
int main() { srand(time(NULL)); udata ud; sp_data *sp; sp_create(&sp); sp_ftbl_create(sp, &ud.ft, 1024); sp_osc_create(&ud.osc); sp_randi_create(&ud.rnd); sp_gen_sine(sp, ud.ft); sp_osc_init(sp, ud.osc, ud.ft); sp_randi_init(sp, ud.rnd, 12345); ud.rnd->min = 300; ud.rnd->max = 3000; sp->len = 44100 * 5; sp_process(sp, &ud, write_osc); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); sp_randi_destroy(&ud.rnd); sp_destroy(&sp); return 0; }
void init(int _channels, double _sampleRate) override { AKSoundpipeKernel::init(_channels, _sampleRate); sp_osc_create(&osc); sp_osc_init(sp, osc, ftbl, 0); osc->freq = 440; osc->amp = 1; }
void init(int channelCount, double inSampleRate) { channels = channelCount; sampleRate = float(inSampleRate); sp_create(&sp); sp->sr = sampleRate; sp->nchan = channels; sp_osc_create(&osc); sp_osc_init(sp, osc, ftbl, 0); osc->freq = 440; osc->amp = 1; }
void WavePlayBack(uint32_t AudioFreq) { /* note: these mallocs are NOT freed at the moment */ sp_create(&sp); sp->sr = AudioFreq; sp_ftbl_create(sp, &ft, 8192); sp_gen_sine(sp, ft); sp_osc_create(&osc); sp_osc_init(sp, osc, ft, 0); osc->freq = 0.2f; osc->amp = 1.f; uint32_t i; for(i = 0; i < NOSCS; i++) { sp_fosc_create(&fosc[i]); sp_fosc_init(sp, fosc[i], ft); fosc[i]->freq = sp_midi2cps(scale[i]); fosc[i]->amp = 0.1f; } for(i = 0; i < MY_BUFSIZE; i++) { buf0[i] = 0; buf1[i] = 0; } sp_revsc_create(&revsc); sp_revsc_init(sp, revsc); /* Initialize wave player (Codec, DMA, I2C) */ WavePlayerInit(AudioFreq); nextbuf = 1; compute_buffer(buf1, MY_BUFSIZE); Audio_MAL_Play((uint32_t)buf0, MY_BUFSIZE / 2); EVAL_AUDIO_Mute(AUDIO_MUTE_ON); while(1) { while(nextbuf == 1); if(please_play == 0) { EVAL_AUDIO_Mute(AUDIO_MUTE_OFF); please_play = 1; } compute_buffer(buf0, MY_BUFSIZE); while(nextbuf == 0); compute_buffer(buf1, MY_BUFSIZE); }; }
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; }
int t_delay(sp_test *tst, sp_data *sp, const char *hash) { uint32_t n; int fail = 0; SPFLOAT osc = 0, delay = 0, met = 0, tenv = 0; UserData ud; 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; for(n = 0; n < tst->size; n++) { osc = 0, delay = 0, met = 0, tenv = 0; sp_metro_compute(sp, ud.met, NULL, &met); sp_tenv_compute(sp, ud.tenv, &met, &tenv); if(met) { ud.osc->freq = 100 + sp_rand(sp) % 500; } sp_osc_compute(sp, ud.osc, NULL, &osc); osc *= tenv; sp_delay_compute(sp, ud.delay, &osc, &delay); sp_test_add_sample(tst, osc + delay); } if(sp_test_compare(tst, hash) == SP_NOT_OK) { printf("Generated hash %s does not match reference hash %s\n", tst->md5string, hash); fail = 1; } if(fail) return SP_NOT_OK; else return SP_OK; }
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; }
int t_pitchamdf(sp_test *tst, sp_data *sp, const char *hash) { uint32_t n; int fail = 0; SPFLOAT freq = 0, amp = 0, blsaw = 0, randh = 0, osc = 0; sp_srand(sp, 1234567); UserData ud; sp_pitchamdf_create(&ud.pitchamdf); sp_osc_create(&ud.osc); sp_ftbl_create(sp, &ud.ft, 2048); sp_blsaw_create(&ud.blsaw); sp_randh_create(&ud.randh); sp_pitchamdf_init(sp, ud.pitchamdf, 200, 500); sp_randh_init(sp, ud.randh); ud.randh->max = 500; ud.randh->min = 200; ud.randh->freq = 6; sp_blsaw_init(sp, ud.blsaw); sp_gen_sine(sp, ud.ft); sp_osc_init(sp, ud.osc, ud.ft, 0); for(n = 0; n < tst->size; n++) { freq = 0, amp = 0, blsaw = 0, randh = 0, osc = 0; sp_randh_compute(sp, ud.randh, NULL, &randh); *ud.blsaw->freq = randh; sp_blsaw_compute(sp, ud.blsaw, NULL, &blsaw); sp_pitchamdf_compute(sp, ud.pitchamdf, &blsaw, &freq, &); ud.osc->freq = freq; sp_osc_compute(sp, ud.osc, NULL, &osc); sp_test_add_sample(tst, osc); } fail = sp_test_verify(tst, hash); sp_blsaw_destroy(&ud.blsaw); sp_randh_destroy(&ud.randh); sp_pitchamdf_destroy(&ud.pitchamdf); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); if(fail) return SP_NOT_OK; else return SP_OK; }
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; }
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; }
int chord_cloud_init(sp_data *sp, chord_cloud *cc, char *notes, SPFLOAT amp) { int i; sp_osc *tmposc; sp_dust *tmpdust; sp_tenv *tmpenv; sp_tevent *tmpretrig; sp_ftbl_create(sp, &cc->sine, 4096); sp_gen_sinesum(sp, cc->sine, "1 0.5 0.3 0.25, 0.1625"); sp_ftbl_create(sp, &cc->notes, 1); sp_gen_vals(sp, cc->notes, notes); cc->ampmax= amp; cc->grains= malloc(cc->notes->size * sizeof(chord_grain)); for(i = 0; i < cc->notes->size; i++) { chord_grain *grain = &cc->grains[i]; sp_osc_create(&grain->osc); sp_tenv_create(&grain->env); sp_dust_create(&grain->dust); sp_tevent_create(&grain->retrig); tmposc = grain->osc; tmpenv = grain->env; tmpdust = grain->dust; tmpretrig = grain->retrig; sp_dust_init(sp, tmpdust, 1, 8); sp_osc_init(sp, tmposc, cc->sine, 0); tmposc->freq = sp_midi2cps(cc->notes->tbl[i]); tmposc->amp = 1.0; grain->amp = 1.0; sp_tenv_init(sp, tmpenv); tmpenv->atk = 0.01; tmpenv->hold = 0; tmpenv->rel = 0.03; sp_tevent_init(sp, tmpretrig, cloud_reinit, cloud_compute, grain); } return SP_OK; }
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; }
int t_tseg(sp_test *tst, sp_data *sp, const char *hash) { uint32_t n; int fail = 0; sp_srand(sp, 1234567); UserData ud; SPFLOAT osc = 0, tseg = 0; SPFLOAT trig = (sp->pos == 0); sp_tseg_create(&ud.tseg); sp_osc_create(&ud.osc); sp_ftbl_create(sp, &ud.ft, 2048); sp_tseg_init(sp, ud.tseg, 0.0001); ud.tseg->end = 1.0; ud.tseg->type = 3.0; ud.tseg->dur = 4.0; sp_gen_sine(sp, ud.ft); sp_osc_init(sp, ud.osc, ud.ft, 0); for(n = 0; n < tst->size; n++) { osc = 0; tseg = 0; trig = (sp->pos == 0); sp_tseg_compute(sp, ud.tseg, &trig, &tseg); ud.osc->freq = 100 + (tseg * 1000); sp_osc_compute(sp, ud.osc, NULL, &osc); sp_test_add_sample(tst, osc); } fail = sp_test_verify(tst, hash); sp_tseg_destroy(&ud.tseg); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); if(fail) return SP_NOT_OK; else return SP_OK; }
int t_tenv2(sp_test *tst, sp_data *sp, const char *hash) { uint32_t n; int fail = 0; sp_srand(sp, 1234567); UserData ud; SPFLOAT osc = 0, tenv2 = 0, tick = 0; sp_tenv2_create(&ud.tenv2); sp_osc_create(&ud.osc); sp_ftbl_create(sp, &ud.ft, 2048); sp_tenv2_init(sp, ud.tenv2); ud.tenv2->atk = 3; ud.tenv2->rel = 1; sp_gen_sine(sp, ud.ft); sp_osc_init(sp, ud.osc, ud.ft, 0); ud.osc->amp = 0.6; for(n = 0; n < tst->size; n++) { osc = 0, tenv2 = 0, tick = 0; if(sp->pos == 0 || sp->pos == sp->sr * 1) tick = 1; sp_osc_compute(sp, ud.osc, NULL, &osc); sp_tenv2_compute(sp, ud.tenv2, &tick, &tenv2); sp->out[0] = osc * tenv2; sp_test_add_sample(tst, sp->out[0]); } fail = sp_test_verify(tst, hash); sp_tenv2_destroy(&ud.tenv2); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); if(fail) return SP_NOT_OK; else return SP_OK; }
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; }
int t_line(sp_test *tst, sp_data *sp, const char *hash) { sp_srand(sp, 1234567); uint32_t n; int fail = 0; SPFLOAT osc = 0, line = 0; UserData ud; sp_line_create(&ud.line); sp_osc_create(&ud.osc); sp_ftbl_create(sp, &ud.ft, 2048); sp_line_init(sp, ud.line, 100, 3, 400); sp_gen_sine(sp, ud.ft); sp_osc_init(sp, ud.osc, ud.ft, 0); sp->len = 44100 * 5; for(n = 0; n < tst->size; n++) { sp_line_compute(sp, ud.line, NULL, &line); ud.osc->freq = line; sp_osc_compute(sp, ud.osc, NULL, &osc); sp->out[0] = osc; sp_test_add_sample(tst, sp->out[0]); } fail = sp_test_verify(tst, hash); sp_line_destroy(&ud.line); sp_ftbl_destroy(&ud.ft); sp_osc_destroy(&ud.osc); if(fail) return SP_NOT_OK; else return SP_OK; }