domingo, 25 de abril de 2010

Cálculo de Coeficientes de Filtros FIR usando ventanas

Para empezar tomando como fuente el libro:
Digital Signal Processing A Practical Approach Second Edition
Autores: Emmanuel C. Ifeachor y Barrie W. Jervis
Editorial Prentice Hall
Redacté la entrada en Wikipedia:
http://es.wikipedia.org/wiki/Diseño_de_Filtros_de_Respuesta_Finita_al_Impulso
Con el fin de que estos cálculos sean más fáciles de comprender en el sentido de su obtención manual, hice los dibujos de los cuatro filtros típicos, pasabajo, pasaalto, pasabanda y parabanda; tanto ideales, como los que usan la banda de transición.

Muchos de los documentos que se hayan en internet hacen una explicación unas veces breve otras veces profunda, pero terminan demostrando toda la teoría con matlab o labView y la aprehensión de la teoría se queda allí en una simple función de esos paquetes.

Esta entrada detalla unos ejemplos de cálculo de esa entrada en Wikipedia.

jueves, 22 de abril de 2010

Sonido Audio Midi Java

Sonido (Sound) Audio Midi Java
Por ahora voy a colocar unos conceptos o ideas que se deben tener claros, y por ser yo olvidadiso mejor los pongo aca para no olvidarlos y no tratar de redefinir los mismos.
Si quieres una mejor definición de conceptos, bien pueda haga uso de Wikipedia.

Concepto de Frecuencia

Concepto de Ciclo

Concepto de Notas y Escala musical
En música se conocen las notas básicas (7) y sus respectivos semitonos (5).
Las notas según sistema de notación musical latino son:
DO (C), RE (D), MI (E), FA (F), SOL (G), LA (A), SI (B)
entre paréntesis sistema de notación musical inglés.

Semitonos
Los semitonos son modificaciones de la nota subiendo o bajando según sea la necesidad indicado de dos maneras así:
Sostenido ♯
: Aumenta
Bemol ♭: Disminuye un semitono

DO/RE♭ (C/D) , RE/MI♭ (D/E), FA/SOL♭ (F/G), SOL/LA♭ (G/A), LA/SI (A/B).

Octava.
Una octava incluye las notas y los semitonos en el siquiente orden:
DO (C), DO/RE♭ (C/D), RE (D), RE/MI♭ (D/E), MI (E), FA (F), FA/SOL♭ (F/G), SOL (G), SOL/LA♭ (G/A), LA (A), LA/SI(A/B), SI (B).




Relación de Octavas
Una octava tiene doce sonidos, que son siete notas y cinco semitonos.
Un teclado puede tener diferente número de octavas, a la octava central se le asigna el número 4 en ella se encuentra la nota central principal que corresponde al DO4 (C4) y la nota de referencia LA4 (A4) cuya frecuencia es de 440Hz.




Cada nota de una octava tiene el doble de frecuencia de la misma nota de la octava anterior y la mitad de la frecuencia de la misma nota de la octava superior. Esto es, teniendo en cuenta la imagen anterior:
LA4 (A4) de Frecuencia 440Hz
LA3 (A3) de Frecuencia 220Hz
LA5 (A5) de Frecuencia 880Hz.

De igual forma se da la misma relación de frecuencias entre las notas de octavas consecutivas.

¿QUE TIENE MIDI?
MIDI no hace diferencias de notas , semitonos y octavas, sino que define un conjunto de 128 sonidos (0 - 127) y que guardan relación al sistema descrito antes.
En la misma imagen detallada anteriormente a la nota DO4 (C4) Midi le asigna la nota número 60 y a la nota LA4 (A4) Midi le asigna la nota número 69.
Es decir que la nota 45 según Midi corresponde a LA2 (A2) y la nota 93 según Midi corresponde a LA6 (A6) .

¿LA FRECUENCIA DE LAS DEMÁS NOTAS?
Según Midi olvidémonos de las diferencias de las notas y de los semitonos, y trabajemos con frecuencias. Teniendo esto presente la relación entre una nota Midi y otra nota Midi consecutiva la relación de frecuencia siempre es la misma. Esta misma relación de frecuencia aplica a los doce sonidos incluidos en una octava.
Tal relación es:

El valor de la frecuencia de la nota siguiente Fs es igual a la frecuencia de la nota actual Fa multiplicada por dos elevado a un doceavo.
Fs = Fa * 2(1/12)
El valor de la frecuencia de la nota pasada Fp es igual a la frecuencia de la nota actual Fa dividida por dos elevado a un doceavo.
Fp = Fa / 2(1/12)
Es decir teniendo la nota 69 (Fa = 440Hz), se puede obtener las frecuencias Fs de la nota 70 y la frecuencia Fp de la nota 68.
F70 = F69 * 2(1/12) = 466,16376Hz.
F68 = F69 / 2(1/12) = 415,30470Hz.

Esto quiere decir que:
la frecuencia de la nota 70, LA4/SI4 (A4/B4) es 466,16376Hz,
la frecuencia de la nota 68, SOL4/LA4 (G4/A4) es 415,30470Hz.

