Algoritmo de detección de Pitch de Arduino (usando AMDF) (1 / 8 paso)

Paso 1: El algoritmo

Crédito:

No sé quién inventó el algoritmo, pero de lo que google me dice que un estadístico británico por el nombre de George Udny Yule había publicado un documento de finales del siglo XIX en referencia al algoritmo de autocorrelación parcial. Además hay un montón de artículos publicados por el IEEE a partir de las mejoras citando de principios del siglo XX el método para utilizan en la electrónica.

AMDF - aquí está el flaco:

AMDF (N) = 1/N * Sum (i = 0 -> N) de (| x(i) - x(i+N) |)

AMDF (función de diferencia de la magnitud de autocorrelación) es básicamente líneas superpuestas de seguimiento en una determinada ventana de muestras. Esto es básicamente lo que ocurre:

1.) los datos se reúnen para formar una ventana de N * 2 muestras por todo.

2.) corte la ventana en la mitad.

3.) la primera mitad sobre la parte superior de la segunda mitad del recubrimiento.

4.) toma el valor absoluto de la diferencia en el área entre las dos formas de onda y resumirlo.

5.) dividir la suma por el número de muestras.

6.) Repita los pasos 2 a 6 para un barrido completo de todos los retrasos N que va a ocurrir o estar presente en una forma de onda.

7.) si existe un tono cuasi-armónico, la AMDF salida un número bajo en o cerca de 0 en alguna demora N.

8.) dividir la frecuencia de muestreo por su demora N y usted tiene la frecuencia más probable de la cuasi-armónico del tono.

Un grande sin embargo! La AMDF no funciona en más de un tono a la vez. Usted no será capaz de diferenciar entre paradas dobles, múltiples notas rasgueados, etc..

Otros algoritmos:

En cuanto a mi investigación me ha llevado, hay un par de otros pitch algoritmos de detección por ahí. Obviamente más, pero no busco demasiado extensamente. No cubrirlas pero les mencionaré Escuchar para su investigación adicional si lo desea.

Por supuesto, el original método de autocorrelación es ahi la base de la AMDF. La ventaja de la AMDF sobre autocorrelación básica es que la AMDF tiene un montón de sustracciones y adiciones con una división (que puede ser codificada en una multiplicación). Para el Arduino Uno que es arquitectura de 8 bits nativos y no tiene hardware división o multiplicación, esto es una más absoluta.

Otro algoritmo de detección de pitch es el algoritmo de Yin. Este algoritmo cuenta con un muy bajo porcentaje de error con cada paso del algoritmo detallando su efectividad por lo que se puede implementar tanto o tan poco como usted desea. De testimonios que he leído no es muy de cómputo intensiva que es grande! Así que sí... Por qué no consiguió porque el algoritmo de Yin al parecer tiene una patente sobre su uso. Además, si usted busca alrededor, alguien ha ya compilado el código fuente para usted en C por lo que puede jugar con él. Hay un artículo publicado en el algoritmo de Yin, cosas muy interesantes.

Aquí está el código fuente de Yin, si quieres echar un vistazo!: http://mroy.chez-alice.fr/yin/index.html

Aquí está el artículo publicado en el algoritmo: http://recherche.ircam.fr/equipes/pcm/cheveign/pss/2002_JASA_YIN.pdf

Artículos Relacionados

Control de Arduino usando app android

Control de Arduino usando app android

En este instructables voy a explicar cómo controlar los pernos del IO de arduino usando una aplicación para android, que voy a escribir aquí.La comunicación será a través de ethernet y usaremos la solicitud GET para activar el IO.Vamos a empezar!Paso
Termómetro de Arduino usando el Sensor de temperatura LM35

Termómetro de Arduino usando el Sensor de temperatura LM35

Termómetro de Arduino usando el Sensor de temperatura LM35 es una muy simple de implementar Arduino basado en proyecto. Su inició un proyecto perfecto si usted es un principiante y acaba prácticamente pruebas proyectos de Arduino.En este proyecto nos
Como leer una tarjeta de arduino usando LabVIEW

Como leer una tarjeta de arduino usando LabVIEW

Este video muestra como leer una tarjeta de Arduino usando LabVIEW. LabVIEW tiene una gran interfaz que hace fácil guardar los datos de una tarjeta de Arduino. Uno de los mayores desafíos cuando se utiliza una tarjeta de Arduino que es endiabladament
Frente a la detección y seguimiento con Arduino y OpenCV

