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
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 }
Generated on Wed Jul 13 2022 10:27:32 by 1.7.2