Algoritmo de detección de tempo 
Hace un tiempo encontré en el siguiente enlace un interesantísimo artículo explicando las diferentes técnicas que existen para la detección de BPM (tempo) sobre pistas de audio.

http://www.flipcode.com/misc/BeatDetect ... rithms.pdf

En particular me llamó la atención la técnica basada en el cálculo de la correlación de la señal con un tren de pulsos. En la sección soft puede descargarse una implementación sencilla en C de este algoritmo. Da muy buenos resultados con música pop, rock y electrónica. No he probado el código con otros estilos musicales.

Código fuente aquí.

[ añadir comentario ] ( 1147 visualizaciones )   |  [ 0 trackbacks ]   |  enlace permanente
  |    |    |    |   ( 3 / 1812 )
Detección de pitch con HPS 
El algoritmo HPS (Harmonic Product Spectrum) permite detectar la frecuencia fundamental (la altura) de una nota tocada por cualquier tipo de instrumento armónico.

Asume que el espectro generado por el instrumento está formado por frecuencias múltiplas enteras de la frecuencia fundamental, lo cual es cierto en el 99% de los instrumentos musicales convencionales, incluyendo la voz.

En la sección soft he colgado una sencilla implementación en C de este algoritmo y la he acompañado de dos ejemplos de tonos generados por un saxo. Uno de los ejemplos es una nota LA que el algoritmo detecta de 440.0848 Hz (440 Hz es la frecuencia de la nota LA en la 4ª octava) y el otro es de una nota RE que el algoritmo detecta de 293.3899 Hz (293.665 Hz es la frecuencia de la nota RE en la 4ª octava).

Más info sobre el HPS y otros algoritmos de detección de pitch en http://cnx.org/content/m11714/latest/.

EDITADO: He corregido un bug en el código que provocaba que la detección estuviera desplazada una octava.

Sección soft.

[ añadir comentario ] ( 1162 visualizaciones )   |  [ 0 trackbacks ]   |  enlace permanente
  |    |    |    |   ( 3 / 3433 )
Nueva versión de Sonority 
Sonority es un motor de síntesis de sonido mediante modelado analógico implementado en ANSI C que utiliza exclusivamente aritmética de punto fijo (formato Q16.16, 16 bits de parte entera y 16 bits de parte fraccionaria, 32 bits en total).

En esta nueva versión se han añadido dos modos de portamento (ALWAYS y LEGATTO), dos modos de disparo de envolvente (ALWAYS y STACATTO) y tablas precalculadas (tanto la tabla de frecuencias como las tablas de ondas).

El fichero test.c contiene un ejemplo de utilización del motor.

+info y descargas aquí.

[ añadir comentario ] ( 1356 visualizaciones )   |  [ 0 trackbacks ]   |  enlace permanente
  |    |    |    |   ( 3 / 2332 )
FHT 
He encontrado un artículo muy interesante que habla sobre la FHT (Fast Hartley Transform), para los neófitos como yo: algo así como la FFT pero con números reales :-).

http://www.embedded.com/2000/0009/0009feat3.htm

El artículo incluye una implementación en C para los que tienen prisa ;-).

Saludos y feliz Navidad a todos.

[ añadir comentario ] ( 1129 visualizaciones )   |  [ 0 trackbacks ]   |  enlace permanente
  |    |    |    |   ( 3 / 2304 )
Motor de síntesis por modelado analógico 
En la sección soft he puesto sonority-0.1.tar.gz. Un pequeño motor de síntesis por modelado analógico que he hecho, con las siguientes características:

- Dos osciladores por voz (uno de ellos puede modular en AM a otro).
- Un suboscilador por voz.
- Un generador de ruido.
- Dos filtros de estado variable por cada voz, con enrutado configurable.
- Dos envolventes ADSR y dos LFO por voz.
- Una enorme matriz de modulación.
- Aritmética de punto fijo de 32 bits.
- Totalmente ANSI C.

Todo el código es GPL. Para más info pasarse por la sección soft.

[ añadir comentario ] ( 1109 visualizaciones )   |  [ 0 trackbacks ]   |  enlace permanente
  |    |    |    |   ( 3 / 2827 )

<< <Anterior | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Siguiente> >>