Arduino Pitch upptäckt algoritm (med AMDF) (5 / 8 steg)
Steg 5: Kod, produktionen och hastighet
När jag bygger min styrenhet där koden är avsedd att genomföras jag kommer lägga upp fler bilder, men här är koden. Det är ganska väl dokumenterat och kommenterade så jag sparred alla kommentera på den här sidan.
Koden sprang på en atmeag328P tar 52ms att slutföra varje cykel som analyserar för frekvenser 196hz till 3136hz (frekvensen spänner av en fiol). Märke att justera spänna av förseningar att testa för hög grad kommer att påverka din hastighet!
Uppdatering 21 juli 2015: baserat på mina behov, jag verkligen brydde mig om de högre frekvenserna över 3000 hz fick alias eftersom mina behov baserades på violin grunderna varierade från 196 hz till 3136 hz. Således minskar ADC prov frekvens till 19,2 khz ger processorn mer tid att bearbeta de tillgängliga uppgifterna. Användning av en 64 skalär resulterade i en 17ms genomförandetid, men minskas den 3136hz till endast 12 prover för amdf. Går långsammare skulle sannolikt förbättra hastigheten ytterligare, men högre frekvens upplösning är förlorad. Koden återspeglar inte denna förändring.
Du kan anpassa det om du vill använda heltal för högre precision.
Du måste förmodligen ersätta koden för att visa för en seriell kommando eller nåt sånt.