…esto no es un subtítulo…
2021-08-18
Tengo un Behringer TD-3, que es un clónico del Roland TB-303, el sintetizador de bajo que se convirtió en el instrumento por excelencia del sonido acid gracias a su peculiar sonido. Es posible transferir secuencias al TD-3 desde un ordenador con la ayuda de un programa propietario, pero eso no me interesa. Tengo una pequeña colección de secuencias y lo que quiero es anotarlas en tarjetitas para luego poder sacar una tarjeta al azar y programar el secuenciador a mano. Con este fin, analicé los ficheros con las secuencias y deduje información suficiente para poder transcribir los ficheros de patrones. Para comprender los resultados, veamos primero cómo se programa a mano el secuenciador.
El secuenciador del TB-303 y el TD-3, que es un clónico del original, trabaja con secuencias de 1 a 16 pasos. Cada paso dura una semicorchea, así que el patrón más largo posible dura los típicos 4 tiempos de un compás de 4 por 4.
El primer paso de la programación del secuenciador consiste en indicar el número de pasos de la secuencia y si la secuencia es de tripletes (que es algo que tiene su importancia a la hora de sincronizar el secuenciador con una señal externa).
Tras dar esto, hay que dar información de tiempo e información de tono:
Mientras que a cada paso de la secuencia le corresponde un dato de tiempo (nueva semicorchea, prolongación o silencio), los datos de altura y articulación forman una cola que va consumiéndose con cada nueva semicorchea.
El fichero de secuencia comienza con una cabecera de 36 octetos. Tras la cabecera, comienzan los datos, que son una sucesión de 55 palabras de 16 bits. Cada una de estas palabras de 16 bits tiene en realidad solamente 8 bits útiles: los 4 bits más significativos son los 4 bits menos significativos del primer octeto y los 4 bits menos significativos son los 4 bits menos significativos del segundo octeto. De forma un poco más gráfica, podemos decir que la palabra (en binario)
0000b7b6b5b4 0000b3b2b1b0
codifica el número (también en binario)
b7b6b5b4b3b2b1b0.
Numeremos las palabras de 0 a 54.
Las palabras 0 a 15 forman la sucesión de alturas. Aunque hay 16 palabras de altura, solamente se consumirán, empezando por la 0, una a una por cada nueva semicorchea de la secuencia. Los valores numéricos de las alturas van en orden consecutivo por semitonos desde el 12 para el do1 (la menor altura) hasta el 47 para el si3 y, por algún motivo, el número 176 corresponde al do4 (la mayor altura).
Las palabras 16 a 31 forman la sucesión de acentos. Aunque hay 16 palabras de acento, solamente se consumirán, empezando por la palabra 16, una a una por cada nueva semicorchea de la secuencia. El valor 1 indica que la nota tiene acento y el valor 0 indica que no lo está.
Las palabras 32 a 47 forman la sucesión de slides. Aunque hay 16 palabras de slide, solamente se consumirán, empezando por la 32, una a una por cada nueva semicorchea de la secuencia. El valor 1 indica que hay slide entre esta nota y la siguiente y el valor 0 indica que no lo hay.
La palabra 48 indica, si vale 1, que la secuencia es de tripletes; si el valor es 0, la secuencia no es de tripletes.
La palabra 49 contiene el número de pasos de la secuencia: de 1 a 16.
Las palabras 51 y 52 son un conjunto de bits que indica las semicorcheas y las ligaduras. Escritas en binario, quedarían así:
x7x6x5x4x3x2x1x0 x15x14x13x12x11x10x9x8.
Nótese el orden little-endian, opuesto al orden big-endian con el que construimos el valor numérico de las palabras en primer lugar.
Las palabras 53 y 54 son un conjunto de bits que indica los silencios. Escritas en binario, quedarían así:
y7y6y5y4y3y2y1y0 y15y14y13y12y11y10y9y8.
Nótese de nuevo el orden little-endian, opuesto al orden big-endian con el que construimos el valor numérico de las palabras en primer lugar.
Si numeramos los pasos de 0 a 15, el paso n depende de los bits xn, yn de esta manera:
Partamos del volcado hexadecimal de una secuencia:
00000000: 2398 5476 0000 0008 0054 0044 002d 0033
00000010: 0000 000a 0031 002e 0033 002e 0037 0000
00000020: 0070 0000 000C 0108 0b00 0204 010f 0108
00000030: 0108 0108 0108 0108 0108 0108 0108 0108
00000040: 0108 0108 0000 0000 0001 0000 0000 0000
00000050: 0000 0000 0000 0000 0000 0000 0000 0000
00000060: 0000 0000 0001 0000 0000 0000 0000 0000
00000070: 0000 0000 0000 0000 0000 0000 0000 0000
00000080: 0000 0000 0001 000c 0000 070f 000b 0304
00000090: 0009
Veamos primero las alturas. Reemplacemos con puntos todo lo que no nos interesa. Las alturas están aquí:
00000000: .... .... .... .... .... .... .... ....
00000010: .... .... .... .... .... .... .... ....
00000020: .... .... 000C 0108 0b00 0204 010f 0108
00000030: 0108 0108 0108 0108 0108 0108 0108 0108
00000040: 0108 0108 .... .... .... .... .... ....
00000050: .... .... .... .... .... .... .... ....
00000060: .... .... .... .... .... .... .... ....
00000070: .... .... .... .... .... .... .... ....
00000080: .... .... .... .... .... .... .... ....
00000090: ....
La primera palabra de altura, 000C
, codifica un número
12, es decir, el do1 o un do del teclado con modificador
para bajar octava. La siguiente, 0108
, codifica un
número 24, es decir, el do2 o un do del teclado sin
modificador de octava. Así podemos seguir palabra por palabra para
conocer las alturas.
Sigamos con los acentos. Reemplacemos con puntos todo lo que no nos interesa. Los acentos están aquí:
00000000: .... .... .... .... .... .... .... ....
00000010: .... .... .... .... .... .... .... ....
00000020: .... .... .... .... .... .... .... ....
00000030: .... .... .... .... .... .... .... ....
00000040: .... .... 0000 0000 0001 0000 0000 0000
00000050: 0000 0000 0000 0000 0000 0000 0000 0000
00000060: 0000 0000 .... .... .... .... .... ....
00000070: .... .... .... .... .... .... .... ....
00000080: .... .... .... .... .... .... .... ....
00000090: ....
Por lo tanto, la primera nota no tiene acento, la segunda tampoco, la tercera sí tiene acento…
Sigamos con los slides. Reemplacemos con puntos todo lo que no nos interesa. Los slides están aquí:
00000000: .... .... .... .... .... .... .... ....
00000010: .... .... .... .... .... .... .... ....
00000020: .... .... .... .... .... .... .... ....
00000030: .... .... .... .... .... .... .... ....
00000040: .... .... .... .... .... .... .... ....
00000050: .... .... .... .... .... .... .... ....
00000060: .... .... 0001 0000 0000 0000 0000 0000
00000070: 0000 0000 0000 0000 0000 0000 0000 0000
00000080: 0000 0000 .... .... .... .... .... ....
00000090: ....
Por lo tanto, la primera nota tiene slide, la segunda no lo tiene, la tercera tampoco lo tiene…
Sigamos con el modo de tripletes. Reemplacemos con puntos todo lo que no nos interesa. El modo de tripletes está aquí:
00000000: .... .... .... .... .... .... .... ....
00000010: .... .... .... .... .... .... .... ....
00000020: .... .... .... .... .... .... .... ....
00000030: .... .... .... .... .... .... .... ....
00000040: .... .... .... .... .... .... .... ....
00000050: .... .... .... .... .... .... .... ....
00000060: .... .... .... .... .... .... .... ....
00000070: .... .... .... .... .... .... .... ....
00000080: .... 0001 .... .... .... .... .... ....
00000090: ....
Esto indica que la secuencia es de tripletes.
Sigamos con la duración de la secuencia. Reemplacemos con puntos todo lo que no nos interesa. La longitud de la secuencia está aquí:
00000000: .... .... .... .... .... .... .... ....
00000010: .... .... .... .... .... .... .... ....
00000020: .... .... .... .... .... .... .... ....
00000030: .... .... .... .... .... .... .... ....
00000040: .... .... .... .... .... .... .... ....
00000050: .... .... .... .... .... .... .... ....
00000060: .... .... .... .... .... .... .... ....
00000070: .... .... .... .... .... .... .... ....
00000080: .... .... 000c .... .... .... .... ....
00000090: ....
Eso codifica el número 12: la secuencia es de 12 pasos.
Terminemos con los datos de tiempo. Reemplacemos con puntos todo lo que no nos interesa. Los datos de tiempo están aquí:
00000000: .... .... .... .... .... .... .... ....
00000010: .... .... .... .... .... .... .... ....
00000020: .... .... .... .... .... .... .... ....
00000030: .... .... .... .... .... .... .... ....
00000040: .... .... .... .... .... .... .... ....
00000050: .... .... .... .... .... .... .... ....
00000060: .... .... .... .... .... .... .... ....
00000070: .... .... .... .... .... .... .... ....
00000080: .... .... .... .... .... 070f 000b 0304
00000090: 0009
Por lo tanto, los bits son los siguientes:
x7x6x5x4x3x2x1x0 x15x14x13x12x11x10x9x8 = 01111111 00001011;
y7y6y5y4y3y2y1y0 y15y14y13y12y11y10y9y8 = 00110100 00001001.
De esto se deduce que el primer paso es una nueva semicorchea (x0 = 1, y0 = 0), el segundo paso es otra nueva semicorchea (x1 = 1, y0 = 0), el tercer paso es un silencio (y2 = 1)…
La secuencia consiste en lo siguiente:
Quizá es un poco sosa, pero resulta útil para ilustrar cómo leer el fichero de secuencia.
Categorías: Informática
Permalink: https://sgcg.es/articulos/2021/08/18/formato-de-las-secuencias-del-td-3/