Sintetizadores

SysEx (IV): Módulos multitímbricos (2)

Acceso a la serie completa de 5 tutoriales dedicados a MIDI SysEx.

Continuamos la presentación sobre SysEx en módulos multitímbricos que nos está permitiendo avanzar en aspectos detallados de este tipo de mensajes MIDI. Nos basamos como ejemplo en el SonicCell de Roland, aunque los conceptos, estrategias, problemas y soluciones son aplicables a otros muchos modelos y fabricantes y completan una perspectiva detallada de la gestión de SysEx MIDI para el control de sintes y equipos en vivo. 

 

CheckSum en los mensajes SysEx

En la parte III mencionamos la cuestión de los Checksum en los mensajes SysEx y algunos habéis pedido que entre en más detalle.

Se trata de un byte que acompaña a los datos del SysEx para poder comprobar si ha habido errores en la transmisión (en cuyo caso se descarta el mensaje, no se atiende). No todos los fabricantes hacen uso de este tipo de comprobaciones (personalmente me parece bastante innecesario, puesto que MIDI es muy robusto si se respetan las longitudes máximas de cable). En el caso de Roland (que es lo que estoy usando en los ejemplos) sí aparece (salvo con modelos muy antiguos como el MKS50 que usamos en en anteriores entregas ).

El CheckSum se calcula combinando los valores de los bytes del mensaje SysEx. En el receptor de los mensajes se vuelve a calcular el CheckSum y si no coincide con el recibido es porque se ha producido un error. Entrar en mayor detalle técnico sobre su definición no tiene sentido aquí: normalmente no lo necesitaréis puesto que de nada sirve saber cómo se calcula si luego vuestros controladores no llevan implementado ese cálculo. Es decir: dependemos de que nuestros controladores ya lleven incorporada la posibilidad de generar CheckSum.

Hay que recalcar también que no hay una norma definida sobre cómo calcular el CheckSum y de hecho diferentes fabricantes han optado por distintas soluciones, aunque generalmente se concentra en dos tipos (para entendidos: soluciones tipo XOR y soluciones basadas en complemento a 2). Por ello no debe extrañaros que en los controladores veáis que os dejan escoger entre dos (o a veces más) tipos de cálculo de Checksum.

Además hay fabricantes que extienden el cálculo del CheckSum al mensaje completo (incluido el F0 de arranque de SysEx), otros (como Roland) sólo sobre una parte del mensaje. De forma que una de las cosas que necesitamos saber ‘leer’ en el manual del equipo y llevar a nuestro controlador es esa: dónde empieza a calcularse y dónde acaba, así como en qué posición vamos a insertar el byte de CheckSum (generalmente se inserta al final de la ristra de bytes ‘protegidos’ por el checksum). Como siempre voy a ilustrarlo con un ejemplo: Roland sólo extiende el cálculo del Checksum sobre los bytes de dirección y valor, algo así (usando el ejemplo de los mensajes del SonicCell):

Aquí tenéis un ejemplo (teclado controlador Roland A800Pro) de cómo se configura esto. Las instrucciones de este controlador nos indican que tenemos que escribir SS (Start Sum) en donde queramos que se inicie el cálculo del checksum, y S1 o S2 en la posición donde debe aparecer el valor calculado para el checksum (S1 y S2 se refieren a sendos tipos de cálculo del checksum). Quedaría así (DT era la forma de indicar en ese controlador la posición donde ha de ir el dato):


Los NovationRemote, Roland A800Pro, y TB MIDI Stuff para iPad que vengo usando para ilustrar esta serie cuentan con opciones para definir CheckSums que contemplan los formatos habituales. Hay también ese par de formatos en Novation, y tres en TB MIDI Stuff. Pero los básicos y más empleados son esos dos, con lo que es raro echar en falta otros (de hecho yo nunca he tenido que usar el tercer tipo que añade TB MIDI Stuff -para los hipertécnicos: basado en complemento a uno en vez de complemento a dos-).

Recordatorio

