Sintetizadores

MIDI: cambios de programa y selección de bancos

Cambiar de sonido en un sinte o entre programas de cualquier aparato. Algo tán fácil en el propio panel del equipo, y que sin embargo vía MIDI se les resiste a algunos. No conocer los mensajes implicados también puede dificultar la cosa a la hora de configurar en el DAW o un controlador la selección de sonidos. Hoy revisamos en detalle esta cuestión.

Si ves que nos hemos dejado algo o que te queda alguna duda sobre algún caso concreto, pregunta en los comentarios.

Lo más básico: program change

Los sintetizadores y equipos musicales electrónicos en general disponen de una serie de memorias de sonidos o configuraciones (llamados genéricamente programas, presets, patches, etc.) que determinan cómo han de sonar/actuar. Estas memorias están ordenadas internamente formando una lista numerada. Es posible solicitar vía MIDI el paso a usar la configuración descrita en una de esas memorias. Basta un mensaje que indica el número de la posición de esa lista en donde está el programa que queremos usar. Existe en MIDI un tipo de mensaje pensado específicamente para esta función y se llama mensaje de cambio de programa (Program Change, PC).

Es un mensaje ‘de canal’, lo que quiere decir que el mensaje va etiquetado con uno de los 16 posibles números de canal y que será por ello posible enviar cambios de programa distintos para cada uno de los 16 canales, con lo que podremos seleccionar un sonido diferente en cada uno de ellos.

Para sentiros cómodos y no perderos cuando entréis en las profundidades de vuestros equipos y DAWs, es útil saber cómo es el formato íntimo de estos mensajes. Ojalá la vida fuera más fácil, pero, ya lo sabéis: ‘buscáis la fama, pero la fama cuesta’.

El formato del mensaje Prog. Change, presentado en binario, es

1100nnnn 0ppppppp

  • 1100 es una cabecera que indica que se trata del mensaje de cambio de programa,
  • nnnn sería la indicación del canal (0000 es para el canal MIDI 1, 0001 para el 2, 0010 para el 3, y así hasta llegar al 1111 para el canal 16)
  • 0ppppppp es el byte donde va el número de programa deseado, y tiene 7 bits útiles (el primer bit del byte a la fuerza debe ser 0). Con 7 bits, es posible identificar hasta 128 combinaciones y por tanto seleccionar hasta 128 sonidos, con números desde 0 hasta 127 (aunque en el display de muchos sintes los veamos referidos como 1 a 128, por aquello de evitar ese horror que a algunos les produce el cero).

A menudo lo veréis escrito en hexadecimal como Cn pp (podéis revisar la explicación sobre bits, bytes y hexadecimal que se hicimos en un anexo de otro tutorial). Por ejemplo C0 00 selecciona en el canal 1 el primer programa, mientras C3 05 selecciona el sexto programa del canal 4, y un mensaje C0 10 selecciona el sonido décimoséptimo en el canal 1 (ten en cuenta que ‘10’ en hexadecimal es el valor 16 decimal y sería por tanto el sonido decimoséptimo contando con el 0).

Ánimo. No es tanto lío, sólo cuestión de acostumbrarse. Si has sobrevivido a esta primera bofetada, tienes garantizado sobrevivir al resto del artículo.

DAWs: números y nombres de programa

Aquí tenéis una imagen en Cubase (sería equivalente en otros DAWs) en la que en la cabecera de cada pista MIDI hemos podido elegir un sonido, especificando un nº de banco (hablamos de ellos luego) y un número de programa entre 0 y 127. Realmente el DAW lo que hará es enviar en el arranque del tema un mensaje Progr. Change por cada pista para así preparar la carga del sonido necesario en cada equipo. Sencillo.

Algunos DAW muestran el valor entre 0 y 127, otros lo muestran desde 1 a 128, pero en ambos casos lo que importa es que el valor más bajo corresponde al ‘primer’ sonido y el valor más alto al ‘último’ de la colección de los 128 sonidos que pueden alcanzarse con un mensaje de cambio de programa.

En muchos casos la lista que se muestra podrá incluso ofrecer los nombres de los sonidos porque sean ya conocidos por el DAW para ese instrumento. Es muy habitual que esté disponible para su uso la lista de sonidos de los sintes ‘GM’ (los que siguen la norma General MIDI). En ellos hay una lista universal: las mismas posiciones/memorias corresponden a los mismos sonidos en todos los sintes cuando usan el modo GM.

