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

Revision:
31:f4b9b85c7b62
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/POKITTO_LIBS/Synth/Synth_helpers.cpp	Tue Jan 30 10:41:47 2018 +0000
@@ -0,0 +1,829 @@
+/**************************************************************************/
+/*!
+    @file     Synth_envfuncs.cpp
+    @author   Jonne Valola
+
+    @section LICENSE
+
+    Pokitto development stage library
+    Software License Agreement
+
+    Copyright (c) 2015, Jonne Valola ("Author")
+    All rights reserved.
+
+    This library is intended solely for the purpose of Pokitto development.
+
+    Redistribution and use in source and binary forms, with or without
+    modification requires written permission from Author.
+*/
+/**************************************************************************/
+
+#include "Pokitto.h"
+#include "Synth.h"
+#include "Pokitto_settings.h"
+
+#define PROGMEM
+    #define pgm_read_byte(addr) (*(const unsigned char *)(addr))
+    #ifndef WIN32
+    #ifndef pgm_read_word
+    #define pgm_read_word(addr) (*(const unsigned short *)(addr))
+    #endif
+    #else
+    #define pgm_read_word(addr) (*(const unsigned int *)(addr))
+    #endif // WIN32
+
+// http://www.arklyffe.com/main/2010/08/29/xorshift-pseudorandom-number-generator/
+static uint8_t y8 = 1;
+static uint16_t y16 = 1;
+
+// returns values from 1 to 255 inclusive, period is 255
+uint8_t xorshift8(void) {
+    //y8 ^= (y8 << 7);
+    y8 ^= (y8 * 128);
+    y8 ^= (y8 >> 5);
+    //return y8 ^= (y8 << 3);
+    return y8 ^= (y8 * 8);
+}
+
+// returns values from 1 to 65535 inclusive, period is 65535
+uint16_t xorshift16(void) {
+    //y16 ^= (y16 << 13);
+    y16 ^= (y16 * 8192);
+    y16 ^= (y16 >> 9);
+    //return y16 ^= (y16 << 7);
+    return y16 ^= (y16 * 128);
+}
+
+
+int8_t arptable[MAX_ARPMODE][5] = {
+{0,0,0,0,0}, // Off
+{0,4,7,4,0}, // Major tonic, 3rd, 5th
+{0,3,7,3,0}, // Minor tonic, 3rd, 5th
+{0,1,0,-1,0}, // vibrato test
+{0,12,0,12,0}, // octave test
+{0,11,14,17,21}, // funky test
+};
+
+
+/** VITAL TABLES **/
+
+#if (POK_AUD_FREQ==8000)
+
+uint32_t cincs[] ={
+16573205	,	  // 0 - NOTE_B0
+17555679	,	  // 1 - NOTE_C1
+18602577	,	  // 2 - NOTE_CS1
+19708531	,	  // 3 - NOTE_D1
+20878910	,	  // 4 - NOTE_DS1
+22119082	,	  // 5 - NOTE_E1
+23434415	,	  // 6 - NOTE_F1
+24830280	,	  // 7 - NOTE_FS1
+26306675	,	  // 8 - NOTE_G1
+27868969	,	  // 9 - NOTE_GS1
+29527900	,	  // 10 - NOTE_A1
+31283468	,	  // 11 - NOTE_AS1
+33146410	,	  // 12 - NOTE_B1
+35116726	,	  // 13 - NOTE_C2
+37205154	,	  // 14 - NOTE_CS2
+39417062	,	  // 15 - NOTE_D2
+41757820	,	  // 16 - NOTE_DS2
+44243532	,	  // 17 - NOTE_E2
+46874199	,	  // 18 - NOTE_F2
+49660559	,	  // 19 - NOTE_FS2
+52613349	,	  // 20 - NOTE_G2
+55743307	,	  // 21 - NOTE_GS2
+59055800	,	  // 22 - NOTE_A2
+62566936	,	  // 23 - NOTE_AS2
+66287451	,	  // 24 - NOTE_B2
+70228084	,	  // 25 - NOTE_C3
+74404940	,	  // 26 - NOTE_CS3
+78828756	,	  // 27 - NOTE_D3
+83515639	,	  // 28 - NOTE_DS3
+88481695	,	  // 29 - NOTE_E3
+93743030	,	  // 30 - NOTE_F3
+99321119	,	  // 31 - NOTE_FS3
+105226699	,	  // 32 - NOTE_G3
+111481245	,	  // 33 - NOTE_GS3
+118111601	,	  // 34 - NOTE_A3
+125133872	,	  // 35 - NOTE_AS3
+132574903	,	  // 36 - NOTE_B3
+140461537	,	  // 37 - NOTE_C4
+148809879	,	  // 38 - NOTE_CS4
+157657512	,	  // 39 - NOTE_D4
+167036647	,	  // 40 - NOTE_DS4
+176968759	,	  // 41 - NOTE_E4
+187491429	,	  // 42 - NOTE_F4
+198636869	,	  // 43 - NOTE_FS4
+210453397	,	  // 44 - NOTE_G4
+222962490	,	  // 45 - NOTE_GS4
+236223201	,	  // 46 - NOTE_A4 // 440Hz
+250267744	,	  // 47 - NOTE_AS4
+265149806	,	  // 48 - NOTE_B4
+280917705	,	  // 49 - NOTE_C5
+297625127	,	  // 50 - NOTE_CS5
+315320393	,	  // 51 - NOTE_D5
+334067925	,	  // 52 - NOTE_DS5
+353932149	,	  // 53 - NOTE_E5
+374982857	,	  // 54 - NOTE_F5
+397279106	,	  // 55 - NOTE_FS5
+420901426	,	  // 56 - NOTE_G5
+445930348	,	  // 57 - NOTE_GS5
+472446402	,	  // 58 - NOTE_A5
+500540857	,	  // 59 - NOTE_AS5
+530304981	,	  // 60 - NOTE_B5
+561835409	,	  // 61 - NOTE_C6
+595244886	,	  // 62 - NOTE_CS6
+630640785	,	  // 63 - NOTE_D6
+668141219	,	  // 64 - NOTE_DS6
+707869666	,	  // 65 - NOTE_E6
+749960346	,	  // 66 - NOTE_F6
+794558212	,	  // 67 - NOTE_FS6
+841802852	,	  // 68 - NOTE_G6
+891860696	,	  // 69 - NOTE_GS6
+944892805	,	  // 70 - NOTE_A6
+1001081715	,	  // 71 - NOTE_AS6
+1060604593	,	  // 72 - NOTE_B6
+1123670819	,	  // 73 - NOTE_C7
+1190489772	,	  // 74 - NOTE_CS7
+1261281571	,	  // 75 - NOTE_D7
+1336282437	,	  // 76 - NOTE_DS7
+1415739332	,	  // 77 - NOTE_E7
+1499926060	,	  // 78 - NOTE_F7
+1589116424	,	  // 79 - NOTE_FS7
+1683605705	,	  // 80 - NOTE_G7
+1783721392	,	  // 81 - NOTE_GS7
+1889785610	,	  // 82 - NOTE_A7
+2002158060	,	  // 83 - NOTE_AS7
+2121214554	,	  // 84 - NOTE_B7
+2247347006	,	  // 85 - NOTE_C8
+2380979544	,	  // 86 - NOTE_CS8
+2522557773	,	  // 87 - NOTE_D8
+2672559505	,	  // 88 - NOTE_DS8
+};
+
+#elif (POK_AUD_FREQ==11025)
+
+uint32_t cincs[] ={
+12025908	,	  // 0 - NOTE_B0
+12738815	,	  // 1 - NOTE_C1
+13498469	,	  // 2 - NOTE_CS1
+14300975	,	  // 3 - NOTE_D1
+15150229	,	  // 4 - NOTE_DS1
+16050127	,	  // 5 - NOTE_E1
+17004564	,	  // 6 - NOTE_F1
+18017436	,	  // 7 - NOTE_FS1
+19088744	,	  // 8 - NOTE_G1
+20222381	,	  // 9 - NOTE_GS1
+21426141	,	  // 10 - NOTE_A1
+22700022	,	  // 11 - NOTE_AS1
+24051817	,	  // 12 - NOTE_B1
+25481525	,	  // 13 - NOTE_C2
+26996937	,	  // 14 - NOTE_CS2
+28601950	,	  // 15 - NOTE_D2
+30300459	,	  // 16 - NOTE_DS2
+32104150	,	  // 17 - NOTE_E2
+34013024	,	  // 18 - NOTE_F2
+36034873	,	  // 19 - NOTE_FS2
+38177487	,	  // 20 - NOTE_G2
+40448658	,	  // 21 - NOTE_GS2
+42852281	,	  // 22 - NOTE_A2
+45400044	,	  // 23 - NOTE_AS2
+48099738	,	  // 24 - NOTE_B2
+50959154	,	  // 25 - NOTE_C3
+53989979	,	  // 26 - NOTE_CS3
+57200004	,	  // 27 - NOTE_D3
+60600917	,	  // 28 - NOTE_DS3
+64204405	,	  // 29 - NOTE_E3
+68022153	,	  // 30 - NOTE_F3
+72069746	,	  // 31 - NOTE_FS3
+76354974	,	  // 32 - NOTE_G3
+80893420	,	  // 33 - NOTE_GS3
+85704563	,	  // 34 - NOTE_A3
+90800089	,	  // 35 - NOTE_AS3
+96199476	,	  // 36 - NOTE_B3
+101922203	,	  // 37 - NOTE_C4
+107979958	,	  // 38 - NOTE_CS4
+114400009	,	  // 39 - NOTE_D4
+121205730	,	  // 40 - NOTE_DS4
+128412705	,	  // 41 - NOTE_E4
+136048202	,	  // 42 - NOTE_F4
+144135596	,	  // 43 - NOTE_FS4
+152709948	,	  // 44 - NOTE_G4
+161786841	,	  // 45 - NOTE_GS4
+171409126	,	  // 46 - NOTE_A4 // 440Hz
+181600177	,	  // 47 - NOTE_AS4
+192398952	,	  // 48 - NOTE_B4
+203840511	,	  // 49 - NOTE_C5
+215963811	,	  // 50 - NOTE_CS5
+228803913	,	  // 51 - NOTE_D5
+242407565	,	  // 52 - NOTE_DS5
+256821514	,	  // 53 - NOTE_E5
+272096404	,	  // 54 - NOTE_F5
+288275088	,	  // 55 - NOTE_FS5
+305416001	,	  // 56 - NOTE_G5
+323577577	,	  // 57 - NOTE_GS5
+342818251	,	  // 58 - NOTE_A5
+363204250	,	  // 59 - NOTE_AS5
+384801800	,	  // 60 - NOTE_B5
+407681023	,	  // 61 - NOTE_C6
+431923727	,	  // 62 - NOTE_CS6
+457607826	,	  // 63 - NOTE_D6
+484819025	,	  // 64 - NOTE_DS6
+513646923	,	  // 65 - NOTE_E6
+544188913	,	  // 66 - NOTE_F6
+576550177	,	  // 67 - NOTE_FS6
+610832002	,	  // 68 - NOTE_G6
+647155154	,	  // 69 - NOTE_GS6
+685636502	,	  // 70 - NOTE_A6
+726408500	,	  // 71 - NOTE_AS6
+769599704	,	  // 72 - NOTE_B6
+815362045	,	  // 73 - NOTE_C7
+863847454	,	  // 74 - NOTE_CS7
+915215652	,	  // 75 - NOTE_D7
+969638050	,	  // 76 - NOTE_DS7
+1027293846	,	  // 77 - NOTE_E7
+1088381721	,	  // 78 - NOTE_F7
+1153100353	,	  // 79 - NOTE_FS7
+1221664003	,	  // 80 - NOTE_G7
+1294310307	,	  // 81 - NOTE_GS7
+1371273005	,	  // 82 - NOTE_A7
+1452813105	,	  // 83 - NOTE_AS7
+1539203304	,	  // 84 - NOTE_B7
+1630727986	,	  // 85 - NOTE_C8
+1727694908	,	  // 86 - NOTE_CS8
+1830427409	,	  // 87 - NOTE_D8
+1939272203	,	  // 88 - NOTE_DS8
+};
+
+#elif (POK_AUD_FREQ==16000)
+
+uint32_t cincs[] ={
+8286603	,	  // 0 - NOTE_B0
+8777839	,	  // 1 - NOTE_C1
+9301289	,	  // 2 - NOTE_CS1
+9854266	,	  // 3 - NOTE_D1
+10439455	,	  // 4 - NOTE_DS1
+11059541	,	  // 5 - NOTE_E1
+11717208	,	  // 6 - NOTE_F1
+12415140	,	  // 7 - NOTE_FS1
+13153337	,	  // 8 - NOTE_G1
+13934485	,	  // 9 - NOTE_GS1
+14763950	,	  // 10 - NOTE_A1
+15641734	,	  // 11 - NOTE_AS1
+16573205	,	  // 12 - NOTE_B1
+17558363	,	  // 13 - NOTE_C2
+18602577	,	  // 14 - NOTE_CS2
+19708531	,	  // 15 - NOTE_D2
+20878910	,	  // 16 - NOTE_DS2
+22121766	,	  // 17 - NOTE_E2
+23437100	,	  // 18 - NOTE_F2
+24830280	,	  // 19 - NOTE_FS2
+26306675	,	  // 20 - NOTE_G2
+27871653	,	  // 21 - NOTE_GS2
+29527900	,	  // 22 - NOTE_A2
+31283468	,	  // 23 - NOTE_AS2
+33143726	,	  // 24 - NOTE_B2
+35114042	,	  // 25 - NOTE_C3
+37202470	,	  // 26 - NOTE_CS3
+39414378	,	  // 27 - NOTE_D3
+41757820	,	  // 28 - NOTE_DS3
+44240847	,	  // 29 - NOTE_E3
+46871515	,	  // 30 - NOTE_F3
+49660559	,	  // 31 - NOTE_FS3
+52613349	,	  // 32 - NOTE_G3
+55740622	,	  // 33 - NOTE_GS3
+59055800	,	  // 34 - NOTE_A3
+62566936	,	  // 35 - NOTE_AS3
+66287451	,	  // 36 - NOTE_B3
+70230768	,	  // 37 - NOTE_C4
+74404940	,	  // 38 - NOTE_CS4
+78828756	,	  // 39 - NOTE_D4
+83518323	,	  // 40 - NOTE_DS4
+88484379	,	  // 41 - NOTE_E4
+93745714	,	  // 42 - NOTE_F4
+99318434	,	  // 43 - NOTE_FS4
+105226699	,	  // 44 - NOTE_G4
+111481245	,	  // 45 - NOTE_GS4
+118111601	,	  // 46 - NOTE_A4 // 440Hz
+125133872	,	  // 47 - NOTE_AS4
+132574903	,	  // 48 - NOTE_B4
+140458852	,	  // 49 - NOTE_C5
+148812564	,	  // 50 - NOTE_CS5
+157660196	,	  // 51 - NOTE_D5
+167033962	,	  // 52 - NOTE_DS5
+176966074	,	  // 53 - NOTE_E5
+187491429	,	  // 54 - NOTE_F5
+198639553	,	  // 55 - NOTE_FS5
+210450713	,	  // 56 - NOTE_G5
+222965174	,	  // 57 - NOTE_GS5
+236223201	,	  // 58 - NOTE_A5
+250270429	,	  // 59 - NOTE_AS5
+265152490	,	  // 60 - NOTE_B5
+280917705	,	  // 61 - NOTE_C6
+297622443	,	  // 62 - NOTE_CS6
+315320393	,	  // 63 - NOTE_D6
+334070609	,	  // 64 - NOTE_DS6
+353934833	,	  // 65 - NOTE_E6
+374980173	,	  // 66 - NOTE_F6
+397279106	,	  // 67 - NOTE_FS6
+420901426	,	  // 68 - NOTE_G6
+445930348	,	  // 69 - NOTE_GS6
+472446402	,	  // 70 - NOTE_A6
+500540857	,	  // 71 - NOTE_AS6
+530302296	,	  // 72 - NOTE_B6
+561835409	,	  // 73 - NOTE_C7
+595244886	,	  // 74 - NOTE_CS7
+630640785	,	  // 75 - NOTE_D7
+668141219	,	  // 76 - NOTE_DS7
+707869666	,	  // 77 - NOTE_E7
+749963030	,	  // 78 - NOTE_F7
+794558212	,	  // 79 - NOTE_FS7
+841802852	,	  // 80 - NOTE_G7
+891860696	,	  // 81 - NOTE_GS7
+944892805	,	  // 82 - NOTE_A7
+1001079030	,	  // 83 - NOTE_AS7
+1060607277	,	  // 84 - NOTE_B7
+1123673503	,	  // 85 - NOTE_C8
+1190489772	,	  // 86 - NOTE_CS8
+1261278886	,	  // 87 - NOTE_D8
+1336279753	,	  // 88 - NOTE_DS8
+};
+
+#elif (POK_AUD_FREQ==22050)
+
+uint32_t cincs[] ={
+6012954	,	  // 0 - NOTE_B0
+6369407	,	  // 1 - NOTE_C1
+6749234	,	  // 2 - NOTE_CS1
+7150488	,	  // 3 - NOTE_D1
+7575115	,	  // 4 - NOTE_DS1
+8025064	,	  // 5 - NOTE_E1
+8502282	,	  // 6 - NOTE_F1
+9008718	,	  // 7 - NOTE_FS1
+9544372	,	  // 8 - NOTE_G1
+10111191	,	  // 9 - NOTE_GS1
+10713070	,	  // 10 - NOTE_A1
+11350011	,	  // 11 - NOTE_AS1
+12025908	,	  // 12 - NOTE_B1
+12740762	,	  // 13 - NOTE_C2
+13498469	,	  // 14 - NOTE_CS2
+14300975	,	  // 15 - NOTE_D2
+15150229	,	  // 16 - NOTE_DS2
+16052075	,	  // 17 - NOTE_E2
+17006512	,	  // 18 - NOTE_F2
+18017436	,	  // 19 - NOTE_FS2
+19088744	,	  // 20 - NOTE_G2
+20224329	,	  // 21 - NOTE_GS2
+21426141	,	  // 22 - NOTE_A2
+22700022	,	  // 23 - NOTE_AS2
+24049869	,	  // 24 - NOTE_B2
+25479577	,	  // 25 - NOTE_C3
+26994989	,	  // 26 - NOTE_CS3
+28600002	,	  // 27 - NOTE_D3
+30300459	,	  // 28 - NOTE_DS3
+32102202	,	  // 29 - NOTE_E3
+34011077	,	  // 30 - NOTE_F3
+36034873	,	  // 31 - NOTE_FS3
+38177487	,	  // 32 - NOTE_G3
+40446710	,	  // 33 - NOTE_GS3
+42852281	,	  // 34 - NOTE_A3
+45400044	,	  // 35 - NOTE_AS3
+48099738	,	  // 36 - NOTE_B3
+50961102	,	  // 37 - NOTE_C4
+53989979	,	  // 38 - NOTE_CS4
+57200004	,	  // 39 - NOTE_D4
+60602865	,	  // 40 - NOTE_DS4
+64206352	,	  // 41 - NOTE_E4
+68024101	,	  // 42 - NOTE_F4
+72067798	,	  // 43 - NOTE_FS4
+76354974	,	  // 44 - NOTE_G4
+80893420	,	  // 45 - NOTE_GS4
+85704563	,	  // 46 - NOTE_A4 // 440Hz
+90800089	,	  // 47 - NOTE_AS4
+96199476	,	  // 48 - NOTE_B4
+101920256	,	  // 49 - NOTE_C5
+107981906	,	  // 50 - NOTE_CS5
+114401957	,	  // 51 - NOTE_D5
+121203782	,	  // 52 - NOTE_DS5
+128410757	,	  // 53 - NOTE_E5
+136048202	,	  // 54 - NOTE_F5
+144137544	,	  // 55 - NOTE_FS5
+152708000	,	  // 56 - NOTE_G5
+161788788	,	  // 57 - NOTE_GS5
+171409126	,	  // 58 - NOTE_A5
+181602125	,	  // 59 - NOTE_AS5
+192400900	,	  // 60 - NOTE_B5
+203840511	,	  // 61 - NOTE_C6
+215961863	,	  // 62 - NOTE_CS6
+228803913	,	  // 63 - NOTE_D6
+242409512	,	  // 64 - NOTE_DS6
+256823462	,	  // 65 - NOTE_E6
+272094456	,	  // 66 - NOTE_F6
+288275088	,	  // 67 - NOTE_FS6
+305416001	,	  // 68 - NOTE_G6
+323577577	,	  // 69 - NOTE_GS6
+342818251	,	  // 70 - NOTE_A6
+363204250	,	  // 71 - NOTE_AS6
+384799852	,	  // 72 - NOTE_B6
+407681023	,	  // 73 - NOTE_C7
+431923727	,	  // 74 - NOTE_CS7
+457607826	,	  // 75 - NOTE_D7
+484819025	,	  // 76 - NOTE_DS7
+513646923	,	  // 77 - NOTE_E7
+544190861	,	  // 78 - NOTE_F7
+576550177	,	  // 79 - NOTE_FS7
+610832002	,	  // 80 - NOTE_G7
+647155154	,	  // 81 - NOTE_GS7
+685636502	,	  // 82 - NOTE_A7
+726406553	,	  // 83 - NOTE_AS7
+769601652	,	  // 84 - NOTE_B7
+815363993	,	  // 85 - NOTE_C8
+863847454	,	  // 86 - NOTE_CS8
+915213704	,	  // 87 - NOTE_D8
+969636102	,	  // 88 - NOTE_DS8
+};
+
+
+#elif (POK_AUD_FREQ==32000)
+
+uint32_t cincs[] ={
+4143301	,	  // 0 - NOTE_B0
+4388920	,	  // 1 - NOTE_C1
+4650644	,	  // 2 - NOTE_CS1
+4927133	,	  // 3 - NOTE_D1
+5219727	,	  // 4 - NOTE_DS1
+5529770	,	  // 5 - NOTE_E1
+5858604	,	  // 6 - NOTE_F1
+6207570	,	  // 7 - NOTE_FS1
+6576669	,	  // 8 - NOTE_G1
+6967242	,	  // 9 - NOTE_GS1
+7381975	,	  // 10 - NOTE_A1
+7820867	,	  // 11 - NOTE_AS1
+8286603	,	  // 12 - NOTE_B1
+8779182	,	  // 13 - NOTE_C2
+9301289	,	  // 14 - NOTE_CS2
+9854266	,	  // 15 - NOTE_D2
+10439455	,	  // 16 - NOTE_DS2
+11060883	,	  // 17 - NOTE_E2
+11718550	,	  // 18 - NOTE_F2
+12415140	,	  // 19 - NOTE_FS2
+13153337	,	  // 20 - NOTE_G2
+13935827	,	  // 21 - NOTE_GS2
+14763950	,	  // 22 - NOTE_A2
+15641734	,	  // 23 - NOTE_AS2
+16571863	,	  // 24 - NOTE_B2
+17557021	,	  // 25 - NOTE_C3
+18601235	,	  // 26 - NOTE_CS3
+19707189	,	  // 27 - NOTE_D3
+20878910	,	  // 28 - NOTE_DS3
+22120424	,	  // 29 - NOTE_E3
+23435757	,	  // 30 - NOTE_F3
+24830280	,	  // 31 - NOTE_FS3
+26306675	,	  // 32 - NOTE_G3
+27870311	,	  // 33 - NOTE_GS3
+29527900	,	  // 34 - NOTE_A3
+31283468	,	  // 35 - NOTE_AS3
+33143726	,	  // 36 - NOTE_B3
+35115384	,	  // 37 - NOTE_C4
+37202470	,	  // 38 - NOTE_CS4
+39414378	,	  // 39 - NOTE_D4
+41759162	,	  // 40 - NOTE_DS4
+44242190	,	  // 41 - NOTE_E4
+46872857	,	  // 42 - NOTE_F4
+49659217	,	  // 43 - NOTE_FS4
+52613349	,	  // 44 - NOTE_G4
+55740622	,	  // 45 - NOTE_GS4
+59055800	,	  // 46 - NOTE_A4 // 440Hz
+62566936	,	  // 47 - NOTE_AS4
+66287451	,	  // 48 - NOTE_B4
+70229426	,	  // 49 - NOTE_C5
+74406282	,	  // 50 - NOTE_CS5
+78830098	,	  // 51 - NOTE_D5
+83516981	,	  // 52 - NOTE_DS5
+88483037	,	  // 53 - NOTE_E5
+93745714	,	  // 54 - NOTE_F5
+99319777	,	  // 55 - NOTE_FS5
+105225357	,	  // 56 - NOTE_G5
+111482587	,	  // 57 - NOTE_GS5
+118111601	,	  // 58 - NOTE_A5
+125135214	,	  // 59 - NOTE_AS5
+132576245	,	  // 60 - NOTE_B5
+140458852	,	  // 61 - NOTE_C6
+148811222	,	  // 62 - NOTE_CS6
+157660196	,	  // 63 - NOTE_D6
+167035305	,	  // 64 - NOTE_DS6
+176967417	,	  // 65 - NOTE_E6
+187490086	,	  // 66 - NOTE_F6
+198639553	,	  // 67 - NOTE_FS6
+210450713	,	  // 68 - NOTE_G6
+222965174	,	  // 69 - NOTE_GS6
+236223201	,	  // 70 - NOTE_A6
+250270429	,	  // 71 - NOTE_AS6
+265151148	,	  // 72 - NOTE_B6
+280917705	,	  // 73 - NOTE_C7
+297622443	,	  // 74 - NOTE_CS7
+315320393	,	  // 75 - NOTE_D7
+334070609	,	  // 76 - NOTE_DS7
+353934833	,	  // 77 - NOTE_E7
+374981515	,	  // 78 - NOTE_F7
+397279106	,	  // 79 - NOTE_FS7
+420901426	,	  // 80 - NOTE_G7
+445930348	,	  // 81 - NOTE_GS7
+472446402	,	  // 82 - NOTE_A7
+500539515	,	  // 83 - NOTE_AS7
+530303638	,	  // 84 - NOTE_B7
+561836751	,	  // 85 - NOTE_C8
+595244886	,	  // 86 - NOTE_CS8
+630639443	,	  // 87 - NOTE_D8
+668139876	,	  // 88 - NOTE_DS8
+};
+
+
+#elif (POK_AUD_FREQ==44100)
+
+uint32_t cincs[] ={
+3006477	,	  // 0 - NOTE_B0
+3184704	,	  // 1 - NOTE_C1
+3374617	,	  // 2 - NOTE_CS1
+3575244	,	  // 3 - NOTE_D1
+3787557	,	  // 4 - NOTE_DS1
+4012532	,	  // 5 - NOTE_E1
+4251141	,	  // 6 - NOTE_F1
+4504359	,	  // 7 - NOTE_FS1
+4772186	,	  // 8 - NOTE_G1
+5055595	,	  // 9 - NOTE_GS1
+5356535	,	  // 10 - NOTE_A1
+5675006	,	  // 11 - NOTE_AS1
+6012954	,	  // 12 - NOTE_B1
+6370381	,	  // 13 - NOTE_C2
+6749234	,	  // 14 - NOTE_CS2
+7150488	,	  // 15 - NOTE_D2
+7575115	,	  // 16 - NOTE_DS2
+8026038	,	  // 17 - NOTE_E2
+8503256	,	  // 18 - NOTE_F2
+9008718	,	  // 19 - NOTE_FS2
+9544372	,	  // 20 - NOTE_G2
+10112164	,	  // 21 - NOTE_GS2
+10713070	,	  // 22 - NOTE_A2
+11350011	,	  // 23 - NOTE_AS2
+12024935	,	  // 24 - NOTE_B2
+12739788	,	  // 25 - NOTE_C3
+13497495	,	  // 26 - NOTE_CS3
+14300001	,	  // 27 - NOTE_D3
+15150229	,	  // 28 - NOTE_DS3
+16051101	,	  // 29 - NOTE_E3
+17005538	,	  // 30 - NOTE_F3
+18017436	,	  // 31 - NOTE_FS3
+19088744	,	  // 32 - NOTE_G3
+20223355	,	  // 33 - NOTE_GS3
+21426141	,	  // 34 - NOTE_A3
+22700022	,	  // 35 - NOTE_AS3
+24049869	,	  // 36 - NOTE_B3
+25480551	,	  // 37 - NOTE_C4
+26994989	,	  // 38 - NOTE_CS4
+28600002	,	  // 39 - NOTE_D4
+30301433	,	  // 40 - NOTE_DS4
+32103176	,	  // 41 - NOTE_E4
+34012051	,	  // 42 - NOTE_F4
+36033899	,	  // 43 - NOTE_FS4
+38177487	,	  // 44 - NOTE_G4
+40446710	,	  // 45 - NOTE_GS4
+42852281	,	  // 46 - NOTE_A4 // 440Hz
+45400044	,	  // 47 - NOTE_AS4
+48099738	,	  // 48 - NOTE_B4
+50960128	,	  // 49 - NOTE_C5
+53990953	,	  // 50 - NOTE_CS5
+57200978	,	  // 51 - NOTE_D5
+60601891	,	  // 52 - NOTE_DS5
+64205378	,	  // 53 - NOTE_E5
+68024101	,	  // 54 - NOTE_F5
+72068772	,	  // 55 - NOTE_FS5
+76354000	,	  // 56 - NOTE_G5
+80894394	,	  // 57 - NOTE_GS5
+85704563	,	  // 58 - NOTE_A5
+90801063	,	  // 59 - NOTE_AS5
+96200450	,	  // 60 - NOTE_B5
+101920256	,	  // 61 - NOTE_C6
+107980932	,	  // 62 - NOTE_CS6
+114401957	,	  // 63 - NOTE_D6
+121204756	,	  // 64 - NOTE_DS6
+128411731	,	  // 65 - NOTE_E6
+136047228	,	  // 66 - NOTE_F6
+144137544	,	  // 67 - NOTE_FS6
+152708000	,	  // 68 - NOTE_G6
+161788788	,	  // 69 - NOTE_GS6
+171409126	,	  // 70 - NOTE_A6
+181602125	,	  // 71 - NOTE_AS6
+192399926	,	  // 72 - NOTE_B6
+203840511	,	  // 73 - NOTE_C7
+215961863	,	  // 74 - NOTE_CS7
+228803913	,	  // 75 - NOTE_D7
+242409512	,	  // 76 - NOTE_DS7
+256823462	,	  // 77 - NOTE_E7
+272095430	,	  // 78 - NOTE_F7
+288275088	,	  // 79 - NOTE_FS7
+305416001	,	  // 80 - NOTE_G7
+323577577	,	  // 81 - NOTE_GS7
+342818251	,	  // 82 - NOTE_A7
+363203276	,	  // 83 - NOTE_AS7
+384800826	,	  // 84 - NOTE_B7
+407681997	,	  // 85 - NOTE_C8
+431923727	,	  // 86 - NOTE_CS8
+457606852	,	  // 87 - NOTE_D8
+484818051	,	  // 88 - NOTE_DS8
+};
+
+
+
+#endif
+
+/** NOTE TO TEXT TABLES **/
+
+const char note_0[] PROGMEM = "B-0";  // 0 - NOTE_B0
+const char note_1[] PROGMEM = "C-1";  // 1 - NOTE_C1
+const char note_2[] PROGMEM = "C#1";  // 2 - NOTE_CS1
+const char note_3[] PROGMEM = "D-1";  // 3 - NOTE_D1
+const char note_4[] PROGMEM = "D#1";  // 4 - NOTE_DS1
+const char note_5[] PROGMEM = "E-1";  // 5 - NOTE_E1
+const char note_6[] PROGMEM = "F-1";  // 6 - NOTE_F1
+const char note_7[] PROGMEM = "F#1";  // 7 - NOTE_FS1
+const char note_8[] PROGMEM = "G-1";  // 8 - NOTE_G1
+const char note_9[] PROGMEM = "G#1";  // 9 - NOTE_GS1
+const char note_10[] PROGMEM = "A-1";  // 10 - NOTE_A1
+const char note_11[] PROGMEM = "A#1";  // 11 - NOTE_AS1
+const char note_12[] PROGMEM = "B-1";  // 12 - NOTE_B1
+const char note_13[] PROGMEM = "C-2";  // 2 - NOTE_C2
+const char note_14[] PROGMEM = "C#2";  // 2 - NOTE_CS2
+const char note_15[] PROGMEM = "D-2";  // 3 - NOTE_D2
+const char note_16[] PROGMEM = "D#2";  // 4 - NOTE_DS2
+const char note_17[] PROGMEM = "E-2";  // 5 - NOTE_E2
+const char note_18[] PROGMEM = "F-2";  // 6 - NOTE_F2
+const char note_19[] PROGMEM = "F#2";  // 7 - NOTE_FS2
+const char note_20[] PROGMEM = "G-2";  // 8 - NOTE_G2
+const char note_21[] PROGMEM = "G#2";  // 9 - NOTE_GS2
+const char note_22[] PROGMEM = "A-2";  // 20 - NOTE_A2
+const char note_23[] PROGMEM = "A#2";  // 22 - NOTE_AS2
+const char note_24[] PROGMEM = "B-2";  // 22 - NOTE_B2
+const char note_25[] PROGMEM = "C-3";  // 3 - NOTE_C3
+const char note_26[] PROGMEM = "C#3";  // 3 - NOTE_CS3
+const char note_27[] PROGMEM = "D-3";  // 3 - NOTE_D3
+const char note_28[] PROGMEM = "D#3";  // 4 - NOTE_DS3
+const char note_29[] PROGMEM = "E-3";  // 5 - NOTE_E3
+const char note_30[] PROGMEM = "F-3";  // 6 - NOTE_F3
+const char note_31[] PROGMEM = "F#3";  // 7 - NOTE_FS3
+const char note_32[] PROGMEM = "G-3";  // 8 - NOTE_G3
+const char note_33[] PROGMEM = "G#3";  // 9 - NOTE_GS3
+const char note_34[] PROGMEM = "A-3";  // 30 - NOTE_A3
+const char note_35[] PROGMEM = "A#3";  // 33 - NOTE_AS3
+const char note_36[] PROGMEM = "B-3";  // 33 - NOTE_B3
+const char note_37[] PROGMEM = "C-4";  // 4 - NOTE_C4
+const char note_38[] PROGMEM = "C#4";  // 4 - NOTE_CS4
+const char note_39[] PROGMEM = "D-4";  // 3 - NOTE_D4
+const char note_40[] PROGMEM = "D#4";  // 4 - NOTE_DS4
+const char note_41[] PROGMEM = "E-4";  // 5 - NOTE_E4
+const char note_42[] PROGMEM = "F-4";  // 6 - NOTE_F4
+const char note_43[] PROGMEM = "F#4";  // 7 - NOTE_FS4
+const char note_44[] PROGMEM = "G-4";  // 8 - NOTE_G4
+const char note_45[] PROGMEM = "G#4";  // 9 - NOTE_GS4
+const char note_46[] PROGMEM = "A-4";  // 40 - NOTE_A4
+const char note_47[] PROGMEM = "A#4";  // 44 - NOTE_AS4
+const char note_48[] PROGMEM = "B-4";  // 44 - NOTE_B4
+const char note_49[] PROGMEM = "C-5";  // 5 - NOTE_C5
+const char note_50[] PROGMEM = "C#5";  // 5 - NOTE_CS5
+const char note_51[] PROGMEM = "D-5";  // 3 - NOTE_D5
+const char note_52[] PROGMEM = "D#5";  // 4 - NOTE_DS5
+const char note_53[] PROGMEM = "E-5";  // 5 - NOTE_E5
+const char note_54[] PROGMEM = "F-5";  // 6 - NOTE_F5
+const char note_55[] PROGMEM = "F#5";  // 7 - NOTE_FS5
+const char note_56[] PROGMEM = "G-5";  // 8 - NOTE_G5
+const char note_57[] PROGMEM = "G#5";  // 9 - NOTE_GS5
+const char note_58[] PROGMEM = "A-5";  // 50 - NOTE_A5
+const char note_59[] PROGMEM = "A#5";  // 55 - NOTE_AS5
+const char note_60[] PROGMEM = "B-5";  // 55 - NOTE_B5
+const char note_61[] PROGMEM = "C-6";  // 6 - NOTE_C6
+const char note_62[] PROGMEM = "C#6";  // 6 - NOTE_CS6
+const char note_63[] PROGMEM = "D-6";  // 3 - NOTE_D6
+const char note_64[] PROGMEM = "D#6";  // 4 - NOTE_DS6
+const char note_65[] PROGMEM = "E-6";  // 5 - NOTE_E6
+const char note_66[] PROGMEM = "F-6";  // 6 - NOTE_F6
+const char note_67[] PROGMEM = "F#6";  // 7 - NOTE_FS6
+const char note_68[] PROGMEM = "G-6";  // 8 - NOTE_G6
+const char note_69[] PROGMEM = "G#6";  // 9 - NOTE_GS6
+const char note_70[] PROGMEM = "A-6";  // 60 - NOTE_A6
+const char note_71[] PROGMEM = "A#6";  // 66 - NOTE_AS6
+const char note_72[] PROGMEM = "B-6";  // 66 - NOTE_B6
+const char note_73[] PROGMEM = "C-7";  // 7 - NOTE_C7
+const char note_74[] PROGMEM = "C#7";  // 7 - NOTE_CS7
+const char note_75[] PROGMEM = "D-7";  // 3 - NOTE_D7
+const char note_76[] PROGMEM = "D#7";  // 4 - NOTE_DS7
+const char note_77[] PROGMEM = "E-7";  // 5 - NOTE_E7
+const char note_78[] PROGMEM = "F-7";  // 6 - NOTE_F7
+const char note_79[] PROGMEM = "F#7";  // 7 - NOTE_FS7
+const char note_80[] PROGMEM = "G-7";  // 8 - NOTE_G7
+const char note_81[] PROGMEM = "G#7";  // 9 - NOTE_GS7
+const char note_82[] PROGMEM = "A-7";  // 70 - NOTE_A7
+const char note_83[] PROGMEM = "A#7";  // 77 - NOTE_AS7
+const char note_84[] PROGMEM = "B-7";  // 77 - NOTE_B7
+const char note_85[] PROGMEM = "C-8";  // 8 - NOTE_C8
+const char note_86[] PROGMEM = "C#8";  // 8 - NOTE_CS8
+const char note_87[] PROGMEM = "D-8";  // 3 - NOTE_D8
+const char note_88[] PROGMEM = "D#8";  // 4 - NOTE_DS8
+
+const char* note_table[] PROGMEM = {
+ note_0,
+ note_1,
+ note_2,
+ note_3,
+ note_4,
+ note_5,
+ note_6,
+ note_7,
+ note_8,
+ note_9,
+ note_10,
+ note_11,
+ note_12,
+ note_13,
+ note_14,
+ note_15,
+ note_16,
+ note_17,
+ note_18,
+ note_19,
+ note_20,
+ note_21,
+ note_22,
+ note_23,
+ note_24,
+ note_25,
+ note_26,
+ note_27,
+ note_28,
+ note_29,
+ note_30,
+ note_31,
+ note_32,
+ note_33,
+ note_34,
+ note_35,
+ note_36,
+ note_37,
+ note_38,
+ note_39,
+ note_40,
+ note_41,
+ note_42,
+ note_43,
+ note_44,
+ note_45,
+ note_46,
+ note_47,
+ note_48,
+ note_49,
+ note_50,
+ note_51,
+ note_52,
+ note_53,
+ note_54,
+ note_55,
+ note_56,
+ note_57,
+ note_58,
+ note_59,
+ note_60,
+ note_61,
+ note_62,
+ note_63,
+ note_64,
+ note_65,
+ note_66,
+ note_67,
+ note_68,
+ note_69,
+ note_70,
+ note_71,
+ note_72,
+ note_73,
+ note_74,
+ note_75,
+ note_76,
+ note_77,
+ note_78,
+ note_79,
+ note_80,
+ note_81,
+ note_82,
+ note_83,
+ note_84,
+ note_85,
+ note_86,
+ note_87,
+ note_88,
+};
+
+void getNoteString(char * buffer, uint8_t i) {
+    if (i>88) strcpy(buffer,"@@@");
+    else strcpy(buffer, note_table[i]);
+}
+
+