Recuerdo aquí este gráfico que ya presentábamos en la parte III para que no tengáis que volver continuamente a ella. Es una visión ‘conceptual’ del mapa de memoria del SonicCell y nos interesa especialmente el área verde.

 

Os recuerdo también la tabla que en la parte III denominaba ‘índice’ de la memoria del Sonic Cell (y que es la primera de toda una colección de tablas que forman la descripción del mapa de memoria en el manual): 

Vamos a ‘tonear’ los sonidos

En la parte III vimos ejemplos de parámetros que estaban en la sección ‘System’. Vamos ahora con la parte relativa a Tones, Patches y Performances, la más interesante. Si recordáis la arquitectura de este módulo, hasta 4 Tones se reúnen en un Patch, y hasta 16 Patches en una Performance multitímbrica. Cada Patch o Performance contiene también la programación correspondiente a las unidades de efecto que usa.

El mapa de memoria es la clave para localizar el parámetro que deseamos modificar. Hay que ser muy organizado en recorrer por orden las tablas y subtablas necesarias, naciendo desde este ‘índice’ y saltando paso a paso hasta llegar al parámetro deseado, lo vemos con un ejemplo.

Pensemos primero en el modo monotímbrico (el modo Patch). La dirección en el mapa de la memoria ‘temporal’ en la que está el Patch que se usa en este modo es 1F 00 0000 (lo vemos en el ‘índice’). En esa dirección es donde arranca toda la memoria en la que se albergan los parámetros del Patch ‘en uso’.Como podemos esperar, un Patch tiene una estructura que se detalla en tablas posteriores. Concretamente la tabla ‘Patch’:

Vemos como un Patch reúne determinados ajustes propios (Patch Common y Patch TMT) y contiene la definición de los hasta 4 Tones que puede usar el Patch y de los ajustes adecuados para los efectos que han de usarse en ese Patch (MFX, Chorus, Reverb). 

El detalle de esas secciones está en nuevas subtablas. Por ejemplo en la referida a ‘Patch Common’ encontraremos el volumen, octava, afinación, legato/ portamento, mono/poly, etc. así como un juego de lo que más adelante llamaré ‘parámetros macro’ (y que serán muy útiles para retocar de un solo golpe los cuatro Tones que componen el Patch). También es aquí donde residen las asignaciones y mapeos de controladores (las clásicas matrices de modulación que permiten encaminar el aftertouch o la rueda hacia donde nos interese). Generalmente serán ajustes que no modificaremos en directo.

Continuando en orden, las subsecciones MFX, Chorus y Reverb son las que contienen los parámetros para sendas unidades de efecto que se usamos con ese Patch. Por ejemplo, si al tocar un patch de órgano quisiéramos tener control del Leslie en potenciómetros y pulsadores externos, deberíamos interesarnos por el detalle de PatchCommon MFX (que es donde estará o podríamos colocar el Leslie, y tendríamos acceso a su veintena de parámetros -lo veremos más adelante-).

Patch TMT es una sección que no se tocará generalmente en directo, así que no entro en ella (contiene la estructura con la que se van a combinar los 4 Tones: si van a combinar sus filtros en serie o en paralelo, y cosas por el estilo).

Y finalmente aparecen los espacios reservados para los 4 Tones del Patch. Un Tone está compuesto, en esencia, de:

  • Oscilador  (aquí llamado WG, wave generator) con su propia envolvente (Pitch ENV).
  • Filtro multimodo (TVF, time variable filter) con su propia envolvente (TVF ENV).
  • Amplificador variable (TVA, time variable amplifier) con su propia envolvente (TVA ENV).
  • 2 LFOs programables (en infinidad de maneras, incluso con una ‘secuencia’ definida por pasos).
  • y otros muchos elementos y detalles en los que ni paramos.

En total aproximadamente unos 200 parámetros. El detalle de lo que hay en un Tone se describe en la tabla ‘Patch Tone’ (reproduzco sólo una parte mínima de ella):

(...etc...)

(...etc...)