En muchos DAWs podemos en uno de los menús (configuración de dispositivos MIDI en el caso de Cubase) cargar o crear una lista con los nombres de los sonidos de cada uno de nuestros sintetizadores. Es sin duda cómodo y nos evita lidiar ‘a ciegas’ con números. Es más agradable ver y elegir por nombre.

Además del mapa de sonidos General MIDI (GM), suelen venir ya predefinidos otros para sintes populares y en caso necesario podemos crear (o buscar en Internet) la lista de otro sinte que tengamos. Basta elegir el instrumento y podremos ver los nombres. En esta otra imagen estáis viendo la lista de sonidos de un TX81Z, en la que aparece el clásico sonido ‘Lately Bass’.

Cuando hemos establecido qué sinte/lista de sonidos es la que estamos usando para una pista, en lugar de ver como antes banco y programa por nº lo que veremos es una lista, a menudo clasificada ya sea por familias de instrumentos (como en el ejemplo de GM) o por bancos del sinte (preset1, preset2, user1, user2, etc.)

En todo caso, cómodo como resulta todo esto de elegir por nombre en muchos casos la lista para nuestro DAW para un determinado sinte no está disponible y tampoco tenemos el tiempo / ganas de crearla por nosotros mismos y asumir el esfuerzo y tiempo que eso conlleva. En esos casos nos toca enfrentarnos a los números directamente.

Esquemas de numeración

Casi todos los sintetizadores numeran de forma que el primer sonido se llama 1 y el último 128. ¿Cómo casa eso con lo de los valores 0 a 127 en el mensaje Program Change o en la pantalla de nuestro DAW? Ya lo hemos mencionado: hay una correspondencia directa. Para elegir el sonido 1 de ese sinte necesitaríamos escoger el valor 0 en el desplegable del DAW y así sucesivamente. Siempre ‘restar uno’ en ese caso.

Pero no es el único problema que podemos encontrar relacionado con qué esquema de numeración se presenta al usuario en el panel o pantalla del equipo y cómo se corresponde con los valores 0 a 127 conocidos en MIDI. A veces hay algunas peculiaridades con los números de programa, y diferencias entre la representación que se muestra al usuario y la que se usa internamente y en los mensajes MIDI.

El nuevo JU-06 (la recreación del Juno-106 en la gama Roland Boutique) usa dos dígitos comprendidos entre 1 y 8 para disponer de 64 memorias. Con un dígito de decenas y otro de unidades, la numeración en pantalla recorre 11 a 88, pero no es un recorrido completo. Sólo son posible 64 valores por la ausencia de ceros y nueves. Una representación que tiene que ver con cómo era la tecnología en los años del Juno-106, pero que se ha imitado aquí.

Detalle JU-06

De hecho, el Juno-106 original tenía más memorias que este nuevo JU-06. Tenía 128 memorias gracias a que además de esos pulsadores había otro que conmutaba entre dos conjuntos de sonidos A y B, completando así una cantidad de memorias que en aquellos años parecía gigantesca. ¿Quién podría querer más de 128 sonidos?

Detalle Juno-106

Si vais al panel del JX-03 (versión Boutique del JX-3P) veréis dos secciones (A y B) de sonidos prefijados y una tercera (C) de sonidos programables por el usuario. Cada una con 16 programas, y por tanto un total de 48 sonidos.

Detalle JX-03

Los dos Boutique mencionados, son ejemplos recientes de algo que era frecuente en los primeros 80s: no había tantas memorias en el sinte como para llenar 128 programas. En este caso, 64 en JU-06 o 48 en JX-03.

En este tipo de casos encontraréis a veces ‘rarezas’ en la numeración cara a los mensajes de cambio de programa. Ha habido sintes que ante un esquema como el del JU-06 (de tipo 11-88 para 64 sonidos en total) han optado por usar los 64 primeros mensajes de cambio de programa (los valores 0 a 63). Pero otros fabricantes lo que han hecho es usar directamente el número en pantalla. Aquí veis esas dos alternativas:

Pantalla Prog.Ch. Prog.Ch.

11 0 11

12 1 12

88 63 88

Hay otros que han sido el colmo de la rareza y han usado otros tipos de correspondencia más estrambótica (como llevar cada uno de esos dígitos a un ‘niblle’ del byte de número de programa). En definitiva, cuidado con la numeración ‘a la vista’ en pantalla / panel, y con la numeración que se aplica en los mensajes Progr. Change. Nada complicado normalmente, pero sí algo que atender y mirar en el manual.

