Headers for MAX32630FTHR Demo Board sample programs
Embed:
(wiki syntax)
Show/hide line numbers
noteplayer.cpp
00001 #include "noteplayer.h" 00002 00003 float *audioDataBuffer = new float[128]; 00004 volatile int bufferPOS = 0; 00005 Ticker SampleTime; 00006 00007 void placeNewSample() 00008 { 00009 speaker.write(audioDataBuffer[bufferPOS++]); //multiply by POT value for volume. 00010 bufferPOS = (bufferPOS+1) & 0x07F; 00011 } 00012 00013 void loadBuffer() 00014 { 00015 printf("Generating sine...\r\n"); 00016 for(int i=0; i<128; i++) { 00017 audioDataBuffer[i] =((1.0 + sin((double(i)/16.0*6.28318530717959)))/2.0); //formula copied from mbed example 00018 } 00019 } 00020 00021 note makeNote(unsigned char length, pitchname pitch2make) 00022 { 00023 note madenote; 00024 madenote.length = length; 00025 madenote.pitch = pitch2make; 00026 return madenote; 00027 } 00028 00029 void playNote(note note2play) 00030 { 00031 float SPB = 60.0*4.0/(120.0); 00032 int PlayingFreq = pitch2freq(note2play.pitch); 00033 if(PlayingFreq == 0) { //rest 00034 wait((1/(float)note2play.length)*SPB); 00035 } else { 00036 int sampleRate = PlayingFreq * 16; 00037 speaker.period_us(1); //1MHz 00038 float ticker_period = (float) 1/(sampleRate); 00039 printf("\r\nTicker Period: %f\tTicker Freq: %f\r\nTarget Freq: %i \r\n\r\n",ticker_period, 1/ticker_period, PlayingFreq); 00040 00041 SampleTime.attach(&placeNewSample,ticker_period); 00042 wait((1/(float)note2play.length)*SPB); 00043 SampleTime.detach(); 00044 00045 printf("\033[A\033[A\033[A\033[A"); 00046 } 00047 } 00048 00049 int pitch2freq(pitchname pitch2switch) 00050 { 00051 switch(pitch2switch) { 00052 case rest: 00053 return 0; 00054 case D2: 00055 return 73; 00056 case Ds2: 00057 return 78; 00058 case E2: 00059 return 82; 00060 case F2: 00061 return 87; 00062 case Fs2: 00063 return 92; 00064 case G2: 00065 return 98; 00066 case Gs2: 00067 return 104; 00068 case A2: 00069 return 110; 00070 case As2: 00071 return 117; 00072 case B2: 00073 return 123; 00074 case C3: 00075 return 131; 00076 case Cs3: 00077 return 139; 00078 case D3: 00079 return 147; 00080 case Ds3: 00081 return 156; 00082 case E3: 00083 return 165; 00084 case F3: 00085 return 175; 00086 case Fs3: 00087 return 185; 00088 case G3: 00089 return 196; 00090 case Gs3: 00091 return 208; 00092 case A3: 00093 return 220; 00094 case As3: 00095 return 233; 00096 case B3: 00097 return 247; 00098 case C4: 00099 return 262; 00100 case Cs4: 00101 return 277; 00102 case D4: 00103 return 294; 00104 case Ds4: 00105 return 311; 00106 case E4: 00107 return 330; 00108 case F4: 00109 return 349; 00110 case Fs4: 00111 return 370; 00112 00113 case G4: 00114 return 392; 00115 00116 case Gs4: 00117 return 415; 00118 00119 case A4: 00120 return 440; 00121 00122 case As4: 00123 return 466; 00124 00125 case B4: 00126 return 494; 00127 00128 case C5: 00129 return 523; 00130 00131 case Cs5: 00132 return 554; 00133 00134 case D5: 00135 return 587; 00136 00137 case Ds5: 00138 return 622; 00139 00140 case E5: 00141 return 659; 00142 00143 case F5: 00144 return 698; 00145 00146 case Fs5: 00147 return 740; 00148 00149 case G5: 00150 return 784; 00151 00152 case Gs5: 00153 return 831; 00154 00155 case A5: 00156 return 880; 00157 00158 case As5: 00159 return 932; 00160 00161 case B5: 00162 return 988; 00163 00164 case C6: 00165 return 1047; 00166 00167 case Cs6: 00168 return 1109; 00169 00170 case D6: 00171 return 1175; 00172 00173 case Ds6: 00174 return 1245; 00175 00176 case E6: 00177 return 1319; 00178 00179 case F6: 00180 return 1397; 00181 00182 case Fs6: 00183 return 1480; 00184 00185 case G6: 00186 return 1568; 00187 00188 case Gs6: 00189 return 1661; 00190 00191 case END: 00192 return -1; 00193 } 00194 }
Generated on Sat Jul 23 2022 08:05:41 by 1.7.2