Vamos ahora a crear mensajes para actuar sobre estos parámetros de los ‘Tone’ que forman parte de un Patch.

Ejemplos de mensajes SysEx para los Tone

Podemos ir recopilando estas direcciones base y ‘offsets’ para obtener la dirección definitiva de cada parámetro y así poder crear el mensaje SysEx oportuno (repasa la parte III si no recuerdas la estructura de los mensajes SysEx del SonicCell).

En la tabla ‘índice’ veíamos:

  • 1F 00 0000 Dirección ‘base’ del patch ‘en uso’

En la tabla ‘Patch’ veíamos:

  • --  00 20 00 Offset (dentro del patch) para el patchtone 1
  • --  00 22 00 Offset (dentro del patch) para el patchtone 2
  • --  00 24 00 Offset (dentro del patch) para el patchtone 3
  • --  00 26 00 Offset (dentro del patch) para el patchtone 4

En la tabla ‘PatchTone’ veíamos:

  • --  --  00 00  Offset (dentro delpatchtone) para el Tonelevel (volumen)
  • --  --  00 48  Offset (dentro delpatchtone) para el TVF CutoffFrequency (frecuencia de corte)

Necesito ‘agrupar’ todas esas direcciones y offsets. Por ejemplo, si quiero poder gobernar con 4 faders la mezcla (el nivel) de los cuatro tones que componen un sonido, puedo usar estos mensajes (repasa la parte III si no recuerdas qué son Dev, Val y CSum):

(Para el Tone1)          F0    41    Dev     00  00  25    12     1F  00  20  00     Val    Csum     F7
(Para el Tone2)          F0    41    Dev     00  00  25    12     1F  00  22  00     Val    Csum     F7
(Para el Tone3)          F0    41    Dev     00  00  25    12     1F  00  24  00     Val    Csum     F7
(Para el Tone4)          F0    41    Dev     00  00  25    12     1F  00  26  00     Val    Csum     F7

Con esos 4 faders (o con un control X-Y) podría controlar la combinación de los 4 tones (lo cual nos recuerda a lo que se comercializó en su día como ‘síntesis vectorial’). Os muestro en vídeo un control XY desde un iPad(con TB MIDI Stuff) usado para gobernar precisamente estos cuatro parámetros. En el eje X se controla el nivel del Tone 1 (con recorrido 0 a 127) y de Tone3 (con recorrido 127 a 0, para que sea complementario) y en el eje Y se hace lo propio con Tone2 y Tone 4.

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

Si quiero poder gobernar el filtro, y dado que en un Patch hay 4 Tones, usaría (fijaos que sólo cambia en el mensaje la dirección)

         F0    41    dev     00  00  25    12     1F  00  20  49     Val    Csum     F7
         F0    41    dev     00  00  25    12     1F  00  22  49     Val    Csum     F7
         F0    41    dev     00  00  25    12     1F  00  24  49     Val    Csum     F7
         F0    41    dev     00  00  25    12     1F  00  26  49     Val    Csum     F7

Ahora que ya sabemos cómo interpretar toda esta maraña de códigos, espero que os parezca un poco más sencillo. Se trata de saber localizar el parámetro deseado, obtener su dirección, y llevarla al formato de mensaje SysEx que nuestro equipo use.

No soy un pulpo: los parámetros ‘macro’

Pero, pensemos un momento. Para gobernar la frecuencia de corte en un Patch ¿tengo que ser capaz de mover 4 controles a la vez? ¡Pero sí sólo tengo dos manos!
El caso práctico anterior es arquetípico. Tengo un patch y quiero controlar el ‘brillo’ a través de la frecuencia de corte del filtro. Pero hay 4 Tones en un Patch. ¿A cuál de los cuatro voy a tocar la frecuencia de corte?

Usar cuatro potenciómetros me da un control enorme, pero quizá no necesito ni quiero tanto, depende del objetivo. Puede ser interesante si uso los 4 Tones para disponer de 4 elementos de sonido como si fueran cuatro sintes superpuestos que aún quiero gobernar individualmente (si lo uso como un ‘stack’ de cuatro sintes). Pero muchas veces no quiero tanto, sólo deseo ajustar el brillo global (y mover 4 pots para eso es demasiado).

