DX7

Conjunto de clases en supercollider para la edición de sonidos en el clásico sintetizador DX7 de Yamaha. Mediante esta librería de clases se pueden editar todos los parámetros del sintetizador, tan solo asignando valores de los atributos de las clases. Cada vez que se asigna un valor a un atributo se envía un mensaje sysex al sintetizador que modifica el valor del parámetro homólogo.

El siguiente ejemplo muestra como modificar varios de los parámetros:

// Crea objeto de la clase DX7Prog
p = DX7Prog.new(0);
 
// Asigna el valor 99 al rate1 del primer operador
p.op1.rate1 = 99;

Class Diagram

DX7Prog es la case principal. A continuación se muestra, mediante ejemplos, el modo de editar cada uno de los parámetros del sintentizador DX7.

Los atributos op1, op2, op3, op4, op5 y op6 contienen instancias de la clase DX7Op, que agrupa todos los parámetros para controlar cada uno de los operadores del DX7. A continuación muestro un ejemplo

p = DX7Prog.new(0);
 
p.op1.active = true;
p.op1.coarse = 20;
p.op1.fine = 30;
p.op1.detune = 3;
p.op1.oscMode = 0;
p.op1.level1 = 0;
p.op1.level2 = 99;
p.op1.level3 = 0;
p.op1.level4 = 99;
p.op1.rate1 = 90;
p.op1.rate2 = 50;
p.op1.rate3 = 60;
p.op1.rate4 = 99;

El atributo lfo apunta a una instancia de la clase DX7LFO, mediante ella podemos asignar los atributos para los parámetros del LFO.

p.lfo.delay = 99;
p.lfo.pitch = 50;
p.lfo.amp = 40;
p.lfo.sync = 1;
p.lfo.wave = 3;

El atributo pitchEG contiene una instancia de la clase DX7PithEG, que agrupa los atributos para modificar el envolvente para la variación de pitch.

p = DX7Prog.new(0);
p.pitchEG.level1 = 88;
p.pitchEG.level2 = 50;
p.pitchEG.level3 = 60;
p.pitchEG.level4 = 99;
p.pitchEG.rate1 = 50;
p.pitchEG.rate2 = 60;
p.pitchEG.rate3 = 0;
p.pitchEG.rate4 = 99;

Field Validations

Se muestra un mensaje de error cada vez que se asigna un valor fuera de rango a alguno de los atributos.

p = DX7Prog.new(0);
p.op1.rate1_(100);

ERROR: rate1 must be between 0 and 99

GUI

Se ha implementado una sencilla interfaz gráfica para editar el DX7 de forma sencilla, o para test.

DX7Prog.new(0).gui;

Random

Una de las aplicaciones de este conjunto de clases es poder crear sonidos de forma aleatoria, utilizando para ello todo el potencial del lenguaje Supercollider.

Algunos sonidos de ejemplo:

Download

Github
zip

TODO

  • Load and save sysex files
  • Send sysex files to DX7 synthesizer