Ahora se calcularan otras frecuencias así:
nota 56, SOL♯3/LA♭3 (G♯3/A♭3) -> 220Hz / 2(1/12) = 207,65235Hz
nota 58, LA♯3/SI♭3 (A♯3/B♭3) -> 220Hz * 2(1/12) = 233,08188Hz
nota 80, SOL♯5/LA♭5 (G♯5/A♭5) -> 880Hz / 2(1/12) = 830,60940Hz
nota 82, LA♯5/SI♭5 (A♯3/B♭3) -> 880Hz * 2(1/12) = 932,32752Hz

Tomando como base lo dicho antes acerca de la frecuencia de una nota con relación a la misma nota de una octava vecina, se puede comprobar los cálculos respectivos para dos octavas de diferencia, entonces ya no será el doble ni la mitad, sino el cuadruple y la cuarta parte de ellas.
Así:
207,65235Hz * 4 = 830,60940Hz
932,32752Hz / 4 = 233,08188Hz

Para hallar la frecuencia de cualquier nota se puede disponer de la siguiente fórmula:
Fn = Fr * 2(n/12)
n representa el número de teclas que existe entre la referencia y la buscada; n será negativa si está antes y será positiva si está después.
Fr es la frecuencia conocida que se tomará de referencia y Fn es la frecuencia que se hallará.

El siguiente ejemplo detalla el uso y confirma los enunciados anteriores.
Se calculará la frecuencia de la nota 60, DO4 (C4) :
Tomando como referencia la nota 57, LA3 (A3) por lo que se debe incrementar 3 notas.
Tomandocomo referencia la nota 81, LA5 (A5) por lo que se debe decrementar 21 notas.

Si se empieza con la nota 57, la frecuencia será 220Hz, entonces n = 3, así:
F60 = F57 * 2(3/12) = 220Hz * 2(3/12) = 261,62557Hz
Si se empieza con la nota 81, la frecuencia será 880Hz, entonces n = -21, así:
F60 = F81 * 2(-21/12) = 880Hz * 2(-21/12) = 261,62557Hz

Comprobándose de esta manera que se obtiene el mismo valor por ambos lados.

Ahora se calcularán la frecuencia mínima que corresponde a la nota 0 y máxima que corresponde a la nota 127 de los sistemas Midi tomando como base la frecuencia central que corresponde a la nota 60.

F0 = F60 * 2(-60/12) = 261,62557Hz * 2(-60/12) = 8,17580Hz
F127 = F60 * 2(67/12) = 261,62557Hz * 2(67/12) = 12543,85418Hz

Rango de Notas según Matiz Vocal




























































































NotaFrecuencia
B
a
j
o

B
a
r
i
t
o
n
o

T
e
n
o
r

C
o
n
t
r
a
l
t
o

M
e
z
z
o
s
o
p
r
a
n
o

S
o
p
r
a
n
o
4082,40689
X




4187,30706
X




4292,49861
X




4397,99886
X




44103,82617
X




45110,00000
XX



46116,54094
XX



47123,47083
XX



48130,81278
XXX


49138,59132
XXX


50146,83238
XXX


51155,56349
XXX


52164,81378
XXX


53174,61412
XXXX

54184,99721
XXXX

55195,99772
XXXX

56207,65235
XXXX

57220,00000
XXXXX
58233,08188
XXXXX
59246,94165
XXXXXX
60261,62557
XXXXXX
61277,18263
XXXXXX
62293,66477
XXXXXX
63311,12698
XXXXXX
64329,62756
XXXXXX
65349,22823
XXXXXX
66369,99442
XXXXXX
67391,99544
XXXXXX
68415,30470

XXXXX
69440,00000

XXXXX
70466,16376


XXXX
71493,88330


XXXX
72523,25113


XXXX
73554,36526



XXX
74587,32954



XXX
75622,25397



XXX
76659,25511



XXX
77698,45646



XXX
78739,98885



XXX
79783,99087



XXX
80830,60940



XXX
81880,00000




XX
82932,32752





X
83987,76660





X
841046,50226





X

Direct Binary Division Binaria Directa

Division Binaria Directa

Introducción

He diseñado un circuito digital para realizar la operación binaria de la división de manera directa, sin necesidad de ciclos de reloj (en teoría). Esto permite que el circuito o el divisor presente su respuesta mas rápido que si se utilizase ciclos de reloj para ir determinando un valor final, eso sí a un costo de Hardware considerable.


Explicación
Tiene dos entradas P que es el Dividendo y M que es el Divisor.
Tiene dos salidas Q que es el Cociente y R que es el Residuo.
N es el complemento a dos de M, (Se puede obtener invirtiendo a M en su totalidad y sumarle una unidad posteriormente).

Al interior del circuito las entradas van en la parte superior y las salidas en la parte inferior.

Se utilizan varios sumadores de 8 bits cuyo el último bit, el más pesado, se utiliza como selector del siguiente operando (M o N) de la próxima suma; este bit más pesado al invertirse también produce bit a bit, según su posición el valor del Cociente.








Ejemplo de como usarlo:

http://joseluisbz.blogspot.com/

José Luis Bernal Zambrano
Ingeniero Electrónico
Universidad de Antioquia
Barranquilla - Colombia