Arduino Pitch upptäckt algoritm (med AMDF) (1 / 8 steg)

Steg 1: Algoritmen



Credit:

Jag vet inte vem som uppfann algoritmen, men från vad google säger mig en brittisk statistiker av känt av George Udny Yule hade publicerat ett papper i sena 1800-talet med hänvisning till partiell autokorrelation algoritm. Dessutom där ett gäng publicerats av IEEE start i de tidiga 1900-tal med hänvisning till förbättringarna för bruk i elektronik.

AMDF - här är mager:

AMDF (N) = 1/N * summan (jag = 0 -> Nilsson) av (| x(i) - x(i+N) |)

AMDF (autokorrelation magnitud skillnaden funktion) är i grunden spårning överlappande linjer på ett visst fönster av prover. Här är vad som egentligen händer:

1.) samla data att bilda ett fönster av N * 2 prover wide.

2.) snitt fönstret i hälften.

3.) overlay första halvan över toppen av den andra halvan.

4.) ta det absoluta värdet av skillnaden i området mellan de två vågformerna och summera.

5.) dividera summan med antalet prover.

6.) upprepa steg 2 till och med 6 för en full svep av alla förseningar N som du förväntar dig att uppstå eller finnas i en vågform.

7.) om en kvasi harmonisk ton är närvarande, kommer AMDF utgång ett lågt nummer på eller nära 0 på viss försening N.

8.) klyfta prov frekvens av din försening N, och du har den mest troliga frekvensen av kvasi harmoniska tonen.

Ett stort notera dock! AMDF fungerar inte på mer än en ton i taget. Du kommer inte att kunna skilja mellan dubbla hållplatser, flera strummed anteckningar, etc.

Andra algoritmer:

Enligt min forskning har tagit mig, finns det ett par andra pitch upptäckt algoritmer där ute. Givetvis mer, men jag inte söka alltför stor utsträckning. Jag kommer inte att täcka dem men jag kommer att nämna dem höra för ytterligare forskning om du så önskar.

Naturligtvis, är den ursprungliga autokorrelation metoden ute som är grunden för AMDF. Fördelen med AMDF jämfört med grundläggande autokorrelation är att AMDF har en massa subtraktioner och tillägg med en division (som kan kodas in i en multiplikation). För Arduino Uno som infödda 8 bitars arkitekturen och inte har maskinvara division och multiplikation, är detta ett absolut plus.

En annan pitch upptäckt algoritm är Yin algoritmen. Denna algoritm har en mycket liten andel felfrekvens med varje steg i algoritmen beskriver dess effektivitet så att du kan implementera så mycket eller så lite du vill. Från omdömen läst jag om det inte är mycket arbetsintensivt vilket är bra! Så ja... Varför jag inte fick det finns eftersom Yin algoritmen har tydligen ett patent för dess användning. Dessutom, om du söker runt, har någon redan sammanställt källkoden för dig i C så att du kan leka med den. Det finns en publicerad papper på Yin algoritmen också, mycket intressanta saker.

Här är källkoden Yin, om du vill ta en titt!: http://mroy.chez-alice.fr/yin/index.html

Här är publicerade tidningen på algoritmen: http://recherche.ircam.fr/equipes/pcm/cheveign/pss/2002_JASA_YIN.pdf

Se Steg
Relaterade Ämnen

Sund upptäckt RGB lampa genom att använda Arduino

HejTill att börja med är detta projekt inte klar ännu!I detta projekt gör jag en lampa med flera färger med hjälp av RGB lysdioder. Min idé är att försöka låta lampan ändra färg om den upptäcker ett ljud i området. Om du blir irriterad från de skifta...

2Way kollision upptäckt med en enda potentiometer

Enkla och billiga 2 sätt kollision upptäckt med en enda potentiometer.-Hur jag gjorde:Skev en zip slips runt axeln och potentiometer och fast i andra änden från zip slips runt hörnet utanför från roboten.Medan start läsa analog ingång för att hitta d...

Upptäcka cirklar med OpenCV och Python

Inspiration:-Idén till detta kom när jag mixtra med OpenCV och det är olika funktioner. Sedan frågade en vän att hjälpa honom att utveckla en algoritm som kan upptäcka en cirkel från en FPV kamera monterad på ett RC plan och justera justering av plan...

Billiga smarta RFID-paket för fukt upptäckt

Detta är helt en ordrik Instructables jag ber om ursäkt, men dess sådan ett enkelt koncept jag bara verkligen ville dela det med er, jag hoppas du njuter!Syftet med detta projekt utforma ett billigt sensor paket som kan användas för att upptäcka före...

C# kant upptäckt

Detta projekt är ett enkelt exempel på kant upptäckt. Denna app tar en bild, finner i kanterna och Använd filter och styrkan av dessa filter, ersätter alla färger med en sedan spottar ut koordinaterna för edge.Jag vet det finns apps och bibliotek att...