Una posibilidad que se nos puede ocurrir es que un solo fader envíe los cuatro mensajes. Pero hay dos problemas:

  1. Si usáis un Remote, un A800Pro o en general casi cualquier superficie de control, sólo os deja especificar un mensaje por cada control (no cuatro). Si usáis soluciones ‘software’ como TB MIDI Stuff para iPad eso no es un problema (puede enviar tantos mensajes combinados como deseéis desde cada control). Pero sigue existiendo el otro problema:
  2. Si usáis un único control para ajustar las cuatro frecuencias de corte, vais a ajustar los cuatro Tones al mismo valor, y eso seguramente no es lo correcto (cada Tone tenía el filtro abierto o cerrado en distinta medida, y usar este control único haría que adopten los cuatro la misma frecuencia de corte, con lo que alteramos el sonido de forma no deseada)

Afortunadamente hay una solución. Dentro de los parámetros de un Patch están disponibles los parámetros detallados de sus 4 Tones, pero también mencionamos una tabla ‘PatchCommon’. Allí, entre otras cosas, encontraremos unas especies de ‘macros’ para los ajustes más frecuentes (como frecuencia de corte, resonancia, ataque, decay, sustain, release,…). Cuando modifico esos parámetros ‘macro’ lo que harán es gobernar simultánemente los correspondientes parámetros en los 4 Tones a la vez (lo veremos en seguida con un vídeo).

Si os fijáis bien, estos parámetros ‘macro’ no se definen como un valor ‘absoluto’ sino como un ‘offset’: al actuar sobre un parámetro ‘macro’ lo que haremos es sumar o restar (mover hacia arriba o hacia abajo) cada uno de correspondientes parámetros en los 4 tones a la vez. Pero no se trata de ajustar un valor concreto e idéntico en ellos, sino de desplazar el valor ‘central’ que existía originalmente en cada Tone del Patch.

Lo podemos ver en este vídeo:

¿Quién nos iba a decir que el SonicCell podría hacer estos sonidos ‘atmospherics’ en constante evolución, verdad? Pues podéis conseguir exactamente lo mismo con casi cualquier módulo/sinte que sea GM o en general multitímbrico. Todo es cuestión de imaginación y de SysEx.

Los mensajes para el control individual de la frecuencia de corte de cada Tone ya los hemos presentado antes. El mensaje para el control ‘simultáneo’ de los 4 (a partir de las posibilidades que ofrece ‘PatchCommon’) es:

F0    41    dev     00  00  25    12     1F  00  00  22     Val    Csum     F7

Vemos, una vez más, como se trata de entender bien la estructura genérica del mensaje y saber obtener las direcciones de los parámetros deseados. Conseguir que el primer parámetro nos funcione puede llevar algo de tiempo, pero los demás son pan comido.

Parámetros absolutos y relativos (0/127 versus -64/63)

Fijaos en el ejemplo que acabamos de mencionar. El parámetro ‘Frecuencia de corte’ del filtro de un Tone tenía un recorrido 0 a 127, y el valor especifica el valor absoluto de la frecuencia de corte (0 para filtro enteramente cerrado y 127 para enteramente abierto, en el caso de un paso bajo tradicional).

(en ‘Patch Tone’)    00   48       0aaa aaaa          TVF Cutoff  Frequency            (0-127)

Sin embargo el parámetro ‘macro’ que mencionamos había en ‘Patch Common’ es un parámetro que realiza un ajuste ‘relativo’, modifica (hacia arriba o hacia abajo) el valor que estuviera ajustado en el Patch como frecuencia de corte ‘inicial’ en cada uno de los 4 Tones de ese sonido. Y podéis ver en la tabla ‘PatchCommon’ que los valores que admite son descritos de dos maneras: 1 a 127 y -63 a +63

