Visita mi otro blog

Sitios que te pagan por hacer click y ver publicidades www.clickporplata.com.ar

miércoles, 15 de diciembre de 2010

Diagrama esquemático del prototipo y tutorial MIDI

Este es el diagrama esquemático del prototipo version 0.1

Aqui en version .pdf

http://rapidshare.com/files/436917031/Mi_primer_bateria_sch_ver_0.1.pdf

Los conectores  J3, J4 y J5 son las entradas analogicas para los piezo, J8 es para el LCD de 16x2, J1 es la salida MIDI, J9 la salida serial RS-232. J6, J7 y J10 los usaria luego para agregar los botones.

El proyecto está basado en diferentes sitios de internet de donde fue juntando información. Algunos sobre microcontroladores pic y otros con otros micros como los Atmel. Asi fue que llegué a este sitio basado en un Arduino.

http://todbot.com/blog/2006/10/29/spooky-arduino-projects-4-and-musical-arduino/

Aqui se ve que conectan directamente el piezo en paralelo con una resistencia de 1M a la entrada analogica. El zener de 5,1 V tiene la función de limitar el voltaje generado por el golpe sobre el piezo, pero los pic ya tienen internamente en cada pata un par de diodos de protección. Esta figura está sacada de la hoja de datos del PIC16F877


Asi que con esto en mente probé lo mismo sobre el PIC y funcionó. Realicé algunas pruebas con el convertidor AD y enviaba el valor por el puerto serial a la PC. Ahora lo que faltaba era hacer que suene por MIDI.


MIDI desde 0...

Esta sección explica paso a paso como son los mensajes midi para saber que es lo que el PIC debe enviar a la PC, si ya conocen el protocolo MIDI se la pueden saltear.

El protocolo MIDI tiene dos partes, una parte lógica que involucra que un instrumento musical envia mensajes para indicarle a la PC que se presionó o se soltó una nota, y otra parte física o hardware donde se definen como seria la comunicación serial de forma óptica para recibir estos mensajes, primero vamos a ver la parte de los mensajes.

Para saber como funciona el protocolo midi, normalmente se conecta un instrumento  musical con salida MIDI, como un teclado o un organo, a la pc usando una interfase MIDI-USB.

Algunos teclados o controladores MIDI nuevos ya vienen con puerto USB, por ejemplo tengo un controlador M-Audio Keystation 49es.


En esta foto se ve que tiene los dos conectores, el tipo DIN 5 MIDI OUT y además un conector USB tipo B similar al de las impresoras.



Luego se presiona una tecla en el instrumento, digamos un do de la primer octava (C1) y se monitorea la información que recibe la PC.

Sin embargo, si no tienen ningun instrumento MIDI, ni tampoco ninguna interfase MIDI-USB, y todavia quieren saber como funciona el protocolo MIDI se puede realizar haciendo lo siguiente, primero se instala un puerto midi virtual. Para esto utilizo el "MIDI YOKE" que lo pueden bajar de aquí

http://www.midiox.com/zip/MidiYokeSetup.msi

Una vez instalado tambien se crea un nuevo icono en el panel de control


Por defecto instala 8 puertos midi virtuales llamados "MIDI Yoke:1" al "MIDI Yoke:8"


Ahora hay que instalar un programa que permite enviar notas MIDI usando el teclado de la pc, existen varios, pero el que uso se llama "Bome's Mouse Keyboard", lo pueden bajar de acá

http://www.bome.com/bome/downloads/MouseKeyboard200.exe

Es una versión shareware o postcardware, por lo que al iniciar aparece una nag screen tipo recordatorio de compra con una demora de 20 segundos, pero si lo registran desaparece, fuera de eso es completamente funcional. Ahora deberian configurarlo para usar como salida MIDI OUT del programa el primer puerto midi virtual "MIDI Yoke: 1". Esto lo hacemos para poder escuchar y ver los datos al mismo tiempo.



Para poder escuchar algun sonido deberiamos conectar la salida del puerto "MIDI Yoke: 1" al MIDI mapper del windows, para esto vamos a usar otra utilidad llamada Hubi's loopback que sirve para conectar puertos MIDIs por software. Lo bajan de aca

