Part of MicroGen4 Music Synthesizer Program. (But not test it yet.) I2S ,DMA ,Stereo ,16Bit Dac(PCM1781) See detail: http://www.geocities.jp/micro_diys/index2

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Synthesizer.cpp Source File

Synthesizer.cpp

00001 /*
00002     COPYRIGHT(c) 2014 p.igmon
00003 */
00004 
00005 #include "synthesizer.h"
00006 
00007 /* DMA WAVE BUFFER */
00008 extern S16 DMA_Buffer[];
00009 extern __IO BUFFER_StateTypeDef BufferOffset;
00010 
00011 void wave_generate(void){
00012     u16 count;
00013     s16 rch,lch;// 16bit stereo
00014     volatile s16 *ptr0;
00015 
00016     if (bufferoffset == dma_fullcomplete){
00017         ptr0 = (s16 *)&dma_buffer[dma_buffersize>>1];// from half
00018     }else{
00019         ptr0 = (s16 *)&dma_buffer[0];// from top
00020     }    
00021     bufferoffset = dma_idle;
00022 
00023     count = dma_buffersize>>2;// 512samples
00024     while(count-- > 0){
00025 
00026         /* generate wave here */
00027         lch = ((s16)(count - 256))<<6;// Saw Wave Lch
00028         rch = ((s16)(256 -count))<<6;// Saw Wave Rch
00029         *ptr0++ = lch;
00030         *ptr0++ = rch;
00031      }
00032 }