Frente a la detección y seguimiento con Arduino y OpenCV

versiones20 de febrero de 2013: En respuesta a una pregunta de estudiante Hala Abuhasna si desea utilizar la clase Serial. net, utilice la Convención de nomenclatura "\\\.\\COMn" y reemplazar n por un número > 9 para definir el puerto com par
Proyecto simple de detección de movimiento de Arduino

Proyecto simple de detección de movimiento de Arduino

Este es un tutorial muy básico para principiantes de Arduino, hemos tratado de mantenerlo simple y al punto, uso de sensores de detección de movimiento PIR y cómo controlar el LED basados en el outpu del sensor.y así en pocas palabras, la idea princi
Luz detección de 433 MHz Arduino RF inteligente de persianas

Luz detección de 433 MHz Arduino RF inteligente de persianas

El objetivo de este proyecto era convertir normal 2" madera listón persianas persianas en"smart"persianas que abren automáticamente durante el día y cierran por la noche. Hay dos botones que permiten que las persianas que temporalmente abri
Reloj binario de Arduino usando LED Matrix

Reloj binario de Arduino usando LED Matrix

Este sitio tiene muchos puestos finas que describe la construcción de los relojes binarios. Soy tremendamente inestable, sin embargo y tienen dificultad para cualquier soldadura. Por lo tanto quería hacer mío de una matriz de 8 x 8 LED MAX7219-contro
Reloj de Arduino usando reloj estándar

Reloj de Arduino usando reloj estándar

es un reloj relativamente simple de construir, el hardware necesario y conectar todos los cables. La complejidad reside en el software, que convenientemente he incluido como parte de este instructable :)Este instructable muestra un par de cosas:* Man
Haga un preciso reloj de Arduino usando solamente un alambre - sin hardware externo es necesario!

Haga un preciso reloj de Arduino usando solamente un alambre - sin hardware externo es necesario!

Cómo hacer un reloj de Arduino - sin usar osciladores externos o fichas del reloj:(más de mis proyectos en nuestro sitio web de investigación - haga clic en la parte superior logo de arduino de la página de inicio)Se necesita:Una placa Arduino (cualq
Coche sencillo arduino usando el módulo Bluetooth HC-06

Coche sencillo arduino usando el módulo Bluetooth HC-06

La forma más sencilla de construir un coche de Arduino y controlarlo con tu dispositivo android.Paso 1: Cosas necesarias: Ordenador portátil con el software de Arduino.Cualquier Arduino. (Estoy usando a Leonardo).Dos motores de CC con llantas conecta
Xbox de mod controlador del 360 Arduino usando (MW3)

Xbox de mod controlador del 360 Arduino usando (MW3)

no quiero comprar un chip de controlador de modded por dos razones uno sólo hacen una cosa y dos que se convierten hacia fuera rápidamente, haciéndolos inútiles para nuevos juegos de la fecha. Así que el arduino que solo recogí parecía perfecto, es p
Controlar una placa de Arduino usando un Control remoto infrarrojo

Controlar una placa de Arduino usando un Control remoto infrarrojo

-IntroducciónHola a todos, mi nombre es Noreddine Kessa, soy un entusiasta de la electrónica.  Me divertí mucho este fin de semana jugando con mi juguete nuevo, Kit Arduino ATmega328 DIY que he conseguido en eBay, y me encantaria compartir la alegría
Simplificado de medición de corriente CA Arduino usando el Sensor de efecto Hall ACS712

Simplificado de medición de corriente CA Arduino usando el Sensor de efecto Hall ACS712

Este es un simplificado enfoque mi Instructable previo con respecto a la corriente con el sensor de corriente ACS712 medición AC... enlaceSimplificaciones son:Eliminando el especial circuito de acondicionamiento de señal - en lugar de ello vamos a ut
Cómo programar Arduino usando Vexplorer

Cómo programar Arduino usando Vexplorer

este instructable será sobre el uso de arduino para controlar la vexplorer revell. Más adelante se pueden añadir tantos sensores que desee. Si no tienes la mayoría de las piezas ya esto le costará unos 200 dólares. Mayoría de los bits electrónicos qu