8 mar 2012

Emulación de distorsión valvular Plugin JS (Jesusonic/Reaper)

     He programado en Jesusonic una emulación de la distorsión armónica producida por un previo válvular (DSAUDIO 156 basado en un Altec 1566) que usa válvulas tipo 12AX7.

Análisis del preamplificador DSAUDIO 156 (1Khz)



Análisis del plugin  (1Khz)

   En la emulación no se han tenido otros factores como la respuesta de transitorios, compresión, distorsión de fase etc prescindiendo del HUM que podemos observar alrededor de los 50Hz. Sólo se han emulado los armónicos pares e impares.

   Este plugin aporta ese color "analógico" que muchas veces las pistas de audio grabadas en un entorno digital necesitan, añade distorsión con carácter agradable y musical que muchos equipos analógicos aportan como podemos ver en el análisis espectral del previo DSAUDIO 156.

  Para poder usarlo en Reaper o cualquier otro DAW (mediante ReaJS) simplemente guardar el siguiente código en un archivo con el nombre APG/Valve y sin extensión. Hay que meterlo en la carpeta Reaper\InstalData\Effects


// Alberto PG (C) 2012
desc:APG/Valve 1.9beta
slider1:1<1>Drive%
slider2:20<20>Frequency (Hz)
slider3:2<0 data-blogger-escaped-24="24" data-blogger-escaped-db="db">HP Slope (db/oct)
slider4:0<-60>Level
@init
y0 = y1 = y2 = y3 = 0;
y4 = y5 = y6 = y7 = 0;
@slider
drive=slider1/100;
trim=32/slider1+0.00001*slider1*10^(slider4/20);
C = exp(-2*$pi*slider2/srate);
@sample
wet0 = sin(spl0 * (drive*$pi)) + cos(spl0 * (drive*$pi)) - 1;
wet1 = sin(spl1 * (drive*$pi)) + cos(spl1 * (drive*$pi)) - 1;
spl0 = wet0*trim;
spl1 = wet1*trim;
slider3 > 0 ?
(
spl0 -= y0 = spl0 + C*(y0 - spl0);
spl1 -= y1 = spl1 + C*(y1 - spl1);
slider3 > 1 ? (
spl0 -= y2 = spl0 + C*(y2 - spl0);
spl1 -= y3 = spl1 + C*(y3 - spl1);
slider3 > 2 ?
(
spl0 -= y4 = spl0 + C*(y4 - spl0);
spl1 -= y5 = spl1 + C*(y5 - spl1);
slider3 > 3 ? (
spl0 -= y6 = spl0 + C*(y6 - spl0);
spl1 -= y7 = spl1 + C*(y7 - spl1);
))));

4 nov 2011

MIDI IN to CV con Arduino controlando oscilador analógico


  Controlando un oscilador analógico mediante control de voltaje procedente de la salida PWM de Arduino. Mediante optoacoplador generamos una señal serie a partir de la entrada MIDI que conectamos a la entrada RX de Arduino.

   En esta prueba controlamos el pitch mediante el volumen de cada nota directamente en un sequenciador (en este caso Reaper), en el código de prueba sólo estoy recibiendo el hexadecimal de velocity.

   El pitch se consigue mediante la salida PWM de Arduino, con otro optoacoplador (4N25) controlando el voltaje del oscilador. La señal PWM no está filtrada, el siguiente paso sería filtrarla con un paso bajo para eliminar los ruidos del PWM.

  Para conseguir una frecuencia estable el oscilador analógico está alimentado por los 5v estabilizados y filtrados procedentes de la placa de Arduino.

26 oct 2011

Oscilador analógico controlado por la salida PWM de Arduino


Analog wave generator oscillator with digital controlled LFO by Arduino


     Video en el que experimento con un oscilador analógico basado en un NE555 cuyo LFO y ADSR estará controlado por Arduino.

     En el Arduino contamos con salidas PWM, que genera diferentes voltajes de 0 a 5v. Realmente es una salida digital que se comporta como una pseudoanalógica, pero para controlar un LFO no valdría el clásico optoacoplador 4n25, se filtra la señal PWM y la señal resultante del oscilador analógico estaría entrecortada. Por defecto la frecuencia de reloj del PWM es de 500hz aproximadamente, para evitar esto podríamos filtrar la señal antes de llegar al optoacoplador con un pasa bajos o filtrar la señal aprovechando la lenta respuesta de un LED y una célula LDR. He colocado una célula LDR en el pitch del oscilador y he enfrentado un LED a modo de optoacoplador. La lenta respuesta transitoria del LED filtra la señal PWM y nos quedamos con un voltaje analógico variable provocada por la resistencia de la célula LDR.

    El LED se enciende y apaga pasando por todos los valores por una salida PWM del Arduino y variando su frecuencia con un potenciómetro colocado en su entrada analógica.

   El ADRS también se realizaría con un optoacoplador, pero en vez de controlar el pitch controlamos el nivel de salida del oscilador.

    Aquí otro video en el que controlo un optoacoplador 4n25 mediante la salida digital del arduino, consiguiendo un secuenciador básico standalone.