Antes casos de ese tipo, ¿qué hacer con los mensajes de número que no existen en el equipo? Pensemos de nuevo en 64 memorias. Ha habido fabricantes que han optado por atender sólo los cambios de programa 0 a 63 y no reaccionar ante los 64 a 127 (si llega un mensaje de una posición desocupada no cambian de sonido), pero otros lo que han hecho es ‘extender’ para cubrir todo el rango, repitiendo el mapeo de memorias. En ese esquema tanto el cambio al programa 0 como al 64 llevarían a seleccionar el primer sonido (los número 0 a 63 tienen el mismo resultado que los 64 a 127).

Variantes de numeración puede haber muchas.

Aquí tenéis la pantalla de mi MOXF, en la parte en la que se escogen sonidos. Se eligen mediante una letra A-H y un número entre 1 y 16. Podríamos llamarlo esquema tipo A1-16, H1-16. Si hacéis cuentas, no por casualidad, 8 letras y 16 números dan lugar a 128 posibles combinaciones. Y la correspondencia la imagináis. El Progr. Change 0 es el sonido A1 y el 127 corresponde al H16.

Detalle MOXF

Pero MOXF tiene en realidad miles de sonidos internos… ¿cómo acceder a ellos vía MIDI? No os he mostrado que hay otros dos botones (bank +, bank -) que permiten rotar entre una amplia colección de juegos de 128 sonidos cada uno, pero eso es desde el propio panel. ¿Y vía MIDI? Bienvenidos a los bancos.

128 no es suficiente: mensajes de selección de banco

A día de hoy 128 programas se quedan cortos frente a las colecciones de cientos (o más) sonidos que podemos encontrar en un sintetizador cualquiera. Por ello se ha estandarizado una forma de ir más allá de 128, mediante el concepto ‘banco de programas’.

Un banco de programas es una colección de hasta 128 programas. Disponiendo varios bancos tenemos acceso a un número de sonidos mayor de 128. Lo que se necesita es una forma de comunicar vía MIDI el banco del que deben tomarse los sonidos, antes de enviar (con un program change) el mensaje que dice cuál sonido de ese banco queremos usar.

Para ello se han establecido dos mensajes de controlador [tenéis dentro de otro tutorial contados los mensajes de controlador]. Los mensajes de controlador tienen el formato (lo muestro en hexadecimal): Bn cc vv , donde Bn es el arranque del mensaje (‘B’ indica que es un mensaje de controlador y ‘n’ el número de canal), cc el número del controlador entre 0 y 127 (distingue cada tipo: rueda de modulación, breath control, pedal sustain…), y vv entre 0 y 127 el valor que adopta ese controlador.

Para definir qué banco escogemos usar en un canal MIDI se usan el controlador 0 (Bank Select MSB) y el controlador 32 (Bank Select LSB). Con 7 bits cada uno son capaces conjuntamente de representar 14 bit, es decir más de 16000 bancos… y no olvidemos que en cada uno podemos contar con 128 sonidos.

Por ejemplo, B0 00 01 B0 20 07 C0 05 sería la forma de indicar en el canal MIDI 1, que debe elegirse el programa 5 del banco señalado con el MSB 1 y el LSB 7 (sería el banco 128+7 = 135).

En vuestros manuales veréis las listas de nº de banco y nº de programa necesarios para llegar a cada sonido. Generalmente el nº de banco vendrá tanto escrito tanto fraccionado en MSB y LSB como agregado en un único valor (lo del 1 y 7 o el 135).

El envío del mensaje de banco debe preceder al de cambio de programa, para que ya esté seleccionado el banco adecuado cuando llegue la indicación del nº de programa.

La especificación de un número de banco debe ser memorizada por el receptor, porque indica de qué banco deben tomarse los sonidos que indiquen todos los mensajes Program Change que vengan a continuación hasta que haya una nueva indicación de banco.

En definitiva, para especificar completamente la elección de un sonido se envía la selección de banco (con su MSB y su LSB) más el Program Change a continuación. Pero si los siguientes sonidos que vamos a reclamar son del mismo banco, podemos no enviar el ‘bank select’.

Un ejemplo de uso de bancos lo proporcionan las normas GS (General Standard) y XG (eXtended General) son unas ampliaciones de las especificaciones GM promovidas respectivamente por Roland y Yamaha. En cada una de ellas hay muchos más de 128 sonidos, gracias a que organizan sonidos en bancos. Por ejemplo aquí tenéis a la vista una parte de los sonidos que muestra Cubase usando para una pista una de las listas predefinidas con las que cuenta, precisamente para los sintes compatibles con XG:

Ejemplo XG

