Proceso de calibración del VCO

AS10K_Calibration_09

Para que nuestro VCO genere una nota determinada debemos introducir una tensión de entrada (CV) que haga oscilar la señal de audio a la frecuencia que buscamos. Esta tensión de entrada debe ser generada con bastante exactitud, o de lo contrario la nota no sonará afinada. En los sintetizadores clásicos existe una circuitería que genera esa tensión en función de la nota tocada en el teclado. El problema típico de los sintetizadores analógicos es que esta circuitería, y en cierta medida el propio VCO, tiene un comportamiento que depende de la temperatura, y para evitarlo hace falta montajes complejos y un proceso de calibración.

En nuestro caso usamos el Arduino para generar la tensión de control (CV) de cada nota, lo que nos permite conectarlo a cualquier software que genere mensajes MIDI. Pero además, aprovechamos el Arduino para realizar el proceso de calibración. La idea es que Arduino vaya generando progresivamente distintas tensiones de control y vaya midiendo la frecuencia que se obtiene para cada una. Tras hacer eso con todo el rango de tensiones posible elabora una tabla que asocia a cada nota de la escala MIDI la tensión de control necesaria para producirla.

Para calibrar el VCO debemos, en primer lugar, cargar el firmware de calibración y recepción de mensajes MIDI en el Arduino. Lógicamente, este paso sólo lo realizamos una vez. Disponemos de un par de versiones del firmware, una básica con dos canales MIDI, lo que permitiría controlar dos VCOs independientemente (y que se puede descargar de VCO_MIDI_V10B.zip), y otra versión que  tiene un único canal MIDI, pero que a cambio incluye un oscilador LFO software (y que se puede descargar de VCO_MIDI_V14.zip). Como hemos comentado, estos firmware permiten recibir los mensajes MIDI desde el ordenador así como realizar el proceso de calibración.

En este ejemplo partiremos de un montaje similar al de la foto:

AS10K_Calibration_01

1. A continuación alimentaremos los módulos MCV y VCO, conectando sus señales VCC y GND a 5V y GND del Arduino

AS10K_Calibration_03
2. Después debemos conectar las señales de entrada del módulo MCV (siguiente foto)
–> La señal 10 de Arduino a /CS0 del módulo MCV
–> La señal 13 de Arduino a SCK del MCV
–> La señal 11 de Arduino a SDI del MCV

– Si usas un Arduino MEGA, en vez un Arduino UNO, las conexiones deben ser
–> La señal 53 del Arduino MEGA a /CS0 del módulo MCV
–> La señal 52 del Arduino MEGA a SCK del MCV
–> La señal 51 del Arduino MEGA a SDI del MCV

AS10K_Calibration_04
3. Luego la salida CV_A del módulo MCV a la entrada de CV del VCO (amarillo), así como la salida COMP del VCO (naranja) al pin 8 de Arduino (48 en el caso del MEGA)

AS10K_Calibration_05
4. Finalmente conectaremos un cablecillo (azúl) entre el pin 12 de Arduino y GND

AS10K_Calibration_06
5. Y por supuesto, si queremos oirlo, la salida de audio triangular (y su GND, claro) del VCO a los altavoces

AS10K_Calibration_08

6. Lo mejor para ver como evoluciona el proceso es abrir el terminal de Arduino (configurarlo a 57600 baudios).

Lo primero que veremos es que Arduino nos dice que ha cargado la tabla de calibración. Esta tabla está en la EEPROM, pero si no se ha realizado un proceso de calibración anteriormente los datos serán erróneos. Mientras la señal 12 de Arduino esté conectada a tierra no pasa nada, pero si la ponemos momentaneamente a 5V , o a veces incluso si la dejamos al aire, comenzará el proceso de calibración (volver a poner la señal 12 a GND), que continuará hasta el final o hasta que se resetée el micro. Iremos viendo (y oyendo) como Arduino va probando las distintas tensiones y midiendo las frecuencias (al principio no oiremos nada porque las frecuencias son muy bajas. Incluso el micro nos dice que no es capaz de medirlas, como en la foto 6. Al llegar a los 20Hz aproximadamente empezaremos a escuchar el oscilador, y a partir de ahí hasta el final la frecuencia irá subiendo de forma continua en un “subidón” eterno (siguientes fotos). Este proceso puede tomar algún tiempo, por lo que conviene relajarse (y poner los altavoces bajitos). Una vez que el proceso a terminado los resultados se guardan en la EEPROM, por lo que no es necesario repetir el proceso a no ser que la temperatura cambie mucho (no hemos hecho pruebas al respecto, todo sea dicho :).

AS10K_Calibracion_10 AS10K_Calibracion_11

A partir de ese momento, nuestro oscilador podrá recibir mensajes MIDI y “tocará” la nota deseada afinada. Si trabajamos con el VCO en alta frecuencia (sin el jumper J1 del VCO puesto), puede que las primeras notas (las más bajas) tengan un error notable. Por ello, conviene hacer la calibración en función del rango de notas que se van a utilizar. Si vamos a hacer líneas de bajos, entonces es mejor poner el jumper J1 del VCO (VCO en bajas frecuencias) y calibrar ahí, y si vamos a hacer lineas protagonista, quizás es mejor dejar el VCO en alta frecuencia (J1 quitado) y calibrar en ese estado. Por último, recalcar que la afinación cambia si modificamos la forma de onda (con los potenciómetros SHP/TUN o FINE del VCO), por lo que la calibración ya no valdría.

Para trabajar con el firmware, y poder recibir notas MIDI de secuenciadores MIDI o cualquier otro programa que trabaje con MIDI, necesitaremos también  una aplicación como Hairless MIDI (configurada a 57600 baudios!!) y, si trabajas en Windows, probablemente necesites un puerto virtual MIDI como el loopMIDI. El puerto virtual MIDI permite que un programa pueda enviar a otro mensajes MIDI (en Mac o Linux esto tiene otras formas de realizarse, pero la idea es la misma). El programa Hairless MIDI recibe mensajes MIDI de cualquier fuente y los envía a través del puerto serie donde está conectada la tarjeta Arduino (y viceversa, también podría recibir mensajes MIDI de la tarjeta Arduino y pasárselos a un programa del ordenador).



«Volver

Los comentarios están cerrados.