(en ‘Patch Common’)    00   22       0aaa aaaa          Cutoff  Offset                  (1-127)    -63 - +63

¿Cómo se ve esto a la hora de programar los controladores? En algunos casos los controladores ofrecen escoger un rango 0-127 o -64/63: se trata sólo de cómo mostrarán en su propia pantalla el valor. En realidad los valores que viajan por el cable siguen siendo bytes comprendidos entre 00000000 y 01111111. El que los interpretemos nosotros de una u otra forma (como si esos 128 valores posibles recorrieran el rango 0 a 127 o el rango -64 a 63) no los cambia. Es sólo una conveniencia nuestra para entenderlos mejor.

Recuperemos un ejemplo más sencillo que usamos ya en la primera entrega: el mensaje Universal SysEx para Master Coarse Tune (que desplaza +/-24 semitonos la afinación). En los Novation Remote se puede especificar para los controles el uso de un rango -64/+63 o bien 0/127, sin embargo en el Roland A8000Pro sólo veremos 0/127. Pero no importa: con cualquiera de ellos podemos crear el mensaje. 

Aquí os ofrezco el ajuste para ese ‘Master Coarse Tune’ en Remote y en A800Pro (para los valores máximo y mínimo en A800Pro debéis recordar que 28h es 40 decimal, y que 58h es 88 decimal, o más sencillo aún, debéis sumar y restar 24 respecto a 64, dado que 64 decimal es el valor que en la escala 0..127 corresponde al ‘centro’ o ‘cero’ de la escala -64..63).

Otro ejemplo (ahora con un mensaje específico de SonicCell y no con mensajes SysEx universales). En la tabla Patch Common uno de los parámetros es este:

00   11       0aaa aaaa          Patch Coarse Tune             (16-112)    -48 - +48

Como podéis suponer se trata de poder cambiar +/- 48 semitonos la afinación ‘gruesa’. La información del manual es fácil de entender: nos dice (directamente, sin que tengamos nosotros que hacer los cálculos) que podemos usar los valores 16 a 112 para recorrer el intervalo -48 a +48 semitonos. En el Remote especificaríamos formato -64/63 y pondríamos mínimo y máximo -48 y +48. En el A800Pro, dado que siempre especificamos en formato 0/127, usaríamos los valores mínimo y máximo 16 y 112 (que corresponden a 64-48 y 64+48).

En definitiva, se sigue la regla de que el valor 64 (01000000 en binario) se convierte en el 0 cuando debemos interpretar el byte como si tuviera signo. Las primeras veces puede que os rasquéis un poco la cabeza hasta entenderlo y que tengáis que hacer algunas pruebas hasta conseguir que os funcione, pero no es tan difícil si repasáis estos ejemplos que os he dado.

Pulsadores, selectores de valores y botones inc/dec

Muchas veces existen parámetros que no se definen por un rango numérico continuo sino por un conjunto discreto de opciones. Es el típico caso de parámetros que ajustamos no con pots y faders sino con pulsadores o selectores. Por ejemplo el tipo de onda en un LFO. En el SonicCell hay nada menos que 13 formas de onda posibles. ¿Cómo represento eso en mi controlador?

Para que un control tenga este tipo de comportamiento nos basta poder indicar su valor máximo y mínimo (0 y 12 en este caso). Si se trata de un fader o pot  ese ajuste hará que en realidad en un recorrido completo sólo envíe 13 posibles mensajes. En cierta medida, hemos convertido el fader o pot en un ‘selector’ (salvo que no notaremos la ‘detención’ en cada una de esas 13 posiciones). Otra alternativa sería contar con sendos botones para cada una de las opciones (haría cómoda e inmediata la selección, pero ocuparíamos un montón de botones para ello).
Pero hay otra opción: en los controladores podemos especificar un ‘rango’ para un botón, y hacer que con cada pulsación se acuda al ‘siguiente’ valor. Para una selección de forma de onda no es mala opción  y esos son el tipo de ajustes que veremos a nuestro alcance en los sistemas de control.

