4.3 HIDs

4.3.1 Teoría

Es posible `tocar` un patch en vivo, como cuando toca un instrumento en vivo en el escenario. Mientras algo corre en el patch, ud. puede clickear en los objetos GUI, aunque usar el mouse es bastante in-practico si quiere ser preciso con respecto al tiempo. Por esta razón hay dispositivos de interface humana (Human Interface Devices (HIDs)) que conectan al hombre/mujer con la maquina. El mouse y el teclado son técnicamente HIDs, pero también hay muchos otros, algunos están especialmente diseñados pera su uso en música, por ejemplo para controlar un patch de Pd.


4.3.1.1 Teclado y mouse

Si clickea en un number box, puede ingresar un valor con el teclado. También puede usar el teclado para transmitir directamente otra información:

Las teclas están numeradas (con algunas excepciones, F1 y F12 por ejemplo). “key” registra que una tecla fue presionada, “keyup” que fue soltada. Cada vez, el numero de la tecla es enviado. “keyname” muestra el nombre normal.

Usando el “MouseState” (escribir respetando las mayúsculas) de Pd-extended, también puede usar data del mouse:

Con “poll” y “nopoll” enciende o detiene la emisión de valores (en mi versión se debe presionar primero “nopoll” y luego “poll” para que funcione). Esto muestra los los valores absolutos en coordinadas x/y, valores delta, y también indica si el botón izquierdo del mouse esta presionado.

Normalmente las coordinadas 0/0 aparecen en la esquina superior izquierda del monitor; con “zero” puede seleccionar otro punto de referencia:


4.3.1.2 MIDI