Baby buller upptäckt

detta är ett projekt jag gjort som slutgiltigt för en av mina klasser i universitetet.Tittar på instructables jag såg ett projekt som får mig att tänka i en eventuell anordning att bygga:"Hur man handskas med bullriga grannar"Här enheten upptäck...

Arduino trådlös programmering med XBee serie 1 eller 2

Hej. Detta Instructable kommer att guida dig genom processen att trådlöst programmering din Arduino använder två XBees. Jag har precis avslutat utforma en EEGEN radiosystemet med XBee moduler, så jag har blivit ganska flytande i programplaneringen oc...

GrayBOX - olycka upptäckt och Stöld Säkringen System

GrayBOX är en anordning som skyddar dig och ditt fordon *.Enheten kommer att monteras på ditt fordon * som kommer att utföra vissa uppgifter automatiskt för att spara dig och ditt fordon *.GrayBOX innehåller ett SIM-kort så att du kan kommunicera med...

Arduino hög hastighet oscilloskop med PC-gränssnitt

Använd din Arduino och PC som en Snabb lagring oscilloskop.Arduinoen kan på ett tillförlitligt sätt samla spänning avläsningar med en frekvens mellan 141 och 153 KiloHertz.1000 data avläsningar kan tas i runt 6.8ms.Överfört kapitalinlösenfond till en...

Barcode upptäckt

streckkod detektorer används över hela världen.Det finns en mycket enkel arbetande principen bakom denna teknik.Det är bara tekniken för 1: or och 0: or.i detta en laser (främst med hjälp av streckkoden upptäckt guns, en perfekt transceiver) att fall...

Hud Cancer upptäckt

VARNING! Jag ska beskriva uppbyggnaden av enheten är inte av medicinsk kvalitet inte heller bör det användas för att göra absolut bestämning av några som helst villkor. Utbildad användning för att upptäcka, och vad man faktiskt undersöker är också nö...

STM32F4 upptäckt part2 - ADC diagram

Hej!I denna del vill jag presentera med ADC med stm32 Discovery styrelsen med LCD.Hur man startar med stm32f4 upptäckt kan du se i del 1:Steg 1: ADCADC genomförandet är mycket enkel med HAL kub (som nämns i del 1).Jag använder 12 - bitars ADC modulAD...

Minecraft hemliga ingångar: Minecart upptäckt

det är den största munsbit som jag någonsin har skrivit för en titel. För alla de människor som har blivit alltför besatt av Minecraft, är detta ett fiffiga sätt att dölja alla dina varor. Detta är en ganska komplex mekanism, men det är effektivt--in...

Industriella IoT program - hur du använder sensorer för förvaltning av vattenresurser, översvämningar varningar och vatten upptäckt

** Uppdatering: Artikeln nedan är från vår äldre Android app! Valarm är industriella IoT. Vi hjälper dig, ditt team och din verksamhet med industriella IoT applikationer med hjälp av Valarm verktyg moln.Ta en titt på våra vatten + vätskor övervakning...

IPhone apidictor för acoustal beehive swarm upptäckt

jag har alltid varit fascinerad av kolonin insekter... behov av bra citat här...Jag kom över en artikel om Eddie Woods och hans akustiska svärm upptäckt maskin, Apidictor. Det finns massor av bikupor i mitt samhälle och jag ville engagera sig så jag...

Arduino Bluetooth Garage dörrkontroll med sensorer och anpassningsbara Android App

Använda en arduino till aktivera reläer för att öppna garageportar och elektriska dörrlås.En anpassningsbar Android App, ansluter till arduino via lösenordsskyddade bluetooth-ihopparningen.En bluetooth hc-05 modul tar emot kommandon från en android-t...

Arduino själv balans registeransvarige med DIGITAL IMU, äntligen!

Vad är det?DIY Segway/balans styrenhet med modern DIGITAL IMU sensor.Programvara för en Arduino som gör det möjligt att läsa positionsdata från en av de nya DIGITAL accelerometer/gyroskop enheterna, bearbetar data med hjälp av Kalman filtrering (rikt...

Arduino ultraljud avståndsmätare med I²C lcd uppvisning!

Heji detta projekt vill jag Visa och förklara du en rad sensor med ultraljud och en 20 x 04 LCD-skärm. Jag skrev koden för detta projekt själv och lade till massor av kommentarer, så att alla kan förstå det och använda det för andra projekt (kanske e...

Arduino OLED termometer och Hygrometer med DHT11 för nybörjare

Hej! Jag ska visa dig hur man gör en Arduino OLED termometer och hygrometer * med DHT11.OLED vi använder idag är 1.3″ tum i storlek, funktioner 128 × 64 pixlar och använder SPI bussen. På nästa steg hittar du mer nyttig information om OLED tech och d...