La imagen está tomada de la pantalla a través de la cual podemos definir (incluso creando nuestras listas a mano) qué sonidos tiene cada uno de nuestros sintes. Gracias a ello veis cómo aparecen los famosos códigos hexadecimales que os contaba. Por eso os decía que conocer un poco de esta jerga no viene mal. Así no nos mareamos al ver páginas como esta. En lugar de verla y cerrarla con horror, quizá ahora podáis animaros a aprovecharla (otro día os enseño si queréis cómo crear estas listas para un sinte nuevo en Cubase).

Ampliando más allá del mapa básico de 128 sonidos que se creó con el General MIDI inicial, las especificaciones GM2, GS y XG (y sus revisiones GS2, XG2) definen numerosos sonidos adicionales organizados en bancos. Debe estarse atento a lo que indiquen los manuales de cada instrumento, puesto que es frecuente (especialmente en GM / GS / XG) que los bancos no sean contiguos y que haya abundantes bancos en blanco o con pocos sonidos (que no tienen contenido salvo en una parte pequeña de sus 128 posibles programas).

Cualquier sintetizador / rompler / workstation reciente, con sus cientos o miles de sonidos, es otro ejemplo de uso de bancos. Id a sus manuales en busca de cómo organizan sus sonidos. Por ejemplo, GS y XG intentan mantener una agrupación semejante a la de GM, de tal forma que los 8 primeros sonidos de cualquier banco suelen ser pianos, de los cuales el primer sonido siempre es piano acústico. En la figura anterior los sonidos GrandPno, GrndPnoK, MelloGrP,… son todos el primer programa de otros tantos bancos. Así veis que MelloGrP usa el programa 0 del banco 18 (que corresponde a MSB 00 y LSB 12 en hexadecimal).

La lista que muestra en este caso Cubase está organizada por familias de instrumentos recopilando sonidos de varios bancos, en lugar de mostrar el contenido de cada banco en bruto.

En este otro ejemplo, con un MO de Yamaha, los nombres ‘MO PRE1’…’PRE4’ corresponden a varios juegos de sonidos distintos y propios de ese sinte (cada uno de ellos con 128 sonidos posibles) y ‘GM Voice’ es el juego de 128 sonidos GM. Veis además que podemos seleccionar incluso entre voces normales o de juegos de batería: ‘MO PRE DRUM’ son juegos de sonidos de batería propios de MO y no falta el ‘GM DRUM’ que en este caso tiene un único juego (Stereo GM).

Ejemplo Yamaha MO

En otros casos también mediante algún banco específico podemos incluso seleccionar las clásicas ‘combis’, ‘multis’, o ‘performances’ en las que tenemos una combinación multitímbrica de varios sonidos a través del teclado, la velocidad o los diferentes canales MIDI. Una vez más, habrá que acudir al manual de cada equipo.

Hay diversidad de formas de representar al usuario la cuestión de los programas y bancos, pero teniendo claras las ideas troncales podremos enfrentarnos con éxito a cualquiera de ellas y aprovecharla vía MIDI.

Bancos y programas ‘a pelo’

Hemos aprovechado la potencia de los DAW para presentar la cuestión de mensajes de programa y de banco. Esas listas con nombres son una gozada sin duda. Pero no pocas veces nos toca meternos ‘a pelo’ con los mensajes MIDI. Por ejemplo, cuando no tenemos ya creada la lista para nuestro DAW del sinte que acabamos de incorporar a nuestra colección y nos toca introducir a mano en el DAW los mensajes que seleccionen el sonido deseado.

También cuando tenemos que configurar un botón o un pad de un controlador MIDI que pensamos llevar a un directo y desde el que queremos poder seleccionar los sonidos deseados para cada tema. Yo lo he hecho a menudo: preparar en un controlador unos cuantos pads para tener a mano y ordenados los comandos que hacen que todos los sintes queden listos para cada tema que vayamos a interpretar. Evito así tener que ir uno por uno seleccionando sonidos y ser el último de los músicos en estar listo para el tema siguiente. Pulso un botón y acabé: soy el primero en mirar a los demás diciendo ‘¿ya estáis listos?’. Una comodiad que me deja disfrutar más tranquilo del directo, sin tantos agobios.

En el caso de los controladores normalmente para los botones y pads podéis elegir que al pulsarlos se genere un mensaje de selección de sonido y os permite especificar tanto el nº de banco como el nº de programa. En algunos casos os permitirá escribir el valor decimal, en otros tendréis que escribir en hexadecimal, … pero generalmente no es complicado.

Si vais a introducir a mano en un DAW esos mensajes: mirad primero si os basta algo como lo que mostrábamos al principio. Esos campos de la configuración de pista que permiten elegir un banco y un sonido. Sólo servirá para pistas que no cambien de sonido en todo el tema, pero es lo habitual y es el máximo de la sencillez.