Al comienzo de los 80`, los grandes fabricantes de instrumentos establecieron un protocolo standard de transferencia de data para usar en una serie de dispositivos de entrada denominado MIDI (Musical Instrument Digital Interface). Ahora existen teclados MIDI, mezcladores MIDI, guantes MIDI, baterías MIDI, etc. En Pd hay objetos para recibir y emitir data MIDI. Puede enviar esta entrada hacia un dispositivo o patch, donde es convertido en sonido. De todos modos, la mayoría de las placas de sonido también contienen sonidos MIDI, por ende, también allí MIDI data puede ser convertida en sonido.

El protocolo MIDI no contiene ningún sonido en si mismo, sino que se compone de comandos para controlar el patch o otros instrumentos, por ej., “note-on”, “velocity”, y “note-off”. Ademas de estos comandos basicos, el MIDI usa otros comandos especiales que pueden ser usados para por ej., cargar otros sonidos o modificar sonidos cargados usando data de control producido usando switches, botones, o perillas.

Cada comando standard de MIDI (excepto para system-exclusive data, abreviado SysEx) se compone de un numero de canal mas un ID de comando y la data del comando. El numero de canal es de 4 bits, que equivale a 24=16 canales pueden ser controlados. Dependiendo del software, los canales se numeran 0 a 15 o 1 a 16, este ultimo es lo mas comun.

Como el MIDI es un protocolo serial y la frecuencia de datos de las interfaces midi es bastante pequeña en los standards de hoy dia, a menudo puede haber problemas de tiempo cuando muchas notas son ejecutadas a un mismo tiempo, especialmente en conjunto con un sequencer. Inclusive solo con tocar un acorde con muchas notas puede llegar a un retraso audible, por que el MIDI nunca puede enviar notas simultáneamente, sino una por una.

Para los siguientes ejemplos es necesario tener MIDI hardware. En Pd puede configurar los dispositivos en Media MIDI settings.

El objeto mas básico es “midiin”. Cada MIDI input se muestra allí, el valor en la izquierda y el numero de canal en la derecha.

Si tiene un teclado MIDI o otro dispositivo con alturas definidas, con “notein” consigue los siguientes valores:

(Nota del traductor: el gráfico esta mal etiquetado, velocity es channel y channel es velocity)

El numero MIDI para la altura aparece a la izquierda, velocity (la fuerza del ataque) en el medio, y el numero de canal a la derecha.

A la inversa, puede enviar información a un instrumento. Si solo un instrumento esta conectado, no tiene que ingresar un numero de canal. Necesitara usar “noteout” y después “makenote”, este ultimo combina las entradas de forma similar al objeto “pack”:

También hay valores de control (controladores), que se ingresan con “ctlin” y “ctlout”. Veamos “ctlin”:

El outlet izquierdo es el valor, el del medio el numero de controlador y a la derecha el numero de canal. También puede ingresar el valor del medio directamente como un argument para seleccionar el controlador.

Todos los otros objetos MIDI funcionan de este modo. Algunos otros son: “pgmin”, “bendin”, “touchin”, y “sysexin”.


4.3.1.3 Usando signals para controlar el sonido

Los sonidos que ingresan por el micrófono pueden no solo ser usadas puramente como sonido, sino también como control data. Como vimos en 3.8.3.1, puede usar “fiddle~” para determinar información acerca de amplitud y frecuencia:

Estos números – nuevamente, el Pure-Data solo trabaja con números – pueden ser usados en conjunción con los parámetros de un patch.

Un problema aquí es que la data que sale de del objeto “fiddle~” es muy caótica. Hay un truco para filtrar esto:

Un low-pass filter también recibe control data. En este caso, solo cambios relativamente lentos se permiten pasar.


4.3.2 Aplicaciones

4.3.2.1 Tocando patches en vivo

Usando dispositivos de entrada y métodos descriptos arriba, los parámetros de un patch pueden ser cambiados externamente:

patches/4-3-2-1-patch-play.pd

Queda claro que los diferentes dispositivos tienen diferentes funciones: un boton es para on/off, una perilla para cambios graduales.

Para los controladores que tengan una serie de números, como perillas y sliders, se recomienda que use interpolacion (especialmente por que solo tienen 128 valores MIDI).

En Pd-extended (pero solo si GEM no esta cargado!), hay un objeto muy útil que puede usar para esto: “scale”. Por ejemplo, si cambia frecuencias entre 69 y 81 (números MIDI) y desea usar un controlador para esto (que genera números entre 0 y 127), puede escribir:

El ultimo numero es (0) lineal o (1) exponencial.


4.3.2.2 Mas ejercicios

a) Use sonidos midi externos en lugar de osciladores para los algoritmos en 4.1.2.1.

b) Use parámetros de cualquiera de los patches en el Capitulo 3 con HIDs.


4.3.3 Apéndice

4.3.3.1 Other HIDs

Ademas de el teclado normal, el mouse, y los dispositivos MIDI, el numero de otros dispositivos de entrada continua aumentando: cualquier cosa desde joysticks para juegos de computadora, tabletas para dibujar, hasta sensores de movimiento. Aunque en el presente (junio 2008) no hay ni un solo objeto de Pd que funcione con todos estos dispositivos, los siguientes externals deben ser mencionados:

“joystick”, que recibe información de los joysticks; “wintablet” para tabletas Wacom en Windows; y “hid” en Linux y MacOSX, que trabaja con varios dispositivos de entrada. Un dispositivo llamado Arduino Board también esta hace un tiempo; este dispositivo digitaliza información que recibe de instrumentos analogos que estan conectados a el. Con software adicional, esta información también se puede recibir en Pd.


4.3.3.2 Video input

También hay un componente de video en Pd llamado Gem que puede usarse para extraer números de una señal de video – ya sea grabada o en vivo – que puede luego ser usada para controlar los parametros de un sonido.


4.3.4 Para los especialmente interesados

4.3.4.1 Diseño de instrumentos

También di una presentación (en Aleman) en el Lagerhaus Lecture Series en Freiburg, Alemania sobre el arte de usar dispositivos de entrada externos en una composición. Se puede ver online en este link:

http://www.kreidler-net.de/theorie/instrument-design.htm