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); }; }
void init(int channelCount, double inSampleRate) { channels = channelCount; sampleRate = float(inSampleRate); sp_create(&sp); sp->sr = sampleRate; sp->nchan = channels; sp_fosc_create(&fosc); sp_fosc_init(sp, fosc, ftbl); fosc->freq = 440; fosc->car = 1.0; fosc->mod = 1; fosc->indx = 1; fosc->amp = 1; }
void init(int _channels, double _sampleRate) override { AKSoundpipeKernel::init(_channels, _sampleRate); sp_fosc_create(&fosc); sp_fosc_init(sp, fosc, ftbl); fosc->freq = 440; fosc->car = 1.0; fosc->mod = 1; fosc->indx = 1; fosc->amp = 1; baseFrequencyRamper.init(); carrierMultiplierRamper.init(); modulatingMultiplierRamper.init(); modulationIndexRamper.init(); amplitudeRamper.init(); }