Esta es la descripción de ese parámetro en la tabla ‘Part Tone’ y la forma de representarlo en Remote y A800Pro (el mensaje SysEx no os lo pongo, os queda como ejercicio):

Que no os preocupe el que la tabla diga que el formato del byte de datos es 000aaaa (sencillamente sucede que como no pasa del valor 12 no llega a usar los bits altos).

Cuando el control en vez de un pot o fader es un pulsador, podremos generalmente configurar (tal como estáis viendo) el tipo de comportamiento deseado. Por ejemplo en el Remote: un botón que sólo envíe el mensaje cuando sea pulsado (‘Normal’), o que envíe un mensaje al ser pulsado y otro al soltarlo (‘Momentary’), o un botón que cada vez que se pulsa conmuta entre dos valores  (‘Toggle’) o un botón que cada vez que se pulsa pasa al ‘siguiente’ valor de un rango (‘Step’).
Con el A800Pro tenemos opciones equivalentes en el desplegable ‘Button Mode’.

Próxima (y definitivamente última) entrega

Aunque pensaba haber hecho una serie a 4 partes, finalmente será necesaria una quinta. Esa entrega (ahora sí, última) ya está lista, así que se publicará en breve. En ella se atienden:

- Control de las unidades de efecto
- Valores con más de 7 bits (más allá del 0-127)
- Gestión de combinaciones multitímbricas (performances)
- Usos de SysEx con las partes dedicadas a batería y percusión (generalmente la parte ‘10’)

Estoy convencido de que especialmente la parte de control de efectos y de control de los mapas de batería/percusión os va a dejar deseosos de poneros manos a la obra sobre vuestros equipos en cuanto la leáis, pueden conseguirse cosas muy atractivas. Os espero allí. 