Si queréis cambiar a mitad de tema:

Según cómo sea vuestro DAW es posible que permita en cada patrón o sección de la pista establecer una nueva elección de banco/programa con idéntica facilidad. Por ejemplo en Cubase completo era algo habitual.

Otra posibilidad es introducir los mensajes en el típico editor de lista de eventos. Recordad hacerlo en orden: banco MSB y LSB y sólo después el program change.

Ahora mismo sólo tengo un Cubase reducido que carece de esas facilidades (ni ajustes en cada fragmento de una pista ni lista de eventos). Sí, ya lo sé, lo que tendría que hacer es comprarme de una vez el full, pero me pasa como a muchos de vosotros. Hay que tirar con lo que hay. Y en Cubase AI os toca remangaros y hacer algo como esto (muestro los tres mensajes por separado):

Insertando mensajes de banco/programa en el editor de pianola

Como sólo está la edición en pianola, hay que ir a la parte inferior, que permite mostrar/editar mensajes de cosas que no sean notas. Por defecto sólo permite elegir entre unos pocos mensajes, pero con ‘configurar’ podéis añadir los que faltan: CC0 (bank select MSB) y CC32 (bank select LSB).

Una vez aceptada la nueva lista de mensajes que queréis poder visualizar, ya podréis introducir manualmente los mensajes como hacía un poco más arrina. Algo trabajoso de esta forma, pero posible. Y siempre manteniendo que el program change sea el último en salir, claro.

¿Favoritos? Mapeos de sonidos

Importante también en algunos casos conocer la existencia de listas de sonidos ‘favoritos’ en algunos sintes. Dos ejemplos, uno antiguo, otro más reciente.

EL TX81Z de Yamaha tenía 4 bancos (A, B, C, D) de 32 sonidos prefijados, con lo que ya se completaban los 128 programas. Pero además tenía otros 32 sonidos en un banco ‘I’ previsto para sonidos editados o cargados por el usuario. No usaba todavía el concepto de ‘bancos’ y sólo contaba con 128 programas alcanzables. ¿Cómo resolver el dilema de 128+32=160 sonidos, pero sólo 128 programas posibles en el mensaje de Programa Change? Se podía crear una lista que indicaba qué sonido de los 160 queríamos que se cargara al llegar cada uno de los 128 posibles Program Change. Una especie de lista de favoritos.

Me quedo de nuevo en Yamaha: los teclados recientes (Motif, MOX/MOXF, e incluso Montage) permite crear una lista de sonidos y/o combinaciones favoritos. Es posible llegar a ellos mediante un (o unos) bancos dedicados. Es decir, en su lista de bancos veréis bancos para llegar a cualquiera de sus voces, incluidas las de juegos de batería. Veréis también bancos para llegar a sus ‘performances’. Pero también veréis bancos para seleccionar una posición en la lista de favoritos.

SysEx como alternativa a Program Change y Bank Select

No sería yo si no aprovecho para sacar a relucir los mensajes SysEx. Frente a todo el tema de bancos y programas, otra alternativa, que a veces es útil pero suele ser complicada para la mayoría de los usuarios, es usar mensajes de sistema exclusivos (SysEx) para hacer ese cambio entre unos y otros sonidos.

Si sabéis trabajar con sysex, tiene alguna posible ventaja. En particular, si tenéis dos o más sintes asociados a un mismo canal MIDI, la llegada de un cambio de banco/programa afectaría a ambos. Con el uso de mensajes sysex es posible dirigirse en particular a cada uno de esos sintes, aunque compartan canal MIDI, y elegir individualmente sonidos, sin que cambien ‘en bloque’. Desde luego podríais sencillamente duplicar la información MIDI y separarla en otras pistas/canales para que cada sinte, pero si al final se trata de que toque exactamente lo mismo hay algunas ventajas en no duplicar sólo por razón de la selección de sonidos: sacar las mismas notas (y mensajes de pitch bend, y de controles, etc.) por dos canales está duplicando la ocupación del cable MIDI, es más fácil que se llene. Además evitamos tener que editar por duplicado cada vez que queramos corregir alguna nota o realizar cualquier cambio.

Pablo Fernández-Cid
EL AUTOR

Pablo no puede callar cuando se habla de tecnologías audio/música. Doctor en teleco. Ha creado diversos dispositivos hard y soft y realizado programaciones para músicos y audiovisuales. Toca ocasionalmente en grupo por Madrid (teclados, claro).

¿Te gustó este artículo?
10
Comentarios

Regístrate o para poder comentar