PokittoLib is the library needed for programming the Pokitto DIY game console (www.pokitto.com)

Dependents:   YATTT sd_map_test cPong SnowDemo ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Synth_helpers.cpp Source File

Synth_helpers.cpp

00001 /**************************************************************************/
00002 /*!
00003     @file     Synth_envfuncs.cpp
00004     @author   Jonne Valola
00005 
00006     @section LICENSE
00007 
00008     Pokitto development stage library
00009     Software License Agreement
00010 
00011     Copyright (c) 2015, Jonne Valola ("Author")
00012     All rights reserved.
00013 
00014     This library is intended solely for the purpose of Pokitto development.
00015 
00016     Redistribution and use in source and binary forms, with or without
00017     modification requires written permission from Author.
00018 */
00019 /**************************************************************************/
00020 
00021 #include "Pokitto.h "
00022 #include "Synth.h "
00023 #include "Pokitto_settings.h "
00024 
00025 #define PROGMEM
00026     #define pgm_read_byte(addr) (*(const unsigned char *)(addr))
00027     #ifndef WIN32
00028     #ifndef pgm_read_word
00029     #define pgm_read_word(addr) (*(const unsigned short *)(addr))
00030     #endif
00031     #else
00032     #define pgm_read_word(addr) (*(const unsigned int *)(addr))
00033     #endif // WIN32
00034 
00035 // http://www.arklyffe.com/main/2010/08/29/xorshift-pseudorandom-number-generator/
00036 static uint8_t y8 = 1;
00037 static uint16_t y16 = 1;
00038 
00039 // returns values from 1 to 255 inclusive, period is 255
00040 uint8_t xorshift8(void) {
00041     //y8 ^= (y8 << 7);
00042     y8 ^= (y8 * 128);
00043     y8 ^= (y8 >> 5);
00044     //return y8 ^= (y8 << 3);
00045     return y8 ^= (y8 * 8);
00046 }
00047 
00048 // returns values from 1 to 65535 inclusive, period is 65535
00049 uint16_t xorshift16(void) {
00050     //y16 ^= (y16 << 13);
00051     y16 ^= (y16 * 8192);
00052     y16 ^= (y16 >> 9);
00053     //return y16 ^= (y16 << 7);
00054     return y16 ^= (y16 * 128);
00055 }
00056 
00057 
00058 int8_t arptable[MAX_ARPMODE][5] = {
00059 {0,0,0,0,0}, // Off
00060 {0,4,7,4,0}, // Major tonic, 3rd, 5th
00061 {0,3,7,3,0}, // Minor tonic, 3rd, 5th
00062 {0,1,0,-1,0}, // vibrato test
00063 {0,12,0,12,0}, // octave test
00064 {0,11,14,17,21}, // funky test
00065 };
00066 
00067 
00068 /** VITAL TABLES **/
00069 
00070 #if (POK_AUD_FREQ==8000)
00071 
00072 uint32_t cincs[] ={
00073 16573205    ,     // 0 - NOTE_B0
00074 17555679    ,     // 1 - NOTE_C1
00075 18602577    ,     // 2 - NOTE_CS1
00076 19708531    ,     // 3 - NOTE_D1
00077 20878910    ,     // 4 - NOTE_DS1
00078 22119082    ,     // 5 - NOTE_E1
00079 23434415    ,     // 6 - NOTE_F1
00080 24830280    ,     // 7 - NOTE_FS1
00081 26306675    ,     // 8 - NOTE_G1
00082 27868969    ,     // 9 - NOTE_GS1
00083 29527900    ,     // 10 - NOTE_A1
00084 31283468    ,     // 11 - NOTE_AS1
00085 33146410    ,     // 12 - NOTE_B1
00086 35116726    ,     // 13 - NOTE_C2
00087 37205154    ,     // 14 - NOTE_CS2
00088 39417062    ,     // 15 - NOTE_D2
00089 41757820    ,     // 16 - NOTE_DS2
00090 44243532    ,     // 17 - NOTE_E2
00091 46874199    ,     // 18 - NOTE_F2
00092 49660559    ,     // 19 - NOTE_FS2
00093 52613349    ,     // 20 - NOTE_G2
00094 55743307    ,     // 21 - NOTE_GS2
00095 59055800    ,     // 22 - NOTE_A2
00096 62566936    ,     // 23 - NOTE_AS2
00097 66287451    ,     // 24 - NOTE_B2
00098 70228084    ,     // 25 - NOTE_C3
00099 74404940    ,     // 26 - NOTE_CS3
00100 78828756    ,     // 27 - NOTE_D3
00101 83515639    ,     // 28 - NOTE_DS3
00102 88481695    ,     // 29 - NOTE_E3
00103 93743030    ,     // 30 - NOTE_F3
00104 99321119    ,     // 31 - NOTE_FS3
00105 105226699   ,     // 32 - NOTE_G3
00106 111481245   ,     // 33 - NOTE_GS3
00107 118111601   ,     // 34 - NOTE_A3
00108 125133872   ,     // 35 - NOTE_AS3
00109 132574903   ,     // 36 - NOTE_B3
00110 140461537   ,     // 37 - NOTE_C4
00111 148809879   ,     // 38 - NOTE_CS4
00112 157657512   ,     // 39 - NOTE_D4
00113 167036647   ,     // 40 - NOTE_DS4
00114 176968759   ,     // 41 - NOTE_E4
00115 187491429   ,     // 42 - NOTE_F4
00116 198636869   ,     // 43 - NOTE_FS4
00117 210453397   ,     // 44 - NOTE_G4
00118 222962490   ,     // 45 - NOTE_GS4
00119 236223201   ,     // 46 - NOTE_A4 // 440Hz
00120 250267744   ,     // 47 - NOTE_AS4
00121 265149806   ,     // 48 - NOTE_B4
00122 280917705   ,     // 49 - NOTE_C5
00123 297625127   ,     // 50 - NOTE_CS5
00124 315320393   ,     // 51 - NOTE_D5
00125 334067925   ,     // 52 - NOTE_DS5
00126 353932149   ,     // 53 - NOTE_E5
00127 374982857   ,     // 54 - NOTE_F5
00128 397279106   ,     // 55 - NOTE_FS5
00129 420901426   ,     // 56 - NOTE_G5
00130 445930348   ,     // 57 - NOTE_GS5
00131 472446402   ,     // 58 - NOTE_A5
00132 500540857   ,     // 59 - NOTE_AS5
00133 530304981   ,     // 60 - NOTE_B5
00134 561835409   ,     // 61 - NOTE_C6
00135 595244886   ,     // 62 - NOTE_CS6
00136 630640785   ,     // 63 - NOTE_D6
00137 668141219   ,     // 64 - NOTE_DS6
00138 707869666   ,     // 65 - NOTE_E6
00139 749960346   ,     // 66 - NOTE_F6
00140 794558212   ,     // 67 - NOTE_FS6
00141 841802852   ,     // 68 - NOTE_G6
00142 891860696   ,     // 69 - NOTE_GS6
00143 944892805   ,     // 70 - NOTE_A6
00144 1001081715  ,     // 71 - NOTE_AS6
00145 1060604593  ,     // 72 - NOTE_B6
00146 1123670819  ,     // 73 - NOTE_C7
00147 1190489772  ,     // 74 - NOTE_CS7
00148 1261281571  ,     // 75 - NOTE_D7
00149 1336282437  ,     // 76 - NOTE_DS7
00150 1415739332  ,     // 77 - NOTE_E7
00151 1499926060  ,     // 78 - NOTE_F7
00152 1589116424  ,     // 79 - NOTE_FS7
00153 1683605705  ,     // 80 - NOTE_G7
00154 1783721392  ,     // 81 - NOTE_GS7
00155 1889785610  ,     // 82 - NOTE_A7
00156 2002158060  ,     // 83 - NOTE_AS7
00157 2121214554  ,     // 84 - NOTE_B7
00158 2247347006  ,     // 85 - NOTE_C8
00159 2380979544  ,     // 86 - NOTE_CS8
00160 2522557773  ,     // 87 - NOTE_D8
00161 2672559505  ,     // 88 - NOTE_DS8
00162 };
00163 
00164 #elif (POK_AUD_FREQ==11025)
00165 
00166 uint32_t cincs[] ={
00167 12025908    ,     // 0 - NOTE_B0
00168 12738815    ,     // 1 - NOTE_C1
00169 13498469    ,     // 2 - NOTE_CS1
00170 14300975    ,     // 3 - NOTE_D1
00171 15150229    ,     // 4 - NOTE_DS1
00172 16050127    ,     // 5 - NOTE_E1
00173 17004564    ,     // 6 - NOTE_F1
00174 18017436    ,     // 7 - NOTE_FS1
00175 19088744    ,     // 8 - NOTE_G1
00176 20222381    ,     // 9 - NOTE_GS1
00177 21426141    ,     // 10 - NOTE_A1
00178 22700022    ,     // 11 - NOTE_AS1
00179 24051817    ,     // 12 - NOTE_B1
00180 25481525    ,     // 13 - NOTE_C2
00181 26996937    ,     // 14 - NOTE_CS2
00182 28601950    ,     // 15 - NOTE_D2
00183 30300459    ,     // 16 - NOTE_DS2
00184 32104150    ,     // 17 - NOTE_E2
00185 34013024    ,     // 18 - NOTE_F2
00186 36034873    ,     // 19 - NOTE_FS2
00187 38177487    ,     // 20 - NOTE_G2
00188 40448658    ,     // 21 - NOTE_GS2
00189 42852281    ,     // 22 - NOTE_A2
00190 45400044    ,     // 23 - NOTE_AS2
00191 48099738    ,     // 24 - NOTE_B2
00192 50959154    ,     // 25 - NOTE_C3
00193 53989979    ,     // 26 - NOTE_CS3
00194 57200004    ,     // 27 - NOTE_D3
00195 60600917    ,     // 28 - NOTE_DS3
00196 64204405    ,     // 29 - NOTE_E3
00197 68022153    ,     // 30 - NOTE_F3
00198 72069746    ,     // 31 - NOTE_FS3
00199 76354974    ,     // 32 - NOTE_G3
00200 80893420    ,     // 33 - NOTE_GS3
00201 85704563    ,     // 34 - NOTE_A3
00202 90800089    ,     // 35 - NOTE_AS3
00203 96199476    ,     // 36 - NOTE_B3
00204 101922203   ,     // 37 - NOTE_C4
00205 107979958   ,     // 38 - NOTE_CS4
00206 114400009   ,     // 39 - NOTE_D4
00207 121205730   ,     // 40 - NOTE_DS4
00208 128412705   ,     // 41 - NOTE_E4
00209 136048202   ,     // 42 - NOTE_F4
00210 144135596   ,     // 43 - NOTE_FS4
00211 152709948   ,     // 44 - NOTE_G4
00212 161786841   ,     // 45 - NOTE_GS4
00213 171409126   ,     // 46 - NOTE_A4 // 440Hz
00214 181600177   ,     // 47 - NOTE_AS4
00215 192398952   ,     // 48 - NOTE_B4
00216 203840511   ,     // 49 - NOTE_C5
00217 215963811   ,     // 50 - NOTE_CS5
00218 228803913   ,     // 51 - NOTE_D5
00219 242407565   ,     // 52 - NOTE_DS5
00220 256821514   ,     // 53 - NOTE_E5
00221 272096404   ,     // 54 - NOTE_F5
00222 288275088   ,     // 55 - NOTE_FS5
00223 305416001   ,     // 56 - NOTE_G5
00224 323577577   ,     // 57 - NOTE_GS5
00225 342818251   ,     // 58 - NOTE_A5
00226 363204250   ,     // 59 - NOTE_AS5
00227 384801800   ,     // 60 - NOTE_B5
00228 407681023   ,     // 61 - NOTE_C6
00229 431923727   ,     // 62 - NOTE_CS6
00230 457607826   ,     // 63 - NOTE_D6
00231 484819025   ,     // 64 - NOTE_DS6
00232 513646923   ,     // 65 - NOTE_E6
00233 544188913   ,     // 66 - NOTE_F6
00234 576550177   ,     // 67 - NOTE_FS6
00235 610832002   ,     // 68 - NOTE_G6
00236 647155154   ,     // 69 - NOTE_GS6
00237 685636502   ,     // 70 - NOTE_A6
00238 726408500   ,     // 71 - NOTE_AS6
00239 769599704   ,     // 72 - NOTE_B6
00240 815362045   ,     // 73 - NOTE_C7
00241 863847454   ,     // 74 - NOTE_CS7
00242 915215652   ,     // 75 - NOTE_D7
00243 969638050   ,     // 76 - NOTE_DS7
00244 1027293846  ,     // 77 - NOTE_E7
00245 1088381721  ,     // 78 - NOTE_F7
00246 1153100353  ,     // 79 - NOTE_FS7
00247 1221664003  ,     // 80 - NOTE_G7
00248 1294310307  ,     // 81 - NOTE_GS7
00249 1371273005  ,     // 82 - NOTE_A7
00250 1452813105  ,     // 83 - NOTE_AS7
00251 1539203304  ,     // 84 - NOTE_B7
00252 1630727986  ,     // 85 - NOTE_C8
00253 1727694908  ,     // 86 - NOTE_CS8
00254 1830427409  ,     // 87 - NOTE_D8
00255 1939272203  ,     // 88 - NOTE_DS8
00256 };
00257 
00258 #elif (POK_AUD_FREQ==16000)
00259 
00260 uint32_t cincs[] ={
00261 8286603 ,     // 0 - NOTE_B0
00262 8777839 ,     // 1 - NOTE_C1
00263 9301289 ,     // 2 - NOTE_CS1
00264 9854266 ,     // 3 - NOTE_D1
00265 10439455    ,     // 4 - NOTE_DS1
00266 11059541    ,     // 5 - NOTE_E1
00267 11717208    ,     // 6 - NOTE_F1
00268 12415140    ,     // 7 - NOTE_FS1
00269 13153337    ,     // 8 - NOTE_G1
00270 13934485    ,     // 9 - NOTE_GS1
00271 14763950    ,     // 10 - NOTE_A1
00272 15641734    ,     // 11 - NOTE_AS1
00273 16573205    ,     // 12 - NOTE_B1
00274 17558363    ,     // 13 - NOTE_C2
00275 18602577    ,     // 14 - NOTE_CS2
00276 19708531    ,     // 15 - NOTE_D2
00277 20878910    ,     // 16 - NOTE_DS2
00278 22121766    ,     // 17 - NOTE_E2
00279 23437100    ,     // 18 - NOTE_F2
00280 24830280    ,     // 19 - NOTE_FS2
00281 26306675    ,     // 20 - NOTE_G2
00282 27871653    ,     // 21 - NOTE_GS2
00283 29527900    ,     // 22 - NOTE_A2
00284 31283468    ,     // 23 - NOTE_AS2
00285 33143726    ,     // 24 - NOTE_B2
00286 35114042    ,     // 25 - NOTE_C3
00287 37202470    ,     // 26 - NOTE_CS3
00288 39414378    ,     // 27 - NOTE_D3
00289 41757820    ,     // 28 - NOTE_DS3
00290 44240847    ,     // 29 - NOTE_E3
00291 46871515    ,     // 30 - NOTE_F3
00292 49660559    ,     // 31 - NOTE_FS3
00293 52613349    ,     // 32 - NOTE_G3
00294 55740622    ,     // 33 - NOTE_GS3
00295 59055800    ,     // 34 - NOTE_A3
00296 62566936    ,     // 35 - NOTE_AS3
00297 66287451    ,     // 36 - NOTE_B3
00298 70230768    ,     // 37 - NOTE_C4
00299 74404940    ,     // 38 - NOTE_CS4
00300 78828756    ,     // 39 - NOTE_D4
00301 83518323    ,     // 40 - NOTE_DS4
00302 88484379    ,     // 41 - NOTE_E4
00303 93745714    ,     // 42 - NOTE_F4
00304 99318434    ,     // 43 - NOTE_FS4
00305 105226699   ,     // 44 - NOTE_G4
00306 111481245   ,     // 45 - NOTE_GS4
00307 118111601   ,     // 46 - NOTE_A4 // 440Hz
00308 125133872   ,     // 47 - NOTE_AS4
00309 132574903   ,     // 48 - NOTE_B4
00310 140458852   ,     // 49 - NOTE_C5
00311 148812564   ,     // 50 - NOTE_CS5
00312 157660196   ,     // 51 - NOTE_D5
00313 167033962   ,     // 52 - NOTE_DS5
00314 176966074   ,     // 53 - NOTE_E5
00315 187491429   ,     // 54 - NOTE_F5
00316 198639553   ,     // 55 - NOTE_FS5
00317 210450713   ,     // 56 - NOTE_G5
00318 222965174   ,     // 57 - NOTE_GS5
00319 236223201   ,     // 58 - NOTE_A5
00320 250270429   ,     // 59 - NOTE_AS5
00321 265152490   ,     // 60 - NOTE_B5
00322 280917705   ,     // 61 - NOTE_C6
00323 297622443   ,     // 62 - NOTE_CS6
00324 315320393   ,     // 63 - NOTE_D6
00325 334070609   ,     // 64 - NOTE_DS6
00326 353934833   ,     // 65 - NOTE_E6
00327 374980173   ,     // 66 - NOTE_F6
00328 397279106   ,     // 67 - NOTE_FS6
00329 420901426   ,     // 68 - NOTE_G6
00330 445930348   ,     // 69 - NOTE_GS6
00331 472446402   ,     // 70 - NOTE_A6
00332 500540857   ,     // 71 - NOTE_AS6
00333 530302296   ,     // 72 - NOTE_B6
00334 561835409   ,     // 73 - NOTE_C7
00335 595244886   ,     // 74 - NOTE_CS7
00336 630640785   ,     // 75 - NOTE_D7
00337 668141219   ,     // 76 - NOTE_DS7
00338 707869666   ,     // 77 - NOTE_E7
00339 749963030   ,     // 78 - NOTE_F7
00340 794558212   ,     // 79 - NOTE_FS7
00341 841802852   ,     // 80 - NOTE_G7
00342 891860696   ,     // 81 - NOTE_GS7
00343 944892805   ,     // 82 - NOTE_A7
00344 1001079030  ,     // 83 - NOTE_AS7
00345 1060607277  ,     // 84 - NOTE_B7
00346 1123673503  ,     // 85 - NOTE_C8
00347 1190489772  ,     // 86 - NOTE_CS8
00348 1261278886  ,     // 87 - NOTE_D8
00349 1336279753  ,     // 88 - NOTE_DS8
00350 };
00351 
00352 #elif (POK_AUD_FREQ==22050)
00353 
00354 uint32_t cincs[] ={
00355 6012954 ,     // 0 - NOTE_B0
00356 6369407 ,     // 1 - NOTE_C1
00357 6749234 ,     // 2 - NOTE_CS1
00358 7150488 ,     // 3 - NOTE_D1
00359 7575115 ,     // 4 - NOTE_DS1
00360 8025064 ,     // 5 - NOTE_E1
00361 8502282 ,     // 6 - NOTE_F1
00362 9008718 ,     // 7 - NOTE_FS1
00363 9544372 ,     // 8 - NOTE_G1
00364 10111191    ,     // 9 - NOTE_GS1
00365 10713070    ,     // 10 - NOTE_A1
00366 11350011    ,     // 11 - NOTE_AS1
00367 12025908    ,     // 12 - NOTE_B1
00368 12740762    ,     // 13 - NOTE_C2
00369 13498469    ,     // 14 - NOTE_CS2
00370 14300975    ,     // 15 - NOTE_D2
00371 15150229    ,     // 16 - NOTE_DS2
00372 16052075    ,     // 17 - NOTE_E2
00373 17006512    ,     // 18 - NOTE_F2
00374 18017436    ,     // 19 - NOTE_FS2
00375 19088744    ,     // 20 - NOTE_G2
00376 20224329    ,     // 21 - NOTE_GS2
00377 21426141    ,     // 22 - NOTE_A2
00378 22700022    ,     // 23 - NOTE_AS2
00379 24049869    ,     // 24 - NOTE_B2
00380 25479577    ,     // 25 - NOTE_C3
00381 26994989    ,     // 26 - NOTE_CS3
00382 28600002    ,     // 27 - NOTE_D3
00383 30300459    ,     // 28 - NOTE_DS3
00384 32102202    ,     // 29 - NOTE_E3
00385 34011077    ,     // 30 - NOTE_F3
00386 36034873    ,     // 31 - NOTE_FS3
00387 38177487    ,     // 32 - NOTE_G3
00388 40446710    ,     // 33 - NOTE_GS3
00389 42852281    ,     // 34 - NOTE_A3
00390 45400044    ,     // 35 - NOTE_AS3
00391 48099738    ,     // 36 - NOTE_B3
00392 50961102    ,     // 37 - NOTE_C4
00393 53989979    ,     // 38 - NOTE_CS4
00394 57200004    ,     // 39 - NOTE_D4
00395 60602865    ,     // 40 - NOTE_DS4
00396 64206352    ,     // 41 - NOTE_E4
00397 68024101    ,     // 42 - NOTE_F4
00398 72067798    ,     // 43 - NOTE_FS4
00399 76354974    ,     // 44 - NOTE_G4
00400 80893420    ,     // 45 - NOTE_GS4
00401 85704563    ,     // 46 - NOTE_A4 // 440Hz
00402 90800089    ,     // 47 - NOTE_AS4
00403 96199476    ,     // 48 - NOTE_B4
00404 101920256   ,     // 49 - NOTE_C5
00405 107981906   ,     // 50 - NOTE_CS5
00406 114401957   ,     // 51 - NOTE_D5
00407 121203782   ,     // 52 - NOTE_DS5
00408 128410757   ,     // 53 - NOTE_E5
00409 136048202   ,     // 54 - NOTE_F5
00410 144137544   ,     // 55 - NOTE_FS5
00411 152708000   ,     // 56 - NOTE_G5
00412 161788788   ,     // 57 - NOTE_GS5
00413 171409126   ,     // 58 - NOTE_A5
00414 181602125   ,     // 59 - NOTE_AS5
00415 192400900   ,     // 60 - NOTE_B5
00416 203840511   ,     // 61 - NOTE_C6
00417 215961863   ,     // 62 - NOTE_CS6
00418 228803913   ,     // 63 - NOTE_D6
00419 242409512   ,     // 64 - NOTE_DS6
00420 256823462   ,     // 65 - NOTE_E6
00421 272094456   ,     // 66 - NOTE_F6
00422 288275088   ,     // 67 - NOTE_FS6
00423 305416001   ,     // 68 - NOTE_G6
00424 323577577   ,     // 69 - NOTE_GS6
00425 342818251   ,     // 70 - NOTE_A6
00426 363204250   ,     // 71 - NOTE_AS6
00427 384799852   ,     // 72 - NOTE_B6
00428 407681023   ,     // 73 - NOTE_C7
00429 431923727   ,     // 74 - NOTE_CS7
00430 457607826   ,     // 75 - NOTE_D7
00431 484819025   ,     // 76 - NOTE_DS7
00432 513646923   ,     // 77 - NOTE_E7
00433 544190861   ,     // 78 - NOTE_F7
00434 576550177   ,     // 79 - NOTE_FS7
00435 610832002   ,     // 80 - NOTE_G7
00436 647155154   ,     // 81 - NOTE_GS7
00437 685636502   ,     // 82 - NOTE_A7
00438 726406553   ,     // 83 - NOTE_AS7
00439 769601652   ,     // 84 - NOTE_B7
00440 815363993   ,     // 85 - NOTE_C8
00441 863847454   ,     // 86 - NOTE_CS8
00442 915213704   ,     // 87 - NOTE_D8
00443 969636102   ,     // 88 - NOTE_DS8
00444 };
00445 
00446 
00447 #elif (POK_AUD_FREQ==32000)
00448 
00449 uint32_t cincs[] ={
00450 4143301 ,     // 0 - NOTE_B0
00451 4388920 ,     // 1 - NOTE_C1
00452 4650644 ,     // 2 - NOTE_CS1
00453 4927133 ,     // 3 - NOTE_D1
00454 5219727 ,     // 4 - NOTE_DS1
00455 5529770 ,     // 5 - NOTE_E1
00456 5858604 ,     // 6 - NOTE_F1
00457 6207570 ,     // 7 - NOTE_FS1
00458 6576669 ,     // 8 - NOTE_G1
00459 6967242 ,     // 9 - NOTE_GS1
00460 7381975 ,     // 10 - NOTE_A1
00461 7820867 ,     // 11 - NOTE_AS1
00462 8286603 ,     // 12 - NOTE_B1
00463 8779182 ,     // 13 - NOTE_C2
00464 9301289 ,     // 14 - NOTE_CS2
00465 9854266 ,     // 15 - NOTE_D2
00466 10439455    ,     // 16 - NOTE_DS2
00467 11060883    ,     // 17 - NOTE_E2
00468 11718550    ,     // 18 - NOTE_F2
00469 12415140    ,     // 19 - NOTE_FS2
00470 13153337    ,     // 20 - NOTE_G2
00471 13935827    ,     // 21 - NOTE_GS2
00472 14763950    ,     // 22 - NOTE_A2
00473 15641734    ,     // 23 - NOTE_AS2
00474 16571863    ,     // 24 - NOTE_B2
00475 17557021    ,     // 25 - NOTE_C3
00476 18601235    ,     // 26 - NOTE_CS3
00477 19707189    ,     // 27 - NOTE_D3
00478 20878910    ,     // 28 - NOTE_DS3
00479 22120424    ,     // 29 - NOTE_E3
00480 23435757    ,     // 30 - NOTE_F3
00481 24830280    ,     // 31 - NOTE_FS3
00482 26306675    ,     // 32 - NOTE_G3
00483 27870311    ,     // 33 - NOTE_GS3
00484 29527900    ,     // 34 - NOTE_A3
00485 31283468    ,     // 35 - NOTE_AS3
00486 33143726    ,     // 36 - NOTE_B3
00487 35115384    ,     // 37 - NOTE_C4
00488 37202470    ,     // 38 - NOTE_CS4
00489 39414378    ,     // 39 - NOTE_D4
00490 41759162    ,     // 40 - NOTE_DS4
00491 44242190    ,     // 41 - NOTE_E4
00492 46872857    ,     // 42 - NOTE_F4
00493 49659217    ,     // 43 - NOTE_FS4
00494 52613349    ,     // 44 - NOTE_G4
00495 55740622    ,     // 45 - NOTE_GS4
00496 59055800    ,     // 46 - NOTE_A4 // 440Hz
00497 62566936    ,     // 47 - NOTE_AS4
00498 66287451    ,     // 48 - NOTE_B4
00499 70229426    ,     // 49 - NOTE_C5
00500 74406282    ,     // 50 - NOTE_CS5
00501 78830098    ,     // 51 - NOTE_D5
00502 83516981    ,     // 52 - NOTE_DS5
00503 88483037    ,     // 53 - NOTE_E5
00504 93745714    ,     // 54 - NOTE_F5
00505 99319777    ,     // 55 - NOTE_FS5
00506 105225357   ,     // 56 - NOTE_G5
00507 111482587   ,     // 57 - NOTE_GS5
00508 118111601   ,     // 58 - NOTE_A5
00509 125135214   ,     // 59 - NOTE_AS5
00510 132576245   ,     // 60 - NOTE_B5
00511 140458852   ,     // 61 - NOTE_C6
00512 148811222   ,     // 62 - NOTE_CS6
00513 157660196   ,     // 63 - NOTE_D6
00514 167035305   ,     // 64 - NOTE_DS6
00515 176967417   ,     // 65 - NOTE_E6
00516 187490086   ,     // 66 - NOTE_F6
00517 198639553   ,     // 67 - NOTE_FS6
00518 210450713   ,     // 68 - NOTE_G6
00519 222965174   ,     // 69 - NOTE_GS6
00520 236223201   ,     // 70 - NOTE_A6
00521 250270429   ,     // 71 - NOTE_AS6
00522 265151148   ,     // 72 - NOTE_B6
00523 280917705   ,     // 73 - NOTE_C7
00524 297622443   ,     // 74 - NOTE_CS7
00525 315320393   ,     // 75 - NOTE_D7
00526 334070609   ,     // 76 - NOTE_DS7
00527 353934833   ,     // 77 - NOTE_E7
00528 374981515   ,     // 78 - NOTE_F7
00529 397279106   ,     // 79 - NOTE_FS7
00530 420901426   ,     // 80 - NOTE_G7
00531 445930348   ,     // 81 - NOTE_GS7
00532 472446402   ,     // 82 - NOTE_A7
00533 500539515   ,     // 83 - NOTE_AS7
00534 530303638   ,     // 84 - NOTE_B7
00535 561836751   ,     // 85 - NOTE_C8
00536 595244886   ,     // 86 - NOTE_CS8
00537 630639443   ,     // 87 - NOTE_D8
00538 668139876   ,     // 88 - NOTE_DS8
00539 };
00540 
00541 
00542 #elif (POK_AUD_FREQ==44100)
00543 
00544 uint32_t cincs[] ={
00545 3006477 ,     // 0 - NOTE_B0
00546 3184704 ,     // 1 - NOTE_C1
00547 3374617 ,     // 2 - NOTE_CS1
00548 3575244 ,     // 3 - NOTE_D1
00549 3787557 ,     // 4 - NOTE_DS1
00550 4012532 ,     // 5 - NOTE_E1
00551 4251141 ,     // 6 - NOTE_F1
00552 4504359 ,     // 7 - NOTE_FS1
00553 4772186 ,     // 8 - NOTE_G1
00554 5055595 ,     // 9 - NOTE_GS1
00555 5356535 ,     // 10 - NOTE_A1
00556 5675006 ,     // 11 - NOTE_AS1
00557 6012954 ,     // 12 - NOTE_B1
00558 6370381 ,     // 13 - NOTE_C2
00559 6749234 ,     // 14 - NOTE_CS2
00560 7150488 ,     // 15 - NOTE_D2
00561 7575115 ,     // 16 - NOTE_DS2
00562 8026038 ,     // 17 - NOTE_E2
00563 8503256 ,     // 18 - NOTE_F2
00564 9008718 ,     // 19 - NOTE_FS2
00565 9544372 ,     // 20 - NOTE_G2
00566 10112164    ,     // 21 - NOTE_GS2
00567 10713070    ,     // 22 - NOTE_A2
00568 11350011    ,     // 23 - NOTE_AS2
00569 12024935    ,     // 24 - NOTE_B2
00570 12739788    ,     // 25 - NOTE_C3
00571 13497495    ,     // 26 - NOTE_CS3
00572 14300001    ,     // 27 - NOTE_D3
00573 15150229    ,     // 28 - NOTE_DS3
00574 16051101    ,     // 29 - NOTE_E3
00575 17005538    ,     // 30 - NOTE_F3
00576 18017436    ,     // 31 - NOTE_FS3
00577 19088744    ,     // 32 - NOTE_G3
00578 20223355    ,     // 33 - NOTE_GS3
00579 21426141    ,     // 34 - NOTE_A3
00580 22700022    ,     // 35 - NOTE_AS3
00581 24049869    ,     // 36 - NOTE_B3
00582 25480551    ,     // 37 - NOTE_C4
00583 26994989    ,     // 38 - NOTE_CS4
00584 28600002    ,     // 39 - NOTE_D4
00585 30301433    ,     // 40 - NOTE_DS4
00586 32103176    ,     // 41 - NOTE_E4
00587 34012051    ,     // 42 - NOTE_F4
00588 36033899    ,     // 43 - NOTE_FS4
00589 38177487    ,     // 44 - NOTE_G4
00590 40446710    ,     // 45 - NOTE_GS4
00591 42852281    ,     // 46 - NOTE_A4 // 440Hz
00592 45400044    ,     // 47 - NOTE_AS4
00593 48099738    ,     // 48 - NOTE_B4
00594 50960128    ,     // 49 - NOTE_C5
00595 53990953    ,     // 50 - NOTE_CS5
00596 57200978    ,     // 51 - NOTE_D5
00597 60601891    ,     // 52 - NOTE_DS5
00598 64205378    ,     // 53 - NOTE_E5
00599 68024101    ,     // 54 - NOTE_F5
00600 72068772    ,     // 55 - NOTE_FS5
00601 76354000    ,     // 56 - NOTE_G5
00602 80894394    ,     // 57 - NOTE_GS5
00603 85704563    ,     // 58 - NOTE_A5
00604 90801063    ,     // 59 - NOTE_AS5
00605 96200450    ,     // 60 - NOTE_B5
00606 101920256   ,     // 61 - NOTE_C6
00607 107980932   ,     // 62 - NOTE_CS6
00608 114401957   ,     // 63 - NOTE_D6
00609 121204756   ,     // 64 - NOTE_DS6
00610 128411731   ,     // 65 - NOTE_E6
00611 136047228   ,     // 66 - NOTE_F6
00612 144137544   ,     // 67 - NOTE_FS6
00613 152708000   ,     // 68 - NOTE_G6
00614 161788788   ,     // 69 - NOTE_GS6
00615 171409126   ,     // 70 - NOTE_A6
00616 181602125   ,     // 71 - NOTE_AS6
00617 192399926   ,     // 72 - NOTE_B6
00618 203840511   ,     // 73 - NOTE_C7
00619 215961863   ,     // 74 - NOTE_CS7
00620 228803913   ,     // 75 - NOTE_D7
00621 242409512   ,     // 76 - NOTE_DS7
00622 256823462   ,     // 77 - NOTE_E7
00623 272095430   ,     // 78 - NOTE_F7
00624 288275088   ,     // 79 - NOTE_FS7
00625 305416001   ,     // 80 - NOTE_G7
00626 323577577   ,     // 81 - NOTE_GS7
00627 342818251   ,     // 82 - NOTE_A7
00628 363203276   ,     // 83 - NOTE_AS7
00629 384800826   ,     // 84 - NOTE_B7
00630 407681997   ,     // 85 - NOTE_C8
00631 431923727   ,     // 86 - NOTE_CS8
00632 457606852   ,     // 87 - NOTE_D8
00633 484818051   ,     // 88 - NOTE_DS8
00634 };
00635 
00636 
00637 
00638 #endif
00639 
00640 /** NOTE TO TEXT TABLES **/
00641 
00642 const char note_0[]  = "B-0";  // 0 - NOTE_B0
00643 const char note_1[]  = "C-1";  // 1 - NOTE_C1
00644 const char note_2[]  = "C#1";  // 2 - NOTE_CS1
00645 const char note_3[]  = "D-1";  // 3 - NOTE_D1
00646 const char note_4[]  = "D#1";  // 4 - NOTE_DS1
00647 const char note_5[]  = "E-1";  // 5 - NOTE_E1
00648 const char note_6[]  = "F-1";  // 6 - NOTE_F1
00649 const char note_7[]  = "F#1";  // 7 - NOTE_FS1
00650 const char note_8[]  = "G-1";  // 8 - NOTE_G1
00651 const char note_9[]  = "G#1";  // 9 - NOTE_GS1
00652 const char note_10[]  = "A-1";  // 10 - NOTE_A1
00653 const char note_11[]  = "A#1";  // 11 - NOTE_AS1
00654 const char note_12[]  = "B-1";  // 12 - NOTE_B1
00655 const char note_13[]  = "C-2";  // 2 - NOTE_C2
00656 const char note_14[]  = "C#2";  // 2 - NOTE_CS2
00657 const char note_15[]  = "D-2";  // 3 - NOTE_D2
00658 const char note_16[]  = "D#2";  // 4 - NOTE_DS2
00659 const char note_17[]  = "E-2";  // 5 - NOTE_E2
00660 const char note_18[]  = "F-2";  // 6 - NOTE_F2
00661 const char note_19[]  = "F#2";  // 7 - NOTE_FS2
00662 const char note_20[]  = "G-2";  // 8 - NOTE_G2
00663 const char note_21[]  = "G#2";  // 9 - NOTE_GS2
00664 const char note_22[]  = "A-2";  // 20 - NOTE_A2
00665 const char note_23[]  = "A#2";  // 22 - NOTE_AS2
00666 const char note_24[]  = "B-2";  // 22 - NOTE_B2
00667 const char note_25[]  = "C-3";  // 3 - NOTE_C3
00668 const char note_26[]  = "C#3";  // 3 - NOTE_CS3
00669 const char note_27[]  = "D-3";  // 3 - NOTE_D3
00670 const char note_28[]  = "D#3";  // 4 - NOTE_DS3
00671 const char note_29[]  = "E-3";  // 5 - NOTE_E3
00672 const char note_30[]  = "F-3";  // 6 - NOTE_F3
00673 const char note_31[]  = "F#3";  // 7 - NOTE_FS3
00674 const char note_32[]  = "G-3";  // 8 - NOTE_G3
00675 const char note_33[]  = "G#3";  // 9 - NOTE_GS3
00676 const char note_34[]  = "A-3";  // 30 - NOTE_A3
00677 const char note_35[]  = "A#3";  // 33 - NOTE_AS3
00678 const char note_36[]  = "B-3";  // 33 - NOTE_B3
00679 const char note_37[]  = "C-4";  // 4 - NOTE_C4
00680 const char note_38[]  = "C#4";  // 4 - NOTE_CS4
00681 const char note_39[]  = "D-4";  // 3 - NOTE_D4
00682 const char note_40[]  = "D#4";  // 4 - NOTE_DS4
00683 const char note_41[]  = "E-4";  // 5 - NOTE_E4
00684 const char note_42[]  = "F-4";  // 6 - NOTE_F4
00685 const char note_43[]  = "F#4";  // 7 - NOTE_FS4
00686 const char note_44[]  = "G-4";  // 8 - NOTE_G4
00687 const char note_45[]  = "G#4";  // 9 - NOTE_GS4
00688 const char note_46[]  = "A-4";  // 40 - NOTE_A4
00689 const char note_47[]  = "A#4";  // 44 - NOTE_AS4
00690 const char note_48[]  = "B-4";  // 44 - NOTE_B4
00691 const char note_49[]  = "C-5";  // 5 - NOTE_C5
00692 const char note_50[]  = "C#5";  // 5 - NOTE_CS5
00693 const char note_51[]  = "D-5";  // 3 - NOTE_D5
00694 const char note_52[]  = "D#5";  // 4 - NOTE_DS5
00695 const char note_53[]  = "E-5";  // 5 - NOTE_E5
00696 const char note_54[]  = "F-5";  // 6 - NOTE_F5
00697 const char note_55[]  = "F#5";  // 7 - NOTE_FS5
00698 const char note_56[]  = "G-5";  // 8 - NOTE_G5
00699 const char note_57[]  = "G#5";  // 9 - NOTE_GS5
00700 const char note_58[]  = "A-5";  // 50 - NOTE_A5
00701 const char note_59[]  = "A#5";  // 55 - NOTE_AS5
00702 const char note_60[]  = "B-5";  // 55 - NOTE_B5
00703 const char note_61[]  = "C-6";  // 6 - NOTE_C6
00704 const char note_62[]  = "C#6";  // 6 - NOTE_CS6
00705 const char note_63[]  = "D-6";  // 3 - NOTE_D6
00706 const char note_64[]  = "D#6";  // 4 - NOTE_DS6
00707 const char note_65[]  = "E-6";  // 5 - NOTE_E6
00708 const char note_66[]  = "F-6";  // 6 - NOTE_F6
00709 const char note_67[]  = "F#6";  // 7 - NOTE_FS6
00710 const char note_68[]  = "G-6";  // 8 - NOTE_G6
00711 const char note_69[]  = "G#6";  // 9 - NOTE_GS6
00712 const char note_70[]  = "A-6";  // 60 - NOTE_A6
00713 const char note_71[]  = "A#6";  // 66 - NOTE_AS6
00714 const char note_72[]  = "B-6";  // 66 - NOTE_B6
00715 const char note_73[]  = "C-7";  // 7 - NOTE_C7
00716 const char note_74[]  = "C#7";  // 7 - NOTE_CS7
00717 const char note_75[]  = "D-7";  // 3 - NOTE_D7
00718 const char note_76[]  = "D#7";  // 4 - NOTE_DS7
00719 const char note_77[]  = "E-7";  // 5 - NOTE_E7
00720 const char note_78[]  = "F-7";  // 6 - NOTE_F7
00721 const char note_79[]  = "F#7";  // 7 - NOTE_FS7
00722 const char note_80[]  = "G-7";  // 8 - NOTE_G7
00723 const char note_81[]  = "G#7";  // 9 - NOTE_GS7
00724 const char note_82[]  = "A-7";  // 70 - NOTE_A7
00725 const char note_83[]  = "A#7";  // 77 - NOTE_AS7
00726 const char note_84[]  = "B-7";  // 77 - NOTE_B7
00727 const char note_85[]  = "C-8";  // 8 - NOTE_C8
00728 const char note_86[]  = "C#8";  // 8 - NOTE_CS8
00729 const char note_87[]  = "D-8";  // 3 - NOTE_D8
00730 const char note_88[]  = "D#8";  // 4 - NOTE_DS8
00731 
00732 const char* note_table[]  = {
00733  note_0,
00734  note_1,
00735  note_2,
00736  note_3,
00737  note_4,
00738  note_5,
00739  note_6,
00740  note_7,
00741  note_8,
00742  note_9,
00743  note_10,
00744  note_11,
00745  note_12,
00746  note_13,
00747  note_14,
00748  note_15,
00749  note_16,
00750  note_17,
00751  note_18,
00752  note_19,
00753  note_20,
00754  note_21,
00755  note_22,
00756  note_23,
00757  note_24,
00758  note_25,
00759  note_26,
00760  note_27,
00761  note_28,
00762  note_29,
00763  note_30,
00764  note_31,
00765  note_32,
00766  note_33,
00767  note_34,
00768  note_35,
00769  note_36,
00770  note_37,
00771  note_38,
00772  note_39,
00773  note_40,
00774  note_41,
00775  note_42,
00776  note_43,
00777  note_44,
00778  note_45,
00779  note_46,
00780  note_47,
00781  note_48,
00782  note_49,
00783  note_50,
00784  note_51,
00785  note_52,
00786  note_53,
00787  note_54,
00788  note_55,
00789  note_56,
00790  note_57,
00791  note_58,
00792  note_59,
00793  note_60,
00794  note_61,
00795  note_62,
00796  note_63,
00797  note_64,
00798  note_65,
00799  note_66,
00800  note_67,
00801  note_68,
00802  note_69,
00803  note_70,
00804  note_71,
00805  note_72,
00806  note_73,
00807  note_74,
00808  note_75,
00809  note_76,
00810  note_77,
00811  note_78,
00812  note_79,
00813  note_80,
00814  note_81,
00815  note_82,
00816  note_83,
00817  note_84,
00818  note_85,
00819  note_86,
00820  note_87,
00821  note_88,
00822 };
00823 
00824 void getNoteString(char * buffer, uint8_t i) {
00825     if (i>88) strcpy(buffer,"@@@");
00826     else strcpy(buffer, note_table[i]);
00827 }
00828 
00829