Etiquetas: Tutorial SysEx
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?
27
Comentarios
  • #1 por Mister Carrington el 25/03/2013
    Gracias de nuevo por los artículos. Esperamos ya esa quinta parte... provisional, claro.

    Salu2
  • #2 por pablofcid el 25/03/2013
    Ja, ja. Espero de verdad que la 5ª sea la última, más que nada porque quiero ir escribiendo de alguna otra cosa. Ya retomaremos esto de los SysEx y otras posibilidades (en relación con secuenciadores, DAWs, etc.) pero más adelante. Así además damos tiempo a que todo el que quiera se lo trabaje un poco y se ponga al día con esto de SysEx.
    De todas formas, ya os anticipo que los ejemplos de uso y posibilidades que os voy a dar en la 5ª entrega son muuuuyyy atractivos.
    2
  • #3 por Poeta el 25/03/2013
    Muy buen articulo, lo sigo con mucho interes...

    Pablo, no te has planteado hacer un libro sobre el midi tocandolo en tema en profundidad...

    Seria muy bueno, porque la bibliografia que hay es un poco antigua, y lo que puede valer la pena esta en ingles, y no se dignan en traducirla al castellano...

    Seria interesante, Ediciones Hispasonic...

    Gracias por tu iniciativa y dedicación...

    :grin:
  • #4 por PedroAntonio el 25/03/2013
    Que pasote.

    Gracias!!!
  • #5 por pablofcid el 25/03/2013
    #3
    Buena idea, pero tal como anda de pirateo el mundo, no sé, no sé.
    En todo caso sí es cierto que la marca 'Hispa' tiene mucho recorrido y viene desarrollándose con mucho acierto.
    Gracias.
    1
  • #6 por JLC el 25/03/2013
    muchísimas gracias
  • #7 por Magluss el 25/03/2013
    Uauuuu !! aún voy leyendo-trabajando los anteriores; I y II ...el III leyendo y este ahora !!!
    Es un gusto todo este trabajo que estás ofreciendo y tan detallado.
    Bien que en breve tengo unos dias de semana midi...digo santa y vendrá muy bien para dar el tiempo y dedicación que merece para luego darle un uso más amplio. Algo trabajo ya con SysEx. pero cada vez que profundizo y con lo que nos das ... más aprendo. Graciassss !!!!
  • #8 por pablofcid el 25/03/2013
    #7
    Eso, eso. Ya tienes impuesta tu 'penitencia' para la semana santa. De verdad merece la pena que lo estudiéis. Se le saca un partido enorme si se le hecha un poco de imaginación y creatividad.
    1
  • #9 por Rod el 25/03/2013
    muchísimas gracias por la aclaración sobre el checksum , menudos artículos te elaboras , todo esto es para tenerlo siempre a mano , ya solo nos falta como bien mencionas arriba el uso de los sysex en en secuenciadores y lo habrás dejado listo esta hecho todo un fenómeno :grin: :teclado:
  • #10 por BlahBlah el 25/03/2013
    Un uso muy inteligente de la programación sysex. Enhorabuena por el artículo.
  • #11 por dawson el 25/03/2013
    buen artículo y gracias al autor por el trabajo
  • #12 por parker25 el 26/03/2013
    muchisimas gracias
  • #13 por anhell el 26/03/2013
    A-L-U-C-I-N-A-N-T-E!!!! Menuda clase maestra de Sysex, inolvidable. Ahora nadie tiene excusa para exprimir al máximo esos módulos con poco control manual.

    Gracias Pablo.

    PD: Vaya semana santa me voy a pegar. Oh yeah!!!
  • #14 por neomad el 28/03/2013
    Un monstruo, un genio. Ademas de gran persona, un conocedor del tema como pocos. Aupa Pablo !! gracias !
    Saludos desde donde tu sabes !
  • #15 por pablofcid el 29/03/2013
    Pues ya tenéis la quita y última. Feliz SSanta.
  • #16 por pablofcid el 29/03/2013
    Y gracias a vosotros por vuestros comentarios y valoración, que animan a seguir.
    1
  • #17 por mwstudios el 29/03/2013
    Fantástico artículo. Enhorabuena.
  • #18 por Fernando Ledesma Morales el 06/04/2013
    Hola, a todos, pablo felicitarte por los artículos, me has dejado claras muchas cosas que tenía en el aire desde hace muchos años.

    Al grano tengo un problemilla que no encuentro como resolver en relación al midi y los cc, en cubase quiero automatizar el parámetro del Juno 1, Cutoff, p.ej.
    en el editor midi en la pista de controladores, cambio de velocity y me situo en el cc número 16 que previamente he añadido a la lista por defecto, pinto una senoidal, pero no hace nada en el juno, no cambia el cutoff, por supuesto el juno tiene los System Exclusive en On.
    El caso es que si pongo Main Volume, el cc7, si funciona, pero no con los otros.
    Otra cosa es que si uso el editor de CTRLR.org del juno funciona perfectamente, pero lo que quiero usar es el Auto lfo de cubase, para automatizar los cc que quiera.

    Me falta configurar algo en cubase?????

    , recuerdo que en el pasado lo hacía de la manera descrita antes pero no hay forma de que funcione.
    Un abrazo y gracias por adelantado.
  • #19 por pablofcid el 07/04/2013
    No tengo el manual del alfa juno 1. Pero ¿estás seguro de que el controlador 16 actúa sobre el cutoff? Si tienes o sabes una web donde esté el manual, pásamelo, lo miro y te cuento.

    Si con los mensajes CCs no puedes alcanzar lo que deseas, siempre podrías por SysEx. Yo con el Juno 106 es lo que hacía. No recuerdo (pero puedo equivocarme) que respondiera a CCs (salvo a los muy típicos como rueda de modulación y demás). Pero sí hacía uso de los SysEx.

    Te puede interesar esta página si no te apañas con el sysex por tí solo para el Juno 1 (y el 106, MKS50, etc.)
    http://www.vintagesynth.com/roland/sysex.php

    Dime si te puedo ayudar en algo más.
  • #20 por Fernando Ledesma Morales el 08/04/2013
    Gracias por la pronta respuesta, la verdad es que no estoy seguro de que sea el 16, tomé ese valor de la tabla de midi del final del manual, pero creo que no se corresponde con el cc, sino con el número de parámetro, de los 35 que tiene el juno, al igual que el mks50,

    creo que me he confundido pensando que era el número de cc, pero creo que no tiene nada que ver, quería asignar un lfo sincronizado al cutoff del Juno 1 con el cubase, básicamente si consiguiera un lfo por sysex via midi funcionaría lo que estoy buscando, conoces alguno o alguien hispasonic conoce alguno????

    un abrazo y saludos a todos.
  • #21 por pablofcid el 08/04/2013
    Eso es una de las cosas que yo hago con sysex. Lo de mover valores a ritmo
    (o no). En cubase móntate un mixermap y usa un fader para generar el sysex que necesites. Así puedes moverlo según lo sientas y te pida el cuerpo.
    Puedes también mater sysex 'a ciegas' en el event edit.
    Como son mensajes largos no los metas justo al beat, hazlo un poco antes o después de donde tengan las notas cuantizadas su aparición, porque si no te las puede desplazar y arruinas la posición de las notas.

    Supongo que pillas la idea y si no, consulta de nuevo
  • #22 por pablofcid el 08/04/2013
    #20
    Fernando: te cuento lo que tienes que hacer (en realidad es lo mismo que contaba en el artículo para el MKS50, así que estúdialo de nuevo).
    En tu caso, para el Juno (si puedes responde a este mensaje y danos a todos el enlace de los manuales en internet, por si a alguien más le interesa cuando lea esto):


    Asegúrate de tener el parámetro EXCL a ON en el Juno y mira bien en qué canal está respondiendo el Juno (lo necesitarás)

    El mensaje para mover un único parámetro es de este tipo (revisa lo que conté del MKS50, son primos hermanos).
    F0 41 36 0n 23 20 01 pp vv F7 (todo en hexadecimal, no hay ni checksum ni nada especial)

    n es el número de canal, pero ojo: el canal MIDI 1 es n=0, el canal 2 es n=1, etc. hasta llegar a canal MIDI 16 que es n = 0F

    pp es el número del parámetro que quieres modificar. Tomando el ejemplo de lo que decías tú (el cutoff del filtro) en la tabla del manual se vé que es el parámetro 16, pero como esa lista viene en decimal lo tienes que poner en el mensaje sysex como pp=10 (que es el valor hexadecimal correspondiente a 16 decimal). En ese parámetro el valor (lo ves en la tabla) va de 0 a 127.
    Tal como ya te he dicho esa tabla es para la construcción de mensajes SysEx y NO puedes pretender usar esos números como números de meros CCs, no sirve. Necesitas construir el SysEx.

    Si no te apañas con lo de sysex para otros parámetros , revisa todo metódicamente, no es tan complejo una vez que resuelves un par de casos. Pero si ni con esas, te puede valer este truco:

    En principio con el param EXLC a ON, cuando muevas algún parámetro en pantalla del Juno saldrá por MIDI OUT un mensaje sysex adecuado. Podrías grabarlo en tu secuenciador preferido (o usar un MIDI Monitor) para verlo y así sabes cómo es su estructura y contenido.

    Además (esto es muy útil) cuando EXCL está ON, al seleccionar el sonido sale su volcado por MIDI OUT en SysEx (permite grabar la programación del sonido que vayas a usar en el secuenciador al comienzo de la canción y así no andas pendiente de tener cargados los sonidos para cada tema)

    Ánimo y a por ello, que seguro que lo sacas y empiezas a disfrutar tu juno de otra forma.
  • #23 por RaulMX el 22/04/2013
    Wow que super tutorial para entender los mensaje SysEx, acabo de verlo y esta muy bien explicado, se va a favoritos. Muchas Gracias!
  • #24 por pablofcid el 22/04/2013
    No dejes de ver las otras partes.
    Mira en http://www.hispasonic.com/pablofcid/articulos
  • #25 por el 02/09/2015
    Esto del Macro me suena... No es lo mismo que dijiste para actuaciones el vivo y crear un unico control gobernando la afinacion global?