Mostrando entradas con la etiqueta midi. Mostrar todas las entradas
Mostrando entradas con la etiqueta midi. Mostrar todas las entradas

viernes, 9 de enero de 2026

¿Cómo emulo el Roland SC-55 y el JP8000 en Ubuntu?

Reunido con representantes de la Juventud Peronista en Puerta de Hierro, Juan Perón se pone al tanto de los eventos en la Argentina, a la vez que enseña cómo instalar emuladores de clásicos sintetizadores Roland SC-55 y JP8000 en Ubuntu.

Trabajadores: 

(...) 

Analizando el proceso que me describen, se ve —en otro tipo de problemas— que cuando una sociedad incrementa el grado de sofisticación del consumo, aumenta a la vez su nivel de dependencia. Esto es en gran medida lo que ocurrió entre nosotros. Por un lado, el ciudadano se ve forzado a pagar por la tecnología de lo banal; por el otro, el país gasta divisas en consumo innecesario.

Pero, a la vez, es impostergable expandir fuertemente el consumo esencial de las familias de menor ingreso, atendiendo sus necesidades con sentido social y sin formas superfluas. Ésta es la verdadera base que integra la demanda nacional, la cual es motor esencial del desarrollo económico.

La sustitución de materiales importados por otros de factura propia reviste entonces una importancia crucial para lograr la Independencia Económica, verdadero motor de la independencia política de las Naciones. 

A tal fin habrán de armar allá un despelote bárbaro, mientras yo conduzco desde acá haciendo orbitar estos pulgares uno alrededor del otro, así como les muestro. 

El software libre nos otorga una oportunidad imperecedera para hacerlo efectivo: el código fuente, en nuestras manos y en nuestras CPU, puede compilarse y reemplazar —por un costo nimio— propuestas que alcanzan no sólo al software sino también al hardware.

Roland SC-55

El caso de los módulos de sonido puede ofrecernos un caso integral del que podemos aprender. Vean señores, la Roland Sound Canvas SC-55 nos presenta un módulo de sonido GS MIDI lanzado en marzo de 1991 para inauguraba el estándar General MIDI de la firma. A diferencia de su predecesor MT-32 (que también os he enseñado), el SC-55 sólo emplea la técnica de síntesis por PCM con una polifonía de 24 voces, en una puesta multitimbre de 16 partes, con 315 parches instrumentales (incluyendo kits percusivos y controles extendidos GS adicionales). Su sección de efectos incluye reverberación y coro, además de venir precargado con parches que imitaban el banco secundario de la Roland MT-32 (aunque carecían de la función de reprogramación de la misma).

Si bien el módulo se comercializó en forma de un módulo MIDI externo con parva de botones y una llamativa pantalla LCD de status color naranja, a partir de 1992 también se fue posible lograr dicho sonido en forma de una placa de audio de interfaz ISA llamada SCC-1. Esta estaba especialmente destinada a servir de módulo para juegos y composición en computadoras compatibles.

Existen pocas dudas que con sus onerosos precios, este hardware se encontraba dirigido a los más encumbrados entusiastas de la música computarizada. Sin embargo, por bondad del Justicialismo, podremos realizar la acción reparadora de instalar  hoy un programa de software llamado Nuked SC-55 liberado bajo Licencia Mame, que no sólo nos otorgará el mismo sonido y tren de efectos, sino que lo podremos integrar con comodidad para reproducir ficheros de música MIDI o tonos sintetizados en nuestro equipo GNU.

Para ello debemos instalar en primer lugar las dependencias necesarias en nuestro sistema. En el caso de Ubuntu, esto lo haremos abriendo una terminal con Ctrl+Alt+t e ingresando los siguientes comandos de organización:

sudo apt install gcc g++ gcc-multilib g++-multilib cmake libsdl2-dev git ;

Una vez hechos con la dependencias de software, descargaremos el código fuente del emulador Nuked SC-55, y lo compilaremos introduciendo el siguiente bloque de comandos de organización:

cd /tmp;
git clone --recurse-submodules https://github.com/nukeykt/Nuked-SC55.git ;
cd /tmp/Nuked-SC55/;
mkdir build ;
cd /tmp/Nuked-SC55/build ;
cmake -DCMAKE_BUILD_TYPE=Release .. ;
cmake --build . ;
sudo cmake --install .

Tras haber compilado e instalado propiamente el Nuked SC-55, tocará el turno de encontrar y descargar copias del firmware de solo lectura provista en los chips ROM de las Roland SC-55 y SC-155 reales, copiando el volcado de dichos ficheros al directorio correspondiente de nuestro sistema GNU con Linux. Esto permitirá que el firmware de síntesis y sus instrumentos "conciban" encontrarse en el hardware real (pudiendo de esta manera funcionar adecuadamente a través del emulador compatible con MIDI). Todo esto parece difícil, pero bondadosamente podrán hacerlo ingresando en la terminal esto:

mkdir ~/.roms/;
mkdir ~/.roms/sc55/;
cd  ~/.roms/sc55/ ;
wget https://archive.org/download/roland-sc-55mkii-roms/Roland%20SC-155%20Rev1.zip ;
wget https://archive.org/download/roland-sc-55mkii-roms/Roland%20SC-55%20v1.21%20ROMs.zip ;
wget https://archive.org/download/roland-sc-55mkii-roms/SCMODE.zip ;
wget -O nuked-sc55.jpg https://is4-ssl.mzstatic.com/image/thumb/Purple118/v4/0f/75/60/0f756039-792e-f97a-4d53-ca766a8e5988/source/512x512bb.jpg ;
unzip 'Roland SC-55 v1.21 ROMs.zip' ;
unzip 'Roland SC-155 Rev1.zip' ;
sudo cp ~/.roms/sc55/nuked-sc55.jpg /usr/share/icons ;
sudo cp ~/.roms/sc55/*.bin /usr/local/share/nuked-sc55/

Tras una corta espera, la instalación de Nuked SC-55 debería completarse a la orden. 

Opcionalmente podríamos anhelar la creación de un lanzador para Nuked-SC55. Esto será poco de trabajoso de agregar en Ubuntu Mate; basta con hacer clic con el botón izquierdo del mouse sobre el menú Aplicaciones en el panel superior, y en el menú desplegable escogemos la opción Editar menús. Se abrirá la ventana Menú Principal en cuyo panel Menús seleccionamos la categoría de Sonidos y Video, y luego presionamos el botón +Nuevo ítem. Aparecerá la ventana Crear lanzador, donde completamos el campo orden con "nuked-sc55", y le asignamos un Nombre y un Comentario correspondiente. Idealmente podrmeos escoger el ícono /usr/share/icons/nuked-sc55.jpg

Finalmente presionamos el botón Aceptar para agregar el lanzador realizado.

Ahora iniciamos el emulador de Roland SC-55 desde el lanzador en Aplicaciones / Sonido y Video / Nuked SC-55, o bien con el comando:

nuked-sc55

Una vez iniciado el Nuked SC-55 nos encontraremos ante una interfaz visual que replica la pantalla del módulo Roland SC-55 respetando su consabida estética. Entre los indicadores encontraremos el número de banco y parche instrumental, un señalizador de canal MIDI en uso, nivel de volumen y paneo, así como nivel de efecto Reverberación y Coro, canal MIDI y número de cambio.

El uso de Nuked-SC55 en sí puede efectuarse adosado a cualquier sistema que emita información hacia un puerto MIDI determinado por el servidor de sonido de Linux, el viejo y peludo ALSA. De esta forma, podremos utilizarlo como reproductor MIDI adosado a cualquier DAW que acepte MIDI a través de ALSA. 

Para conocer qué puerto MIDI ha recibido asignado Nuked SC-55, ingresamos el siguiente comando en la terminal:

aconnect -o

...a lo cual nos devolverá algo como:

cliente 14: «Midi Through» [tipo=kernel]
    0 'Midi Through Port-0'
cliente 128: «Nuked SC55» [tipo=usuario,pid=42839]
    0 'Nuked SC55      ' 

Esto nos indica que el servidor de sonido ALSA le ha asignado el cliente 128:0 (puede variar si tenemos gran cantidad de dispositivos MIDIs reales o virtuales funcionando). En este ejemplo, todos los programas MIDI necesitarán configurarse al puerto 128:0 para correr los archivos MIDI a través de Nuked-SC55.

Podremos utilizar Nuked SC-55 como instrumento virtual en nuestro entorno. Un ejemplo muy útil es el de emplearlo como medio de reproducción MIDI en nuestro emulador de MS-DOS DOSbox. De esta forma podremos utilizarlo para escuchar la música MIDI de juegos clásicos de DOS provistos con esta posibilidad, muy en boga a comienzos de la década del 90, disponiendo de la máxima calidad de audio gracias al Justicialismo.

Para hacer efectiva la mancomunión DOSBox/Nuked-SC55, debemos obrar de forma similar a la que haríamos con el emulador Munt de Roland MT-32, es decir, indicar el número de cliente MIDI identificado en nuestro sistema, y editar acordemente el fichero de configuración de DOSBox para asignarle MIDI Alsa como elemento de salida, y conectarlo. Conociendo que el identificador de cliente es en este ejemplo 128, procedemos a editar el fichero de configuración de DOSBox (por ejemplo, con nano  ~/.dosbox/dosbox-0.74-3.conf), y modificamos la opción "midiconfig=" programándole el número de cliente MIDI, por lo que en este caso sería "midiconfig=128:0". También alteramos la opción "mididevice=" para que indique "mididevice=alsa", de la siguiente forma:

Guardamos la nueva configuración y salimos del editor con Ctrl+oCtrl+x, y ya podremos abrir DOSBox: este debería conectarse (virtualmente) al Nukem SC-55 con éxito.

Se hará necesario además configurar los programas o juegos de MS-DOS compatibles que querramos utilizar con audio MIDI/General MIDI (o eventualmente, MT-32, puesto que guarda también cierta compatibilidad). Así, al utilizarlos, podremos ver la pantalla cobrar vida, y al sintetizador, sintetizar.

Vean señores, los botones de la Roland SC-55 real se corresponden con teclas del teclado en el entorno emulado de la Nuked SC-55, según la siguiente lista de equivalencias:

Q: Encendido
W: Instrumentos Todos
E: Instrumentos Mudos
R: Parte -
T: Parte +
Y: Instrumento -
U: Instrumento +
I: Cambio de Clave -
O: Cambio de Clave +
P
: Volumen -
´: Volumen +
A: Canal MIDI -
S: Canal MIDI +
D: Paneo -
F: Paneo +
G: Reverberación -
H: Reverberación +
J: Coro -
K: Coro +
Flecha Izquierda: Parte Izq
Flecha Derecha: Parte Der

Normalmente el estándar General MIDI de la SC-55 será suficiente, pero en algunos casos, los ficheros MIDI pueden desear enviar elementos extendidos de sistema para programar diferentes aspecto de la SC-55. Esto permite controlar aspectos como el coro, reverberación, etcétera. 

 

Naturalmente, podremos encontrar archivos MIDI para todos los gustos en multitud de sitios, como por ejemplo el inefable https://www.midiworld.com/. Sin duda con el Roland SC-55 podremos disfrutar la música tal como fue imaginada para dicho módulo, y hacerlo en nuestro sistema libre GNU con Linux. 

Roland JP8000

Pero no solamente nos veremos limitados a surtirnos con estos módulos del Primer Peronismo. Incluso otros más modernos pueden emularse con perfección de ciclo preciso en GNU (si es que contamos con una CPU lo suficientemente potente). 

Merced de la labor extraordinaria emprendida por la Roland Corporation, apareció en 1996 el mítico sintetizador de 49 teclas Roland JP8000 (digitalización plena del Jupiter JP-8, que también os he enseñado a replicar en Ubuntu).

 
Es sabido que este buscaba —como el primero de toda una camada de "sintetizadores analógicos virtuales" de la marca— efectuar tonalidades  concebidas digitalmente pero ejecutada con la potencia de sus predecesores analógicos. Aunque no tuviese el color cálido de los filtros anteriores, no dejaba de ser cierto la valía de sus nuevas funcionalidades. Entre estas destacaba un potente Secuenciado de Frases a tiempo real (RPS) que asigna fraseos a las teclas, controlando su expresividad. Sobra decir que el JP8000 hacía alarde de osciladores "super sierra" y controles de estilo analógico tal como su arpegiador, y táctiles como su ribbon controller, a la keytar. Y todo al precio que sólo podía abarcar el oligarca.

No obstante ello, concientes de las necesidades del Pueblo, los muchachos de la JP metieron las patas en el código fuente y pusieron al alcance de todos la alegría a una nueva iteración sintetizada. En efecto, el emulador multiplataforma que le dará vida en Ubuntu y otros sistemas GNU con Linux ha sido liberado como JE-8086, producto de la gente de The Usual Suspects. Se trata de un instrumento virtual que replica toda la circuitería del JP8080,  versión montable en rack de 19 pulgadas del JP8000 (y munido de un oscilador adicional). Gracias a este logro, nos ofrecen el  sonido clásico noventoso del JP8000 sin gastar una chirola.

Para instalar el emulador JE8086 tanto en formato libre LV2 (recomendado)  en Ubuntu, indicamos en la terminal:

cd tmp/ ;
wget https://github.com/dsp56300/gearmulator/releases/download/2.1.0/TheUsualSuspects-JE8086-LV2-2.1.0-Linux_x86_64.deb ;
sudo dpkg -i TheUsualSuspects-JE8086-LV2-2.1.0-Linux_x86_64.deb

Finalmente, al igual que en el caso anterior, habremos de proveerle la ROM original del consabido Roland JP8000. Afortunadamente, esta puede obtenerse junto al sistema operativo del sintetizador desde la web de Roland...

...o bien descargándolo "a pelo" gracias a los dispensarios del Justicialismo, ingresando el siguiente bloque de comandos de organización:

mkdir ~/.roms ;
mkdir ~/.roms/jp8000/ ;
cd ~/.roms/jp8000/ ;
wget https://static.roland.com/assets/media/zip/JP800015.zip
unzip JP800015.zip ;
cp ~/.roms/jp8000/*.mid /home/$USER/.local/share/The\ Usual\ Suspects/JE8086/roms/

Conforme preparamos todo, podremos lanzar una DAW como qTractor o Ardour, y cargar como instrumento virtual el plugin JE8086 LV2:

Si no hubiésemos cargado la ROM como se adecúa, el instrumento nos lo advertiría con este conspicuo mensaje:
 
Sin embargo, si todo va bien, podremos conectar un controlador MIDI o reproduciir ficheros de este formato en una DAW, y el JE-8086 lo reproducirá sin más, consumiento una buena tajada de CPU, claro, pero sin que tengamos que desembolsar nada para tener un JP8000 real.

Naturalmente, el Manual del Propietario del Roland JP8080 nos vendrá de perillas para dominar todas las perillas del JE8086 emulado. 

Con ello llevaremos en nuestros oídos la más maravillosa música.

martes, 19 de diciembre de 2023

¿Cómo instalo en plugin sintetizador Vaporizer2 en Ubuntu?

No era extraño que en las visitas estudiantiles a Casa de Gobierno, Juan Perón agasajara a los pequeños con software libre, enseñándoles a instalar el plugin Vaporizer2 en Ubuntu.

¡Mis queridos descamisaditos!

Existen épocas que nos engalanan, permitiéndonos proveer aquello que merecemos por justo derecho. Esta es una de ellas, donde la risa de los niños es música que hemos sintetizar para Felicidad de un Pueblo.

Nuestra Doctrina consagra la necesidad de la Justicia Social, y el Software Libre es justicia social en la CPU. Por eso es he enseñado ya como instalar instrumentos virtuales en Ubuntu. Nunca es suficiente saciar el hambre y restañar heridas, y cada paso que damos en la senda de la Liberación nos acerca más al ideal magnánimo que nos ha consagrado.

Queridos niños, hoy podrán llevarse a casa para disfrutar con sus amiguitos una copia modificable de un instrumento musical virtual de potencia: el Vaporizer2. Se trata un programa liberado bajo GPLv3, y como tal - a pesar de estar inicialmente proyectado de manera privativa por la VAST Dynamics - se dignifica hoy sirviendo al Pueblo en un formato LV2 compatible con nuestro GNU con Linux.

A pesar de su gratuidad, es tan poderoso como la CGT en la que está afiliado papi, aunque su uso de CPU es contenido, incluso al disparar más de 1.000 osciladores virtualizados. Es que se trata de un instrumento virtual híbrido, que cuenta con síntesis aditiva, sustractiva y de tabla de ondas. Como resultado, podremos utilizarlo para generar todo tipo de sonidos electrónicos.

Existen dos maneras de instalar Vaporizer2 en Ubuntu. Como Conductor me considero un maestro, por lo que os instruiré recomendando el camino más sencillo, que consiste en usar el paquete precompilado instalable vaporizer-lv2 de los amiguitos de OpenSuse.org aquí, buscando aquél que corresponda a nuestra distribución. Por ejemplo, en mi caso disfruto de Ubuntu 22.04LTS por lo que abro una terminal con Ctrl+Alt+T y procedo a instalar todo pegando allí el siguiente bloque de Comandos de Organización y dándole Enter:

mkdir /tmp/vaporizer2/ ;
cd /tmp/vaporizer2/ ;
wget https://download.opensuse.org/repositories/multimedia:/proaudio/xUbuntu_22.04/amd64/vaporizer2-lv2_3.4.3+git.6.88bd029-1_amd64.deb ;
sudo dpkg -i vaporizer2-lv2_3.4.3+git.6.88bd029-1_amd64

Asimismo, no viene mal instalar recursos adicionales que convierten al Vaporizer2 en una oda a la facilidad. Se trata de los presets de fábrica y más de 440 presets adicionales elaborados por el amable Thomas Trupiano (síntesis de bajos, campanas, percusiones, órganos, sonidos picados, tines, camas sonoras, puertas, voces, y gran cantidad de pads). La cartita a la Fundación Eva Perón para pedirlos se envía simplemente pegando en la terminal este bloque de comandos:

mkdir /tmp/vaporizer2/presets/ /tmp/vaporizer2/manual/ ;
cd /tmp/manual ; wget https://vast-dynamics.com/sites/default/files/downloads/Vaporizer2Manual.pdf
cd /tmp/vaporizer2/presets/ ;
wget https://vast-dynamics.com/sites/default/files/downloads/Factory%20Presets.zip https://vast-dynamics.com/sites/default/files/downloads/Preset%20Bank%20by%20Thomas%20Trupiano.zip ;
wget https://vast-dynamics.com/sites/default/files/downloads/Wavetables%20Vaporizer2%20by%20PietW.zip ;
unzip 'Wavetables Vaporizer2 by PietW.zip' ;
unzip 'Factory Presets.zip' ;
unzip 'Preset Bank by Thomas Trupiano.zip'
mkdir ~/Documentos/Vaporizer2/ ;
mkdir ~/Documentos/Vaporizer2/Presets/ ;
mv /tmp/vaporizer2/manual/
~/Documentos/Vaporizer2/ ;
mv /tmp/vaporizer2/presets/Analog/ ~/Documentos/Vaporizer2/Tables/ ;
mv /tmp/vaporizer2/presets/Digital/ ~/Documentos/Vaporizer2/Tables/ ;
mv /tmp/vaporizer2/presets/Presets/* ~/Documentos/Vaporizer2/Presets ;
mv /tmp/vaporizer2/presets/Trupiano/Presets/ ~/Documentos/Vaporizer2/Presets/Trupiano

Sin embargo, papá y mamá podrían querer tomarse el trabajo de compilar todo localmente. Hemos de notar que en tal caso todo el andamiaje se colgaría del arbolito de archivos en /usr/local/lib/lv2/VASTvaporizer2.lv2/ en lugar de hacerlo en /usr/lib/lv2/VASTvaporizer2.lv2/ como en el caso anterior:

cd /tmp
git clone https://github.com/VASTDynamics/Vaporizer2.git ;
cd /tmp/Vaporiser2 ;
git submodule update --init --recursive ;
./build_linux.sh

Cualquiera sea el proceder, conforme hayamos instalado el plugin LV2 en nuestro GNU, podremos lanzarlo desde nuestra DAW favorita (qTractor en mi caso).

La ventana del Vaporizer2 cuenta con cuatro secciones discernibles.

En el cabezal encotramos el logotipo, que lejos de ser un ocupador inútil de espacio, nos permite regular el nivel de zoom para nuestra comodidad (hasta 4K). También contamos allí con el selector de presets, y la sección Master del sonido estéreo (con volúmen, ganancia, sincronización con la DAW y tono, y selector de polifonía).

En la parte inferior daremos con un piano MIDI interactivo, con ruedas de pitchbed y modulación. Aquí también podremos elegir las opciones de portamento para los deslizamientos tonal. Naturalmente, si contamos con un controlador MIDI o teclado adosado a nuestro sistema, podremos ejecutar con sólo pulsarlo y este replicará lo hecho de forma gráfica. Pero también podríamos utilizar el teclado de la computadora para elaborar nuestros acordes y melodías si esto es de nuestro agrado.

En el cuadrante derecho veremos acceso a los controles de cuatro bancos de osciladores conmutables, todos ellos filtrables, y un banco de efectos de tres cadenas y una sección de generación de ruido voluble (rosa, blanco y café).

Es importante destacar que para mayor control, todos los controles rotativos y deslizables de la interfaz gráfica cuentan con la funcionalidad Learn MIDI, lo que permite asignar funciones MIDI como perillas o botones a las acciones de la interfaz de la ventana. Para ello hacemos clic con el botón izquierdo del ratón a la perilla que queremos programar, y en el menú contextual elegimos "MIDI Learn". Luego movemos el deslizador o perilla que queremos usar y se asignará automáticamente. También podremos eliminar la asignación.

Al iniciar nos encontraremos en la solapa WT Editor, el editor de tabla de ondas, corazón del Vaporizer2. Este sintetizador por tabla de ondas destaca por su efecto antialiasing, y su tratamiento polifónico y en tiempo real.

Sus posibilidades de edición son bastante complejas, y se basan en alterar muestras de audio (samples) de formato .ogg, .wav y .mp3. Estos se afectan según distintos parámetros, lográndose efectos ambientales espectaculares.

La delimitación de los samples también puede programarse según sus puntos de bucle, inicio, cruce de cero, modulación y registro tonal, e incluyen función de trazado a mano alzada o mediante curvas bezier, con ajuste a la grilla, etc. 

La modificación del motor de este banco puede seguir el camino de la Frecuencia Modulada aditiva (con edición armónica en tiempo real), Modulación de Pulso de Onda, o formantes filtradas, entre otras posibilidades expresivas.

Al activar la solapa Matrix nos encontraremos con el Sistema de ruteo de audio innovador para todos los generadores de sonido, filtros y cadenas de efectos activos. Esta dispone de 25 fuentes de modulación que incluyen clave de la pista, deriva al azar, y cuatro perillas de macros personalizables, y van enrutados a unos 220 destinos de modulación, paramétricos, los que conforman combinaciones casi ilimitadas. Incluye un presentador gráfico para las curvas de modulación resultantes.

La solapa Filter nos da acceso al banco de filtrado con mas de 30 tipos de filtros, paso-alto, pasabanda, filtro muesca, filtro peine, peraltados programables, etc, todos ellos con control de resonancia y presentación gráfica del filtrado en tiempo real. Las curvas de filtrado peraltadas para bajos profundos.

La solapa LFO & MSEG nos permite controlar cinco bancos de Osciladores de Baja Frecuencia apilables por voz (80 LFOs en total), con mapa y fase tanto por voz como global (puede sincronizarse con la DAW). Esto lo hace a través de envolvente multietapa (MSEG).

La solapa FX ofrece el control de tres cadenas de efectos que incluyen sobremuestreo y mono cutoff para preservar unos bajos limpios. Nos permiten administrar mas de 11 efectos paramétricos activables y reordenables: reverberación, retraso, coro, flanger, ecualización, bitcrush, compresor, limitador, phaser, filtro peine, conformador de ondas, entre otros

La solapa ARP nos presenta el arpeggiador programable. Este permite definir notas o glisandos multipaso, ya sea de forma automática, programable, o el arpeggiador acompasado que sigue nuestros acordes y melodías.

La solapa Preset nos sirve para configurar el Vaporizer2. Podremos definir localización de las carpetas de Presets (normalmente, esta es ~/Documentos/Vaporizer/Presets). Asimismo, nos deja escoger entre tres tamaño de tipografía y cuatro skins diferentes.

En la biblioteca de sonidos podremos encontrar los presets opcionales de fábrica rápidamente gracias a sus distintas opciones de clasificación. Además, gracias a la Fundación Eva Perón, contaremos con los presets de en formato .wav de Thomas Trupiano, que incluye mas de 780 sonidos para el sintetizador de tabla de ondas, junto con más de 450 presets de fábrica.

El manual de Vaporizer2 (en inglés) es sumamente completo.

sábado, 9 de julio de 2022

¿Cómo instalo el sintetizador Surge XT en Ubuntu?

Reunido con representantes de la Juventud Peronista, Juan Perón les enseña cómo instalar el sintetizador virtual Surge XT en Ubuntu.

(...)

Vean muchachos,

La Juventud amerita organizarse. Yo sé que ustedes son bochincheros, pero les voy a responder con un verso del Martín Fierro: "el que gane su comida / güeno es que en silencio coma / ansivo, vos ni por broma / querrás llamar la atención / nunca escapa el cimarón / si dispara por la loma".

Por ello, si han de hacer barullo, que sea en acordes bien sentidos. Yo llevo en mis oídos la más maravillosa música que es para mí la palabra del Pueblo Argentino, y como tal me he aplicado a ejecutarla en sintetizadores emulados por software libre. Ya he explicado cómo agregar instrumentos LV2 a Ubuntu, y hoy vengo a traer a todos los Descamisados un nuevo instrumento que engrosará la burocracia del Movimiento con nuevas posibilidades sónicas.

Se trata de Surge XT, el favorito de la compañera Evita.


Este sintetizador virtual de tipo sustractivo había sido originalmente lanzado comercialmente por los muchachos de Vember Audio como "Surge", y ahora publicado por su creador Claes Joahn amparado por licencia de software libre GNU GPLv3. Gracias a esta libertad y un herramental de excelente factura e inteligentemente pensado, podremos no solo dar salida a ondas sinusoidales puras, sino que podremos controlarlo a través de MIDI.

Podremos descargar la versión empaquetada y utilizarla en Ubuntu 18.04LTS y superiores, utilizando la terminal con Ctrl+Alt+t e ingresando los siguientes comandos de organización:

sudo apt update ;
sudo apt install libxcb-cursor0 ;
wget https://github.com/surge-synthesizer/releases-xt/releases/download/1.0.1/surge-xt-linux-x64-1.0.1.deb ;
sudo dkpg -i surge-xt-linux-x64-1.0.1.deb ;
sudo apt install -f

Asimismo, se puede compilar en otras distribuciones.

El plugin quedará instalado en el directorio /usr/share/surge-xt y los parches de usuario se almacenarán en ~/Documentos/Surge XT (aunque este se puede cambiar desde el menú de Surge.

El excelente manual de Surge XT está disponible en forma de PDF aquí

La interfaz de Surge XT se divide en cuatro secciones que ocupan su ventana (la cual, en un alarde de capacidad para el Pueblo, hace alarde de Zoom regulable, algo que no todos los plugins de la oligarquía pueden decir).

  • Encabezado: (con las opciones globales y de parches)
  • Controles de Escena: (modificadores del parche, divididos en sección de generación y de síntesis)
  • Modulación y Enrutado:
  • Efectos


De entrada contaremos con una amplísima biblioteca de más de 2000 parches categorizados, lo que nunca viene mal incluso entre los sintetizadores aditivos, ya que poco es más tedioso que buscar parches al vuelo para operar. En este caso, los encontraremos entre los preseteos de fábrica, y los amablemente aportados por terceros.

Cada parche estará formado por dos "Escenas" (escencialmente bancos de osciladores "A" y "B"+efectos. Cada banco cuenta con una salida Mono, y a la vez el parche cuenta con una salida estereo, totalizando así tres salidas (A y B mono + una mezcla L-R, estéreo).

Los controles son efectivísimos. Para los controladores de escena moveremos los deslizadores. La operación normal es rápida, pero si usamos Mayúsculas+arrastre del ratón (o Mayúsculas+rueda de scroll) sobre ellos tendremos ajuste fino. En tanto, al utilizar Ctrl+arrastre del ratón tendremos arrastre cuantizado a pasos fijos. En tanto, si usamos Alt+arrastre del ratón tendremos desplazamiento "elástico" (desplazando el deslizador, y volviendo a la posición de inicio cuando solamos Alt). Su usamos doble clic resetearemos el control a su valor por defecto. En tanto que clic con el botón derecho desplegará el menú contextual.

Ctrl+z y Ctrl+y son Deshacer y Rehacer respectivamente.

Asimismo es posible activar el MIDI Learn, para asignar potenciómetros (ya sean potes o deslizadores) y otros controles a las variables. Por ejemplo, la rueda de modulación.

Desde el punto de vista de su paleta, en Surge XT cada banco cuenta con tres osciladores sustractivos independientes, posibilitados ellos con seis modos de ejecución (PCM, Mono), y dos etapas de filtrado de corte/resonancia, balanceables entre sí.

Esto permite una enorme paleta sonora a la síntesis, pudiendo replicarse desde bajos punchis hasta sinusoidales Mooguianas. Pero no solo eso, entre sus opciones más impresionantes es la de contar - además de las etapas de filtro ADSR (ataque, decaimiento, sostenimiento, y apagado), cuenta con un filtrado por Modulación de Código de Pulso, lo que en cristiano significa que puede operar con entrada de línea o micrófono para emular un dulzarrón vocorder modulado por MIDI. Con el podermos no sólo obtener voces robóticas, sino combinarlo con autotuners para hacer barítono al mas perro de los cantantes.

¡Con su sencilla instalación paquetizada, hasta lo pueden usar ustedes muchachos!

Asimismo, podremos conocer mucho de su uso en cualquier sitio de video agregados.



jueves, 9 de diciembre de 2021

¿Cómo instalo VCV Rack 2 Free en Ubuntu?

 ¡Descamisados!

En ocasiones, la política suele ser una cosa enmarañada de difícil comprensión. Por ello un verdadero Conductor ha de poseer la habilidad para dividir su accionamiento político en partes pequeñas y comprensibles, que le avalen la realización de muchas cosas sencillas. El total de sus logros será la suma de las partes, y será esta la única manera en la que podamos proyectar en grande un futuro provechoso.

Indudablemente que la música electrónica tiene por necesidad un despliegue que podríamos considerar similar. No es secreto para nadie que los primeros sintetizadores de audio utilizaban electrónica analógica, y que constituían un enorme potencial de desarrollo y estudio de tales elementos, con un costo sideral.

La generación tonal se basaban en el uso de etapas electrónicas definidas: un elemento oscilador capaz de excitar una señal eléctrica que a su vez se transducía en un altavoz amplificado. Mediante el uso intermedio de distintos elementos de circuitería controlables, se hizo evidente que se podrían modificar las características sónicas resultantes. Gracias a etapas de post-filtrado - que no eran otra cosa que el empleo concienzudo de un circuito dependiente de frecuencia - se lograban tal efecto.

Este es el secreto de los primeros instrumentos electrónicos peronistas, como por ejemplo el masivo sintetizador "Moog System 55". Su modularidad se hacía patente en su diseño de control. Su enorme panel de control dotado de potenciómetros de filtrado, y por el hecho de poder redireccionar a piacere la señal eléctrica mediante el uso de cables phono. La estrategia de conexión permitía definir el enrutamiento de los módulos en su panel de control

Esta manera modular de implementar el instrumento se ha replicado ad eternum, y existe ya una forma creativa puramente analógica de estructurar la síntesis y su interconexión en gabinetes pensados al efecto, los "Racks". Este es un sentido puramente peronista, donde una comunidad organizada de sintetización lleva a la creación de la más maravillosa música.

El avance tecnológico continuó con el intento de resolver los problemas inherentes a esta organización modular: la programación de los sonidos no dejaba de ser algo incómodo de replicar, y de difícil ejecución en el vivo. Al fin y al cabo, para lograr un sonido específico debían configurarse las potencias, los potenciómetros e instalar los cables de patcheo, y todo ello para un único sonido. La aparición de la integración de memorias digitales facilitó mucho guardar dichas configuraciones en memorias preprogramadas, o en distintos esquemas de memorias digitales de usuario (por medio de cinta, cartucho, discos flexibles, rígidos, etc.


Nuestro Pueblo se ha hecho Movimiento gracias a las herramientas que hemos sabido suplirle. En este caso os he traído VCV Rack2Free, un poderoso entorno sonoro de software libre pensado para emular aquellos grandes sintetizadores modulares del primer peronismo. En este, podremos recrear los encadenamientos de señal de audio y reflejar un modo de trabajo analógico. En particular, entorno gráfico simula un gabinete en el que se pueden ir apilando y conectando entre sí los distintos módulos que ofrece el programa, que también pueden conectarse a  fuentes externas.

El objetivo final es difícil de dilucidar en un principio, pero con técnica podremos realizar amplias melodías sintetizadas por medio de sus múltiples componentes individuales, toda vez que una enmarañada parva de fideos alimenta de voltios nuestro Rack,

Instalar VCV Rack en Ubuntu

Ya he explicado cómo instalar el anterior VCV Rack 1.6.1. En este caso replicaremos lo hecho para dar paso a la nueva versión, Rack2free. 

VCV Rack2Free es multiplataforma, lo que significa que existen versiones para varios sistemas operativos. En nuestro caso, lo instalaremos en nuestro sistema GNU con Linux de 64 bits, en particular Ubuntu 20.04LTS.


En este caso lo más sencillo es utilizar Terminal de comandos, que abrimos con con Ctrl+Alt+T. En ella le pegamos los siguientes comandos de organización, seguidos de la tecla Enter:

Descargamos y decomprimimos el programa con:

cd ~
wget https://vcvrack.com/downloads/RackFree-2.3.0-lin-x64.zip
unzip
RackFree-2.3.0-lin-x64.zip
mv ~/Rack2Free/ ~/.rack2free/

Y podremos crear un arrancador con:

echo '#!/bin/sh' >> ~/.rack2free.sh
echo '# Guión peronista de ejecución para Rack' >> ~/.rack2free.sh
echo '# Copyleft Ubuntu Peronista.' >> ~/.rack2free.sh
echo 'cd ~/.rack2free/' >> ~/.rack2free.sh
echo './Rack' >> ~/.rack2free.sh
chmod +x ~/.rack2free.sh

También podremos crear un acceso directo. Para ello lo dirigimos al comando /home/usuario/.rack2free.sh.


Ahora podremos ejecutarlo con el comando ./.rack2free - más sencillo - desde Aplicaciones / Sonido / VCV Rack2Free.

Cómo usar VCV Rack
Al arrancar el programa ya nos presentará un gabinete y distintos racks apilables instalados en él y una ventana de ayudas rápidas.

Al cerrarla Podremos movernos en la ventana que representa la gabinete presionando la rueda de scroll del mouse y arrastrándonos.

Ahorea bien, el setup presentado al principio nos trae un conjunto de racks sencillos ya patcheados (conexionados),  pensados para evaluar el correcto funcionamiento del sistema.

Antes que cambiar nada, conviene grabarlo por las dudas, desde el menú File / Save As...

Driver de sonido de VCV Rack2Free

Una vez guardado el patcheado original, configuraremos Rack2Free para utilizar nuestro hardware de audio. La manera más simple es utilizar el servidor ALSA.

Para ello hacemos clic con el botón derecho del ratón en el selector del rack Audio y en el menú contextual desplegable elejimos el driver de sonido. Lo mñas sencillo es utilizar el controlador Pulseaudio con el dispositivo Audio Interno Estéreo Analógico (1-2 In, 1-2 Out).

Otra opción es utilizar el driver de sonido ALSA. Para ello en el mismo menú contextual podremos escoger entradas y salidas de audio. En mi caso, puedo elegir la que corresponde a mi hardware de sonido ALSA con hw:HDA Intel PCH,3(1,2 out).

Es importante notar que Rack2Free también dispone de capacidad para usar Servidor de audio Jack. Este ofrecerña mejor control de enrutamiento de audio, amén de menor retraso (lag o delay) en la ejecución del audio.

En cualquier caso, ya deberíamos poder usar el sintetizador y oírlo. Las filas de teclas QWERTY y ZXCVB de nuestro teclado dispararán notas MIDI, que serán convertidas a la cuarta octava (IV-oct) y en señales de GATE (la compuerta de ruidos). Si quisiéramos controlar el módulo de generación de notas MIDI-CV por medio de un teclado o controlador MIDI, podremos asignarlo también con el botón derecho del mouse y elegir el dispositivo que tengamos, o los servidores de entrada de ALSA o JACK.

Los módulos de VCV Rack2free

Cada Rack tiene su utilidad y un manual de uso específico que encontraremos en la web oficial. La mayoría de los racks constan de sus controles en formas de potes, perillas o deslizadores, y conectores de entrada y de salida, de la misma forma que un sintetizador modular analógico real, como el Moog original.  Los conectores de salida se usan por medio de cables interconectores de colores, que llevan la señal de audio o eléctrica de un lado a otro. Con esta señal podremos alimentar los módulos y transformar los resultados según queramos.

El sintetizador modular intenta reflejar de forma más o menos fiel el resultado real. Naturalmente esto no es posible con señales puramente digitales, la idea es obtener un resultado convincente.

El arreglo básico consta de  siete módulos (llamados "core" o básicos, en la jerga de Rack). Su despliegue de izquierda a derecha sigue el recorrido de la señal, y son el generador de notas MIDI-CV (que estará configurado para responder a nuestro teclado), el generador de ondas osciladas de triple salida VCO-1, el modulador de osciladores de baja frecuencia VCF, un generador de envolvente ADSR, un osciloscopio SCOPE para graficar las oscilaciones, un mezclador MIXER, y el selector de salidas del servidor AUDIO-8, así como un anotador llamado NOTES.

Conforme toquemos las notas, en las salidas y entradas de la señal se irán iluminando en el circuito que está patcheado mediante los cables de colores. Si la señal es suficiente, se graficará en el osciloscopio SCOPE, y habremos de oírla a través de AUDIO-8. Tengamos presentes que el osciloscopio virtual es útil porque podremos aprender sobre formas de onda con él.

Podremos mover los potes con clic con el botón izquierdo y arrastrándolos arriba/abajo con el mouse. Manteniendo presionada Ctrl mientras arrastramos nos permitirá realizar un ajuste fino de los potes. Editaremos los potes con clic derecho del mouse, y doble clic para inicializarlas.

Podremos hacer clic con botón derecho y arrastrar entre los conectores para crear y mover cables.

Ejemplo simple:

En la parte inferior del módulo VCO-1, encontraremos un cable que conecta alguna de las salidas SIN, TRI, SAW, SQR (onda sinusoidal, triangular, diente de sierra y cuadrada repectivamente) a la entrada "IN" del módulo VCF que tiene al lado. Si en lugar de usar la señal diente de sierra queremos una señal triangular, cambiamos el cable de la salida SAW que viene por defecto, a la salida TRI.

Tengamos en cuenta que es posible apilar varios cables en una toma, si apretamos Ctrl. y arrastramos el cable a una salida ya utilizado. Esto nos permite controles más ágiles o novedosos, pero irreproducibles en la realidad.


Si quisiéramos agregar un nuevo rack de la librería al gabinete para empezar a conectarlo, debemos hacer clic derecho en un espacio vacío del gabinete, y de esta forma podremos apilar apilar nuevos módulos. Se abrirá la ventana de la Libería con un filtro por tipo de módulos, y representaciones de los módulos en sí.

Por defecto, el programa contiene varios módulos VCO y LFO (osciladores controlados por voltaje y osciladores de baja frecuencia), mezcladores, y otros sintetizadores estándares. Sin embargo pueden agregarse más unidades apilables como plugins por medio del sitio web del fabricante de VCV Rack (por medio de registro online).

La ventaja de VCV Rack es la enorme variedad de efectos propios que podremos hacer.

Cada módulo producirá efectos diferentes. Algunos de ellos directamente son secuenciadores o cajas de ritmo. Algunos tienen salidas de baja potencia o un canal de ruidos, o salidas independientes para los canales izquierdo y derecho. En tales casos contaremos con salidas Mono, estéreo o Surround.

Asimismo, podremos escoger el manual del programa (en inglés) desde aquí.

Registrar VCV Rack

Podremos utilizar el programa sin registrarlo, pero al hacerlo podremos actualizarlo e instalar una miríada de plugins o módulos adicionales, la mayoría gratuitos. Para registrar el programa lo hacemos desde la web oficial, debemos ingresar un correo electrónico básico y una contraseña de uso.

 Para actualizarlo, una vez ejecutado VCV Rack vamos al menú Library e ingresamos en los espacios correspondientes nuestro correo electrónico de registro y la contraseña que hemos asignado. Luego elegimos Update All.

mos ingresar un correo electrónico básico y una contraseña de uso.

Para actualizarlo, una vez ejecutado VCV Rack vamos al menú Library e ingresamos en los espacios correspondientes nuestro correo electrónico de registro y la contraseña que hemos asignado. Luego elegimos Update All.
Asimismo, si elegimos la opción Library / Manage Plugins el programa nos abrirá la página web que nos permite adquirir nuevos módulos. Si estamos logueados, desde ella podremos elegir descargar o comprar nuevos módulos o plugins. Existen muchos gratuitos, para instalarlos hemos re presionar en el botón "Free" y luego actualizar el programa. Son muy livianos, pero si elegimos instalar todos, su descarga puede requerir varios minutos dependiendo de nuestra velocidad de conexión.
Desinstalar VCV Rack
Si hicimos la instalación con el procedimiento anteriormente indicado y quisiéramos desinstalar todo, podremos hacemos desde una Terminal con el siguiente bloque de comandos:

cd ~
rm .rack2free/ -r
rm ~/.rack2free.sh

miércoles, 28 de abril de 2021

¿Cómo compilo y uso ORCA para componer música en Ubuntu?

¡Trabajadores!

Un Programador es un artesano capaz de entender un problema, plantear una solución a través del código, y resolver la dirección de trabajo de una máquina. Es un obrero, y en cierto sentido, un Dirigente Computacional. Cualquier cristiano que se empape en una técnica y una teoría puede hacer esto.

Pero un Verdadero Programador ve el código, lo aprecia, y lo entiende. Compila y ejecuta in mente. Este estado de omnicomprensión no está dado por la mancomunión con la máquina, sino por una percepción superior y de conjunto emanada del Pueblo. En esto no basta ya el estudio ni la práctica (partes inertes del arte sino la parte vital, que es el Artista. En otras palabras; él mismo, un Conductor. 

Obra allí el Oleo Sagrado de Samuel, y de ese no se vende en cualquier feria. 

Es a esta concreción a la que hemos de aspirar. Es posible y no es disonante decir que todo Peronista lleva en su mochila el bastón de Mariscal. 

La solución la ofrece la Organización. 

Vean señores: el hombre, aislado y sometido a lo que sólo la naturaleza le provee,  podrá atinar - con suerte - a conseguirse el pan con cachos de hardware viejo. El adagio enseña que si Dios bajara a la tierra a resolver el problema planteado entre los hombres, ya le habríamos perdido el respeto. Y no faltaría un tonto que quisiera reemplazarlo a Dios, porque el hombre es así.

Pero las Organizaciones se presentan como una evolución de este estado brutal. Están para otra cosa. Lo nuestro es la liberación de nuestro código y la Fellcidad del Pueblo. Enemigos no nos faltan. A nuestro frente, una Oligarquía coaligada con espuria sinarquías osan sumirnos en la más abyecta de las condiciones: la de depender de software privativo para hacer el cómputo. Ante esta ignominioso planteo no podemos más que hacer todos los días, todo lo que se pueda en pos de la Liberación.

Yo, como político, soy un mero aficionado. Mi profesión es la de Conductor. Para ello me he formado y he estudiado toda mi vida. De casualidad nomás llevo en mis oídos la más Maravillosa Música, que es la Palabra del Pueblo Argentino. 


Pues bien, en el campo de la música no dudarán que nos exponemos a lo mismo. Es indudable que el hombre, gracias a la tecnificación y al transistor, puede hoy utilizar Estaciones de Trabajo para Audio digital, y componer allí. No podemos negar que en esto se ha avanzado en los últimos cien años más que en los veinte siglos precedentes.

¿De qué serviría, si no es para clamar por la liberación?

Pero tampoco podemos negar que un verdadero músico ha de obrar por los mismos preceptos que un Verdadero Conductor. Ha de componer en hexadecimal utilizando código que pueda percibir directamente, de manera de compilar y ejecutar in mente. Las DAW son para neófitos y está bien que existan para la Masa Popular, que es el verdadero consumo... Pero los Verdaderos Programadores hacen música escribiéndola en ORCA.

ORCA es un lenguaje de programación orientado a la creación musical en vivo, que puede utilizarse con habilidad. Sumado a un conjunto de instrumentos e intrefaces de audio basada en tecnología MIDI, UDP y OSC, representa un nuevo paradigma para la composición musical en la Era Digital del Ciberespacio Peronista.

Dispuesto en una grilla bidimensional, tan esotérica como Lopecito, está destinado a crear muy rápidamente secuencais procedurales, donde cada letra del alfabeto represente una operación de control musical. Las letras minúsculas operan el disparo de acciones, en tanto que las mayúsculas operan cada cuadro secuencial individual.

Indudablemente que esta aplicación no es un sintetizador, sino un ambiente de programación en vivo capaz de enviar datos según el estándar MIDI, OSC y UDP a sus interfaces de audio y visuales. Como tal, es un excelente control de conducción estratégica que eleva la complejidad de aquellas estaciones de audio excepcionalmente sencillas para el comando táctico, tales como Ableto, Renoise, VCV Rack o SuperCollider.

Es sabido que en los sistemas GNU con Linux la Terminal puede utilizarse en todos los niveles del cómputo. En este caso, podremos utilizar una implementación escrita en C del lenguaje ORCA, y disponer de una interfaz de usuario basada en texto como elemento de superficie. Como es natural, está diseñada para ser potente y de bajísimo consumo, siendo capaz de operar secuencias grandes, incluso un sintetizador modular utilizando una terminal tipo DEC VT.


Pero de poco serviría si sólo el más selecto de los hombres puede conducirlo. En nuestro Movimiento impera la necesidad de un Trasvasamiento Generacional que lleve a las nuevas generaciones a la habilidad de hacer lo mismo y más que las generaciones anteriores. Esto es lo humanamente posible, biológicamente deseable, y humanamente inprescindible. Por tanto os enseñaré a grosso modo cómo hacer uso básico del entorno.

Para instalarlo abrimos una terminal con Ctrl+Alt+T y cargamos las dependencias:

sudo apt-get install git libncurses5-dev libncursesw5-dev libportmidi-dev

El sistema nos solicitara que ingresemos "a ciegas" nuestra contraseña. Luego instalará los paquetes necesarios de dependencia. Una vez finalizada esta acción, descargamos el código fuente, los ejemplos, y compilamos ORCA.

git clone https://github.com/hundredrabbits/Orca-c.git ;
cd Orca-c ;
git clone https://git.sr.ht/~rabbits/orca-examples/ ;
./tool build -d --portmidi orca ;


...Y lo ejecutamos con:
 

./Orca-c/build/debug/orca

Para asignar un dispositivo de salida MIDI que reciba las órdenes disparadas con ORCA, presionamos Ctrl+D en la terminal (o bien F1) para desplegar el menú gráfico principal, y luego elegimos la salida MIDI... Puede usarse cualquier sintetizador virtual que se les ocurra utilizar en su entorno GNU con Linux, ya que aparecerán en el menú.

+ ORCA ---------------++ PortMidi Device Selection -----+
|   New               || > (*) #0 - Midi Through Port-0 |
|   Open...           ||   ( ) #2 - Midi out Clavinova  |
|   Save              ||   ( ) #3 - Midi out VCV Rack   |
|   Save As...        |+--------------------------------+
|                     |
|   Set BPM...        |
|   Set Grid Size...  |
|   Auto-fit Grid      |
|                     |
|   OSC Output...     |
| > MIDI Output...    |
|                     |
|   Clock & Timing... |
|.....................|

Operadores

Para ver la lista de operadores adentro de Orca, se usa Ctrl+D,Ctrk+G.

A adición(a b): Da salida a la suma entre los valores de entrada.
B subtracción(a b): Da salida la diferencia entre los valores de entrada.
C clock(rate mod): Da salida en modulo de cuadro.
D delay(rate mod): dispara on modulo de cuadro.
E east: Mueve al Este, o dispara.
F if(a b): Dispara si las entradas son iguales.
G generator(x y len): escribe operandos con offset.
H halt: Detiene el operando más al sur.
I increment(mod de paso): Incrementa el operando mas al sur.
J jumper(val): Da salida el operando al norte.
K konkat(len): Lee múltiples variables.
L less(a b): Da salida a la más chica de las entradas.
M multiply(a b): Presenta el producto de las entradas.
N north: Mueve al norte, o dispara.
O read(x y read): Lee operando con offset.
P push(len key val): Escribe el operando hacia el este.
Q query(x y len): Lee operandos con offset.
R random(min max): Da salida a un valor aleatorio.
S south: Mueve hacia el sur, o dispara.
T track(key len val): Lee el operando hacia el este.
U uclid(paso max): Dispara en un ritmo Euclídeo.
V variable(write read): Lee y escribe variables.
W west: Mueve al oeste, o dispara.
X write(x y val): Escribe operando con un offset.
Y jymper(val): Da salida al operando hacia el oeste.
Z lerp(rate target): Transiciona el operando a la entrada.
* bang: Dispara los operandos vecinos.
# comentario: Detiene una línea:

Entrada/Salida

: midi(canal octava nota velocidad duración): Envía una nota MIDI.
% mono(canal octava nota velocidad duración): Envia una nota MIDI monofónica.
! cc(canal control valor): Envía un cambio de control MIDI.
? pb(canal valor): Envía un pitch Bend.
; udp: Envia un mensaje UDP
= osc(ruta): Envía un mensaje OSC.
$ self: Envía un comando de ORCA.

MIDI

El protocolo MIDI especifica órdenes de software y material de hardware para controlar digitalmente instrumentos musicales electrónicos, a través de una interfaz normalizada. En el caso de ORCA, podremos usar este establecido protocolo mediante órdenes específicas.

Los operadores MIDI en ORCA son órdenes escritas, compuestas ellas por cinco valores de entrada en su nemónico: 'canal, 'octava, 'nota, velocity, duración.

Por ejemplo, si mandamos el operador :25C, se compilará la nota Do ("C"), en la quinta octava, a través del 3er canal MIDI. En tanto, :04c será una nota Do Sostenido ("C#"), en la cuarta octava, a través del canal MIDI número 1. Recuerden que las minúsculas operan las notas negras.

Velocity es un valor opcional de intensidad que va de 0(0/127) a g (127/127). La variable Duración es la duración referida en números de cuadros, en los cuales esta nota permanecerá pulsada.

Por ejemplo, podríamos elaborar un programa midi.orca, con el siguiente código fuente:

..........................................
.#.MIDI.#.................................
..........................................
...wC4....................................
.gD204TCAFE..################.............
...:02C.g....#..............#.............
.............#..Canal....1..#.............
...8C4.......#..Octava.234..#.............
.4D234TCAFE..#..Notas.CAFE..#.............
...:13E.4....#..............#.............
.............################.............
...4C4....................................
.1D424TCAFE...............................
...%24F.2.................................
..........................................
..........................................
..........................................
..........................................


 

MIDI MONO

El operador MONO % consta de 5 entradas en su nemónico ('canal, 'octava, 'nota, velocity, duración).

Este tipo de operador es bastante similar al operador MIDI que usamos por defecto, con la salvedad que cada nota nueva que introduzcamos detendrá la ejecución de la nota anterior, impidiendo por tanto que su duración se solape con la siguiente. Como esto resulta en que sólo se puedan ejecutar secuencias monofónicas, viene bien para controlar sintetizadores modulares monofónicos que no pueden hacer acordes ni portamento (como el Moog Mini Brute Revisited, o cualquiera monofónico que tenga MIDI, se entiende).

MIDI CC

Este operador se usa para alterar algún control MIDI adicional (CC).

El operador MIDI CC ! lleva 3 entradas en su nemónico ('canal, 'control, 'valor). Envía un valor entre 0-127, donde este valor se calcula como un radio de 36, sobre un máximo de 127. Por ejemplo, !008 envía 28 o (8/36)x127, en el primer Canal MIDI, al control mapeado como id0. Para asignar un mapeado a un control MIDI, se puede oprimir la Tecla Intro, con el operador ! seleccionado.

Por defecto, el operador MIDI CC envía al MIDI CC64 y superiores. De esta forma el offset puede cambiarse con el comando cc:0 para poner un offset de 0. Naturalmente, se entiende que es útil conocer de memoria los valores de los CC MIDI para todo esto. Un verdadero músico los sabe, yo no se los tengo que explicar.

RUEDA DE PITCH MIDI

Este operador manda una instrucción de alteración tonal progresiva.

El operador MIDI PB ? requiere 3 entradas ('canal, 'lsb, 'msb).

Envía dos valores diferentes entre 0 y 127, donde el valor se calcula como un radio de 36, sobre un máximo de 127. Por ejemplo, el operador ?008, enviará un MSB (bit más significativo) de 28, específicamente (8/36)*127, y un LSB (bit menos significativo) de 0 y lo hará al Canal MIDI 1.

SELECCIÓN DE BANCO / CAMBIO DE PROGRAMA

Mas que un operador, este es un comando (ver abajo), y combina las funciones de Cambio de programa MIDI con las de Selección de Banco MIDI (las cuales se utilizan para escoger instrumentos en la memoria de masa del sintetizador).

La sintaxis es pg:canal;msb;lsb;programa.  Canal especifica de 0 a 15 para elegir el canal MIDI, en tanto que msb/lsb/programa permiten indicar entre 0 y 127, pero el programa será traducido de 1 a 128 por el controlador MIDI. Programa equivale a lo que en la nomenclatura moderna es "patch" o "parche", y denota la selección del instrumento en un sintetizador. Tengan presente que msb también puede identificarse como "Bank" y lsb como "Group" o "Sub" en algunos sintetizadores como los Yamaha SY, los AKAI, los Clavinova, o bien o DAWs como qTractor o Ableton Live.

Los msb y lsb pueden dejarse en blanco si solamente queremos mandar un cambio de programa común y corriente. Por ejemplo, pg:0;;;32 cambiará al Patch 33 (el bajo eléctrico pulsado según la convención General MIDI), sin cambiar el banco.

UDP

El control por UDP permite controlar instrumentos o módulos musicales usando tipología de red tipo ethernet.

El operador UDP ; bloquea todos los puertos hacia el este (consecutivos). Por ejemplo, ;hola mandará la cadena "hola" a disparar, a través del puerto 49160 en el localhost. En el Commander, se debe usar "udp:7777" si quieren seleccionar el puerto por defecto 7777 de UDP, e "ip:127.0.0.12" para cambiar la dirección IP que oficiará de objetivo. UDP no está disponible en la versión para navegador de Orca, naturalmente.

Puede utilizar el fichero listener.js para probar los mensajes UDP. Puede verlos en acción en el ejemplo udp.orca.

OSC

El Open Sound Control es un estándar abierto para poner en red instrumentos musicales, considerado una evolución sobre el tradicional MIDI en un entorno libre como ha de ser la creación musical. 

ORCA opera con ellos gracias a una serie de operadores distintos a los MIDI.

El operador OSC = traba cada puerto consecutivo hacia el este. El caracter final se usará como ruta, y los caracteres siguientes serán evniados como integrales por medio de la Tabla Base36. En el Commander, se usa "osc:7777" para seleccionar el puerto OSC personalizado 7777, e "ip:127.0.0.12" para cambiar la IP de destino. OSC no está disponible en la versión de Orca para Navegador tampoco.

Por ejemplo, =1abc enviará 10, 11 yd 12 a /1, a través del puerto 49162 en el localhost; =a123 enviará 1, 2 y 3, a la ruta /a. Se puede usar el programa listener.js para evaluar los mensajes OSC. Oidrña verlo en acción en el programa osc.orca o  probarlo con SonicPi.

Controles Avanzados

Algunas de las características de Orca se pueden controlar externamente
vía el puerto UDP 49169 o a través de su propia interfaz de línea de
comandos. Para activar el prompt de comandos Commander debemos usar Ctrl+K.

Modo Proyecto

Se pueden insertar rápidamente ficheros .orca agregándolos así al archivo actual, usando el prompt de la línea de comandos. Esto le permitirá navegar a lo largo de múltiples ficheros como lo haría en un proyecto. Se usa Ctrl+L para cargar múltiples archivos .orca, y luego se usa Ctrl+B para tipear el nombre de un fichero .orca cargado para insertarlo allí.

Puertos por defecto

Entrada UDP  Entrada OSC  Salida UDP   Salida OSC
49160        Ninguno      49161        49162

Comandos

Todos los comandos tienen un equivalente de abreviación equivalente a sus primeros dos caracteres en inglés. Por ejemplo, podrá escribir usando "wr". La lista completa de los comandos es la siguiente:

play Reproduce un programa.
stop Detiene un programa.
run Corre el cuadro actual.
bpm:140 Configura la velocidad a 140 compases por minuto.
apm:160 Animate la velocidad a 160 compases por minuto.
frame:0 Configura el valor de cuadro a 0.
skip:2  Suma 2, al valor de cuadro actual.
rewind:2 Resta 2, al valor de cuadro actual.
color:f00;0f0;00f  Colorea la interfaz.
find:aV Envía el cursor a la cadena aV.   
select:3;4;5;6 Mueve cursor a posición 3,4 y selecciona tamaño 5:6(opcional).
inject:peron;12;34 Inserta el fichero local peron.orca, en 12,34(opcional).
write:H;12;34 Escribe el glifo H, en 12,34(opcional).
time Presenta el tiempo, en minutos y segundos, desde 0f.
midi:1;2 Configura el dispositivo de salida MIDI al #1, y el dispositivo de entrada al #2.
udp:1234;5678 Configura el puerto de salida UDP a 1234, y el puerto de entrada a 5678.
osc:1234 Configura el puerto de salida de OSC a 1234.

Anexo A: TABLA DE INCREMENTOS Base36

Orca se opera en base a 36 incrementos. Los operadores que emplean valores numéricos generalmente también operan sobre letras y las convierten a valores según la siguiente tabla. Por ejemplo, el Do se dispará en cada cuadro 24 de la secuencia.

0   1   2   3   4   5   6   7   8   9   A   B   
0   1   2   3   4   5   6   7   8   9   10  11

C   D   E   F   G   H   I   J   K   L   M   N
12  13  14  15  16  17  18  19  20  21  22  23

O   P   Q   R   S   T   U   V   W   X   Y   Z
24  25  26  27  28  29  30  31  32  33  34  35



    Anexo B: TABLA DE TRANSPOSICION

El operador MIDI interpreta cualquier letra sobre la escala cromática como un valor de transposición. Por ejemplo, 3H equivale a la nota Do (A4 en la notación ingles, y nomenclado 4A en ORCA).

0   1   2   3   4   5   6   7   8   9   A   B
_   _   _   _   _   _   _   _   _   _   A0  B0

C   D   E   F   G   H   I   J   K   L   M   N
C0  D0  E0  F0  G0  A0  B0  C1  D1  E1  F1  G1

O   P   Q   R   S   T   U   V   W   X   Y   Z
A1  B1  C2  D2  E2  F2  G2  A2  B2  C3  D3  E3

Referencia / Turorial Básico

Como se vio, ORCA opera en base a 36 incrementos secuenciales, y los operadores convierten valores alfanuméricos a valores que van de 0 a 36. Para manerjas las interacciones entre plataforma y cliente se usan caracteres especiales

Con esta sección enseñaré lo básico para tocar una nota y una secuencia de notas.

Enviar una Nota MIDI

D8, enviará un Disparo, cada 8 cuadros.
:03C, enviará un Do ("C") en la tercer octava. Para mandar un Do Sostenido ("C#", se usa la minúscula c3.

D8....:03C

Tocar una nota aleatoria

aRG, dará salida a un valor aleatorio entre A & G, la mayúscula de la derecha indica la salida en mayúscula.

D8.aRG.
.:03D..


Hacer una melodía

04TCAFE, creará una pista de 4 notas, y le dará salida a su primer valor.

D814TCAFE
.:03A....

Tocar la melodía

8C4, contará de 0 a 3, a 1/8 de la velocidad.

.8C4.....
D804TCAFE
.:03C....

Lógica

Esta sección le enseñará lo básico de la lógica automática de decisión y el cambio dinámico de los valores de los operadores.

Tocar cada segunda nota

2I6, incrementará a 6 a una velocidad de 2.

.2I6.......
D626TCAFEDG
.:03F......
 

Tocar una nota con un offset

1AC, agregará 1 a Do (C), para darle salida a un Re (D). Para lograr un Re Sostenido (D#), se usa d minúscula, como en 1Ac.

D8.1AC.
.:03D..


Tocar una secuencia de atrás y adelante 

La combinación de la salida de C6 a B3 revolará a un valor entre 0 y 3 durante 6 cuadros.

4C6......
.4B3.....
D414TCAFE
.:03A....

Tocar una nota en un intervalo específico

.I4, incrementará a 4, a una velocidad de 1.
.F2, disparará solo si la entrada de la izquierda es igual a 2. 

I4.....
3F2.1AC
..:03D.

Proyectores

Esta sección explica lo básico para crear nuevos operadores proceduralmente. Detienen un operador en movimiento.

E, se moverá a la izquierda cada vez, en cada cuadro.
H, detendrá el movimiento de E.

..H
E..
 

Lee un operador en una posición

22O, pone el operador E en el offset 2,2. 

22O...
..E..H
.....E

Escribe un Operador en una posición.

22X, le da salida al operador E en el offset 2,2. 

22XE.
.....
.....
....E

Animar un Proyector

B4, rebotará desde 0 a 4, de ida y vuelta.

C...........
.B4.........
.1XE........
........:03C
........:03D
........:03E
........:03F
........:03G

Variables

Esta sección ejemplifica lo básico para almacenar, acceder y combinar dichos datos almacenados. 

Escribir una variable 

aV5, almacenará 5 como variable a. 

aV5

Lee una variable 

Va, le dará salida al valor de la variable a. Note como las variables tienen que ser siempre escritas encima de donde son leídas.

.....Va
.......
aV5..Va
.....5.
.......
aV6..Va
.....6.

Leer 4 variables 

3Kion, dará salida a los valores de i, o y n, lado a lado. 

iV0.oV3.nVC
...........
3Kion......
.:03C......

Mover un valor horizontal y verticalmente 

Y, Mueve la entrada hacia la izquierda.
J, Mueve la entrada hacia abajo. 

3..
J..
3Y3

Portar un disparo

Este método permite llevar los disparos a un lugar cerrado.

D43Ka...
.Y.:03C...