3 oct 2011

Preamplificador de micrófono discreto FET con transformadores



      Es tan simple que sólo usa un transistor FET. El tipo FET se caracteriza por tener una respuesta parecida a las válvulas. Se alimenta con 9v y el sonido es muy limpio, ya que la señal no pasa por varios transistores ni varios condensadores. Sólo pasa por un condensador de alta calidad de polipropileno. para desacoplar la salida. La diferencia se nota, en la mayoría de equipos actuales vienen con muchos condensadores baratos que producen distorsión armónica no musical. En este diseño sólo uso uno de calidad y la distorsión THD ya no es audible. En este caso he escogido como se hacían en los años 50-60-70 los transformadores, por lo que el sonido es limpio, pero a la vez con algo de carácter en graves, por la distorsión de fase (no armónica) y agudos sedosos, provocada por los propios transformadores.






     Esa era la idea, construir un preamplificador cuya señal sea degradada lo mínimo posible prescindiendo de componentes lo máximo posible (transistores/condensadores/chips) y agradada por las características de otros componentes cuya "degradación" es musical y agradable al oído(transformadores), imitando así los antiguos equipos, pero con componentes más actuales, que debido a su bajo ruido y distorsión no necesitan laboriosos diseños en el circuito ni tantos componentes para conseguir la misma amplificación.

14 jun 2011

Plugin de Ruido Blanco con Jesusonic





¿Qué es el ruido blanco?


     El ruido blanco es una señal aleatoria cuyos sus valores de señal en dos tiempos diferentes no guardan ninguna correlación . Por ello, la señal contiene todas las frecuencias y todas ellas muestran la misma potencia, su gráfica es plana. Lo mismo ocurre con la luz blanca, de ahí la denominación.

¿Cómo suena?

     Suena como una televisión o una radio está desintonizada o en la naturaleza, el sonido de una cascada o lluvia.


¿Cómo podría ser el algoritmo para generar un sonido "aleatorio"?

     Ante ésto necesitaremos buscar en la librería de Jesusonic alguna función que nos permita generar valores aleatorios:

 rand(x)
Example: s = rand(x);
Returns a psuedorandom whole number between 0 and the parameter.

     

     rand devuelve un número pseudoaleatorio. Se denomina así porque a través de un algoritmo nunca conseguiremos valores totalmente aleatorios, ésto sólo se puede conseguir mediante la propia naturaleza o electrónicamente (electrones). Por ello el propio ruido blanco producido artificial o naturalmente es usado cuando en determinadas ocasiones se necesita una aleatoriedad más alta, ya que es una fuente de entropía.
desc: Ruido Blanco
slider1:1<0,1,0.01>Volumen   //el slider comienza en la unidad.
@slider
volumen = slider1;  //asignamos slider1 a la variable volumen
@sample   //comienza el proceso
aleatorio = rand(1);  //generamos un número pseudoaleatorio
ruidoBlanco = (aleatorio*volumen)/2;  //controlamos el volumen
spl0=ruidoBlanco;
spl1=ruidoBlanco;
   Cada vez que @sample procese un sample generará un valor pseudo aleatorio, por lo que cumple su definición (sus valores de señal en dos tiempos diferentes no guardan correlación estadística)


     Rand devuelve un valor entre 0 y el parámetro pasado. X es 1, la unidad, el máximo valor usado en Jesusonic. En la variable ruidoBlanco dividimos entre 2 ya que sacaremos el mismo resultado por spl0 y spl1, si no, las dos señales se sumarían.






     Como vemos en la imagen el resultado será una onda que en cada muestreo irá tomando un valor aleatorio.


Entonces, ¿es mejor un generador de ruido blanco analógico que uno digital?

     Para el sonido no hay diferencia, ya que se trata de cubrir todo el espectro "audible" y esto se puede conseguir perfectamente con valores pseudoaleatorios.



6 jun 2011