http://rapidshare.com/files/436935719/Hubbis_LoopBack.rar

No tiene ningun instalador, solo hay que ejecutar el archivo "HWMDCABL.EXE" y veran que en la barra de tareas les sale una nueva aplicación "Hubi's MIDI cable" que no despliega ninguna ventana, pero si hacen click derecho sobre la misma aparecen las opciones


Aqui deberian seleccionar como salida en la tercer columna donde dice "0-No Output" el Mapeador Microsoft MIDI, al seleccionar algo se cierra la ventana, por lo que deberian hacer click derecho nuevamente y en la segunda columna donde dice "0-No Input" deberian seleccionar "MIDI Yoke:1", con esto deberia quedar asi


Resumiendo, lo que hicimos fue conectar el puerto "MIDI YOKE: 1" al Mapeador Windows MIDI para poder escuchar las notas, este usa por defecto el sintetizador FM de la placa de audio que tiene un pésimo sonido, en mi caso si se fijan la ultima opción en la columna de salida dice "Sintetizador por Software de tabla de ondas XG", este es una mejora sobre el midi mapper. Sin embargo luego aprenderemos como mejorarlo cuando veamos los instrumentos VSTi de Steinberg. Por el momento seguiremos con esos soniditos.



Aqui vamos a hacer una aclaración, nunca elijan el mismo puerto virtual como entrada y como salida, porque se produce una situación de retroalimentación de datos que causa una insuficiencia de buffer y el MIDI Yoke deshabilita el puerto con el siguiente cartel de advertencia (Por ejemplo le puse de entrada "MIDI Yoke: 1" y de salida el mismo puerto)



Volvemos al "Bome's Mouse Keyboard" y si está todo bien al presionar las teclas "Z X C V B N M" deberian sonar las teclas blancas de la primer octava, las negras serian "A S D F G H", las blancas de la siguiente octava serian "Q W E R T Y" y sus negras "1 2 3 4 5 6 7", con F3 y F4 se suben o bajan las octavas. Por defecto deberia sonar el primer patch o instrumento que seria un piano, ahora bien, en MIDI existen 16 canales, en teoria se usa un canal por instrumento. El canal 10 siempre se lo reserva para las percusiones, para cambiar de canal lo eligen donde dice channel.


Si ahora presionan "Z X C V" deberia sonar un KICK, un SNARE y todos los otros instrumentos de una bateria. Por supuesto que no suena muy lindo, pero la idea por el momento es ver que mensajes midi se envian para hacer sonar un KICK o un SNARE. Luego veremos como mejorar el sonido cuando lleguemos al Addictive Drums en la seccion sobre los VSTi. Ahora solo falta ver que mensajes midi se estan enviando.


Monitor de mensajes MIDI: MIDI-OX

Para poder monitorizar los datos que llegan por un puerto Midi utilizo el Midi-OX, lo pueden bajar de aquí

http://www.midiox.com/zip/midioxse.exe

Luego de instalarlo lo ejecutan y deben configurar el puerto MIDI de entrada, en "Options" -> "MIDI Devices..."


Aqui se abre otra ventana donde se puede seleccionar los puertos midi de entrada y salida (se puede por ejemplo recibir notas por un puerto procesarlas de alguna manera y enviarlas por otro).


Aqui solo seleccionaremos como MIDI input el puerto "MIDI YOKE: 1", para ver las notas que enviamos con el Bome's desde el teclado de la pc, por lo que deberia quedar asi


Ahora deberiamos volver a la ventana del "Bome's Mouse Keyboard" y para poder enviar las notas y ver el resultado habilitamos en "Options" -> "Stay on Top", esto hace que siempre esté arriba de todas las ventanas.


Ahora ubicamos en el MIDI-OX la ventana que dice "Monitor Input" si esta todo bien en el "Bome's Mouse Keyboard" si presionan la tecla Z y la mantienen presionada deberia enviar un mensaje "Note ON" indicando que se presiono una tecla y que está formado por tres bytes: 0x99 0x24 y 0x64. Este es el sonido del bombo (kick).


Ahora al soltar la tecla se envia otro mensaje midi que seria un "Note OFF", indicando que se soltó una tecla, formado por otros tres bytes: 0x99 0x24 0x64


De esta manera saben exactamente que bytes debe enviar el PIC para que la PC lo reconozca como mensajes MIDIs. Prueben hacer los mismo con otras teclas, por ejemplo la X deberia ser un redoblante (snare), la G un charles cerrado (closed hihat), la J un charles abierto (open hihat) y la L un platillo (cymbal). Esto se define en el mapeo del los instrumentos General MIDI.

En realidad cada byte del mensaje midi tiene su nombre y función:

1-STATUS (indica el canal en el byte MSB
2-DATA1
3-DATA2

De esto lo mas importante es saber que el canal va en byte de STATUS, el byte DATA1 nos indica la nota presionada 0x24 para Bombo, 0x26 para Redoblante, etc. Y el ultimo byte DATA2 nos indica el volumen o fuerza con que se presionó la nota (Velocity), va de 0x00 a 0x7F (0 a 100%). En el "Bome's Mouse Keyboard" pueden variarlo con el potenciómetro "Volume".



Para mayores detalles recomiendo la pagina de la Wikipedia sobre MIDI http://es.wikipedia.org/wiki/MIDI


Hardware MIDI


Hasta aqui vimos como son los mensajes, ahora bien el hardware normal usa unos conectores DIN-5, como estos:

Si se fijan en este circuito se muestra como usar un puerto de juegos o gameport para sacar los conectores midi.


Incluso actualmente muchos motherboards todavia tienen internamente los pines, solo le falta el conector afuera del chasis, de hecho a mi PC de escritorio le hice eso, y me ahorré de comprar una interface MIDI-USB. Tengo un mother ASUS P4P800-X y en esta figura se ve el conector GAME abajo.


En este acercamiento se puede observar mejor el conector GAME



Ahora bien para que el PIC envie los datos por midi, se puede usar la USART normal (Si se fijan en el diagrama esquematico la misma pata TX envia MIDI y tambien sale al puerto serial), pero hay que configurarla a una velocidad de 31.250 bps, en cambio si se usa como salida serial normal se configura a 38.400 bps. Pero esto se puede hacer facilmente en el codigo en C.

Una vez armado el circuito con el pic lo ideal es probarlo con un interface midii. Si la pc no tiene interface MIDI, por ejemplo mi notebook DELL D630 ATG no tiene, se puede usar el puerto serial RS-232 para recibir mensajes midi, instalando el driver CBX. De esta manera se ahorran la interface MIDI-USB, de nuevo... ja ja.


Interface MIDI por RS-232

Existe un driver midi de Yamaha llamado CBX, usado en algunos modelos de samplers y workstations, que permite recibir los datos midi desde un puerto serial RS-232. Lo pueden bajar de acá

http://rapidshare.com/files/428504800/Yamaha_CBX_MidiDriver.rar

Una vez instalado se crea en el panel de control un nuevo icono


Al hacer doble click se abre la ventana de configuración. Aqui se selecciona el puerto serial, en mi caso lo recibo por el COM1 y se debe habilitar marcando la opcion "Driver Enable", luego de esto se debe reiniciar el windows.


Con este driver instalado todo lo que se reciba por el puerto serial a 38400 bits por segundo se puede enviar a cualquier DAW (Digital Audio Workstation) o software secuenciador (Nuendo, Cubase, Pro Tools, Fruty Loops, etc) como si viniera de un puerto MIDI real. Solo resta probarlo con el PIC para ver si al enviar tres bytes 0x99 0x24 0x7F (mensaje midi NOTE ON) la pc lo recibe como un golpe en el bombo.

Bueno hasta aqui este post, luego seguimos con mas detalles del codigo del PIC, el Firmware.

Saludos a todos

Para que sea mas fácil enterarse cuando postee algo nuevo por favor si tienen Gmail, Twitter o Yahoo se pueden agregar como seguidores haciendo click arriba al costado derecho.


Tambien estoy en Facebook.







martes, 9 de noviembre de 2010

Conocen el Zendrum ?

Navegando por ahi encontré una revista digital en inglés sobre baterias electrónicas. El ultimo número de octubre lo pueden ver en:




Acá estan en .PDF el primer numero de Enero y el segundo de Abril.

http://rapidshare.com/files/429840334/Revistas_DigitalDrummer.rar

Zendrum

Me llamó la atención en la revista de enero, la entrevista a Tom Roady al creador del Zendrum, un controlador MIDI portátil para percusionistas.
Al parecer algunas bandas conocidas ya lo utilizan, como dice Billi Cobham en el siguiente video a los 2:05'', "fue la primera vez que el baterista se podia levantar de su lugar y podia estar por todo el escenario...", le falto agregar "como un guitarrista cualquiera...", ja ja.


http://www.youtube.com/watch?v=jwrofi5B5oA

Acá hay unos instructivos para configurar los pads, esta es la primera parte...


http://www.youtube.com/watch?v=yIWMrFK0lR4

y esta es la segunda parte...


http://www.youtube.com/watch?v=-8buG35yabo

Este es Steve Pearson que viene usandolo de hace rato...


http://www.youtube.com/watch?v=BsEziytzwC8

acá con musica house...



http://www.youtube.com/watch?v=itdNlElqkGs

Y en este "solo de percusion" se aprecia que a falta de uno, tiene dos Zendrums...


http://www.youtube.com/watch?v=dR2RzNjpbYk

Zendrum LT

Este es Rob "Lunatique" Chang con este modelo que se llama Zendrum LT y suena con el "Addictive Drums". Me gusta que lo toca con diferentes partes de la mano, no solo con la punta de los dedos, gracias a la alta sensibilidad de los micro-pads. Ademas explica que le gusta el "Addictive Drums" sobre el "EzDrummer" o el "Steven Slate Drums" porque carga los samples muy rapido y suena bien para diferentes ritmos. Tambien dice que le costó juntar el dinero para comprarselo, aunque lo deseo por varios años.


http://www.youtube.com/watch?v=CPlItm19ano


El Zendrum mas un transmisor MIDI inalámbrico o "wireless" como el M-Audio MidAir y listo.



Tocas la bateria sin cables por todo el escenario...! Acá en Argentina se lo puede conseguir, vean esto


http://articulo.mercadolibre.com.ar/MLA-98626817-m-audio-midair-sistema-midi-inalambrico-para-controladores-_JM


Cuanto salen los Zendrum ?

Acá estan las fotos de los distintos modelos de Zendrum originales (http://www.zendrum.com/catalog.html)

Zendrum Zap U$S 1000...!



Zendrum Zap2 U$S 1199...!



Zendrum LT de U$S 1500 a U$S 1800, dependiendo del color...!


Zendrum ZX tambien de U$S 1500 a U$1994, dependiendo del color  y aparte si tiene el wireless incluido.




Idea...
El tema es que si a nuestra Interface Trigger-Midi con PIC le sacamos las chapas de los pads y dejamos solo los piezos y la electrónica, obtendriamos algo muy similar al Zendrum, solo restaria hacer el cuerpo de madera, que por cierto queda muy lindo... alguien tiene algun amigo carpintero ?

Les gustaria tener un instrumento así...?

                                    A mi también  ;)

Les comento que alguien mas ya tuvo esta idea, su nick es krchnakp y vive en Eslovakia. Lo que hizo fue comprar la electrónica en un kit de http://www.megadrum.info y fabricar la carcasa de madera. En el siguiente video se lo puede ver.


http://www.youtube.com/watch?v=_JhthBIwajI

Este es su blog http://dboneblog.blogspot.com

Como ven no es algo que no se pueda hacer, teniendo en cuenta que se deberia tratar de reducir al minimo el tamaño de las placas electrónicas.

Asi que bueno, como proyecto paralelo cuando el prototipo quede funcionando bien, vamos a intentar hacer algo parecido al Zendrum LT, que les parece ? se anotan ?

Saludos a todos.








"Zendrum" es marca registrada de Zendrum Corporation.

lunes, 8 de noviembre de 2010

Detalles de los pads, como los hice ?

Los sensores para los pads

Primero hay que usar sensores de vibración en cada cuerpo o pad de la batería. Vieron las tarjetas musicales ? Esas que se abren y suena una cancioncita re fea ?
Bueno, como parlantes se utiliza algo que se llama Buzzer piezoeléctrico.



Los buzzer piezoelectricos los pueden conseguir en las casas de electrónica, cuanto mas grande mejor, mas sensible será el sensor. Sino hagan como yo que las saque de varias tarjetas musicales.

Si se desarma estos buzzers, adentro se encuentra el piezo.




Un piezo es disco de material cerámico sobre otro metálico, que cuando recibe una señal eléctrica variable, se flexiona mecánicamente y se genera la vibración que produce el sonido. Pero también funcionan al revés.

Si se flexiona mecánicamente el piezo, este genera una señal eléctrica muy pequeña (del orden de los 60mV), pero proporcional a la flexión producida. Esta característica se utiliza para detectar los golpes sobre el pad.


Para amplificar mecánicamente la señal del mismo se agrega una chapa circular del tamaño del pad que estemos usando. En mi caso estoy usando dos tamaños de pads, uno grande de 20 cm de diámetro y otro chico de 14,5 cm de diámetro. En la foto siguiente se ve una chapa para pad chico sobre un pad grande.



Sobre esta chapa se pega el sensor piezoeléctrico del lado metálico.


Esto permite que capte mejor las vibraciones del pad, o sea aumenta la sensibilidad, si no lo ponen el pad solo detecta los golpes en una zona muy cercana al centro. Para pegar los piezos utilicé Poxipol, ese que viene con dos pomitos que se mezclan.


Luego se suelda un cable mallado al sensor.



Esto es muy importante porque como la señal es muy pequeña si el cable no es mallado se puede inducir ruido eléctrico que hace que se dispare solo. La malla va soldada a la parte metálica y el cable central a la parte cerámica.



Aqui hay que hacer una aclaración
Al principio soldaba directamente el cable mallado al piezo, pero resulta que el cable mallado no es muy flexible y cualquier movimiento se traduce en flexion sobre la soldadura, como el material cerámico es muy frágil se quebraba y se desprendia parte del disco cerámico. En estas fotos se puede apreciar el problema...




Por esta razón dejé los cables originales que son mas flexibles y no transladan esfuerzo mecánico a la soldadura, luego a estos cables les soldé recien el cable mallado. De hecho esta es una falla muy comun de las baterias para PlayStation o XBox360 que se usan para jugar al RockBand.

Luego aislé con cinta las soldaduras y para inmovilizar un poco mas el cable lo pegué a la chapa con cinta de enmascarar, esa que usan los pintores.

Luego la chapa con el disco cerámico hacia abajo se pone entre dos capas de goma espuma, esas que venden en las librerias, de mas o menos 1 cm de espesor, creo que viene en un rectangulo de 60 x 40 cm.
Sobre esto le puse una especie de goma eva que es bastante flexible también de casi 1 cm de grosor.


Todo este conjunto va pegado con adhesivo de contacto Poxi-ran para que no se separen al golpearlos.


Todo este enfoque salio a razón de un video en youtube donde mostraban un verdadero Pad Alesis DM10 que internamente usa los Medelli, desarmado parte por parte. Este es el video




Por el momento cada pad lleva un solo sensor, aunque la idea es que tenga dos para hacerlos dual zone, es decir un sonido al golpear el pad y otro al golpear el borde del mismo. Mientras tanto usé una sola ficha estéreo para dos pads.  También estoy usando plugs y jacks stereo miniatura, pero seguro luego serán mas grande.


Bueno hasta aqui los detalles de los pads...

Luego subo mas sobre la interface y la configuración del software necesario en la PC.

Saludos a todos

Tambien estoy en Facebook, para seguirme y estar al tanto de los avances hagan click abajo