Primeros pasos programando con Jesusonic (JS-Plugins Reaper)


     Jesusonic en un principio surgió como un concepto standalone, pero tuvieron la gran idea de incorporarlo al DAW REAPER, actualmente el único que lo implementa.  

     Aunque sólo Reaper use los JS, mediante el plugin JS VST se pueden desarrollar los plugins en código JS y cargarlo como un VST, muy válido para prototipado para luego desarrollarlo en otro lenguaje, el mayor inconveniente de JS es que consume más recursos que por ejemplo C++.

     Los plugins JS son libres, por lo que se puede ver el código y modificarlo a tu antojo directamente en el propio DAW ya que lo increíble del asunto es que Reaper tiene un compilador y editor integrado, por lo que es Write Once, run anywhere. El archivo de un plugin JS no es más que un archivo de texto sin extensión.     Para acceder al código de un plugin JS desde Reaper, verás la opción de EDIT una vez insertado. Se puede modificar el código del plugin o crear uno nuevo desde cero. La curiosidad me ha llevado a programar un JS muy sencillo y os dejo el código en cuestión:


// Stereo to Mono

desc:Stereo2Mono
@sample
mono= (spl0 + spl1)/2;
spl0 = mono;
spl1 = mono;



     Simplemente hay que guardar este código en un bloc de notas quitándole la extensión TXT y meterlo en la carpeta Effects que está dentro de la carpeta de Reaper. Este sencillo código convierte una señal stereo en una señal mono.

     Comento lo que hace cada linea:


// Stereo to Mono (comento el nombre del archivo)


desc:Stereo2Mono (el comando desc: nos sirve para darle una descripción al programa que aparecerá en la ventana del mismo, no es necesario poner punto y coma al final)

@sample (iniciamos el proceso, la manipulación del audio se realiza sample a sample)


mono= (spl0 + spl1)/2; (spl0 corresponde a L y spl1 a R, con esto creo una variable que se llama mono porque yo he querido donde digo que mono es el resultado de la suma de L y R. Lo dividimos entre dos para que el nivel de cada una llegue a la unidad)


spl0 = mono;
spl1 = mono;

 spl01 y spl1 equivale tanto a la entrada como a la salida, 

     por aquí otro JS sencillo, un stereo flip, cambia el L por el R y el R por el L:


// Stereo Flip
desc:Stereo Flip

@sample

l = spl0;
r = spl1;
spl0 = r;
spl1 = l;





     Aquí hay una pequeña documentación:

     
http://reaper.fm/sdk/js/js.php
     

     Ésto es sólo el principio. Ahora comienza el mundo del DSP.









10 nov 2010

Primer prototipo de preamplificador de micrófono (DIY)



Aquí mi primer prototipo montado en una placa punto a punto basado en:

-Entrada balanceada por transformador (Sowter aunque se puede usar un OEP mucho más barato).
-Operacional NE5532 o NE5534.
-Condensadores de salida  de polipropileno.
-Gain Control.

Resultados: sonido transparente, algo coloreado en graves debido al trafo de entrada.El operacional 5532 es de gran calidad, fácil de conseguir y muy barato, lo usan equipos profesionales como las consolas SSL, compresores etc.

Hoy en día hay otros con mejor distorsión armónica como puede ser el OPA 134 (2134 dual) que no es muy caro y tiene mejor slew rate y THD.

12 ago 2010

Circuit Bending Walkman


Experimentando el circuit bending con un viejo walkman

Circuit Bending Casio PT-1 (PTheremin)



  Circuit bending a un Casio PT-1 usando una célula LDR para controlar el pitch, lo llamo "PTheremin"!


     Una modificación, un oscilador enciende y apaga un led, creo un optoacoplador simplemente enfrentándolo a la célula LDR.

11 ago 2010

Pedal Booster/Overdrive usando una válvula con bajo voltaje (DIY)

     
     Las válvulas de vacío todavía siguen usándose en equipos de audio, como amplificadores para guitarra, previos para micrófono...por su característico sonido que muchos le otorgan el adjetivo de "cálido". El inconveniente es que necesitan normalmente alto voltaje (100-200v) para funcionar correctamente (no es el voltaje del filamento que las enciende, ese es de unos 6 voltios, sino de las plates, por las que mágicamente circulan los electrones). Sin embargo, la 12AU7, puede trabajar con 12 voltios. El resultado es bastante "coloreado", debido a la alinearidad de la válvula, y mucho más al usar bajo voltaje. Monté un pedal Booster para guitarra que amplifica la señal y genera un ligero overdrive utilizando una válvula 12AU7.



     Basándome en el diseño de matsumin Valve Caster, eliminé del esquema el control de tono y el control de volumen, por lo que prescindí del condensador de 10nF, del potenciometro de tono y el de volumen, lo que abarata el montaje.


     Se puede alimentar con una pila de 9 voltios, pero el alto consumo del filamento gastará la pila en cuestión de minutos. La solución es usarlo con una fuente de alimentación. pero no sirve cualquiera, ya que podría provocar si  la corriente no está suficientemente regulada. Para ello habrá que montar un pequeño circuito regulador, basado en un 7812 (la familia 78xx, donde 12 es la máxima tensión que ofrece: