Síntesis de sonido con fruta fresca: montaje de un VCO

En este capítulo os proponemos la construcción de un sencillo VCO controlable via MIDI o mediante cualquier otra tensión variable.

1. ¿Qué es un VCO?

Y algunos de nosotros nos preguntamos, ¿que es un VCO? La respuesta es bien sencilla: es la abreviatura en inglés de un Oscilador Controlado por Tensión o Voltage Controlled Oscillator.

Es decir, un circuito que genera una forma de onda cuya frecuencia depende de la tensión de una señal de control CV ("Control Voltage"). La señal de control CV puede venir de un teclado o cualquier otro dispositivo que nos dé una tensión adecuada, y su valor en cada momento determinará la altura, o tono del sonido.

Los VCOs son la fuente primaria de sonido de los sintetizadores analógicos, ya que son los encargados de generar las señales que posteriormente son tratadas por otros módulos. El resto de módulos se utilizan para dar el color (o timbre) deseado al sonido generado por el VCO, así como la evolución temporal de éste.

Nuestro VCO en acción: recibiendo notas MIDI desde el ordenador a través de un Arduino UNO

2. Características del oscilador

El oscilador que os proponemos montar genera onda triangular (deformable, casi hasta diente de sierra) y cuadrada. Sus características principales son:

● Entrada de control CV (entre 0 y 5V) con respuesta Hz/V lineal

● Tipos de onda: triangular y cuadrada.

● Ajuste grueso de forma/frecuencia mediante un potenciómetro.

● Margen de frecuencias ajustable mediante el cambio del valor de un condensador.

● Tensión de alimentación VCC: 5V.

3. Lista de la compra y montaje del circuito

Bien, queremos hacer ruido ya, así que vamos a detallar lista de componentes e instrucciones de montaje. Aquí la lista de la compra:

● Cable rígido.

● Placa perforada (aproximadamente de 8x4cm).

● Tira de pines hembra (aproximadamente 40).

● 10 resistencias de 10K.

● 2 potenciómetros de 10K

● 1 condensador electrolítico de 10uF

● 1 condensador de 1uF (electrolítico o cerámico)

● 1 condensador de 10nF

● 1 circuito integrado TLC2274

● 1 transistor BC547

Aunque el circuito no presenta dificultades especiales para el montaje, hay que prestar atención en algunos puntos. Conviene revisar las siguientes figuras e ir con paciencia.

Esquemático

Esquema

Esquema trasera y perforaciones

Primero debemos preparar la placa. Para facilitar el montaje hemos elegido una placa perforada con las pistas horizontales, tal como se muestra en las fotos. Debemos cortar las pistas en los puntos adecuados, según el esquema mostrado anteriormente. Lo más cómodo es usar una broca a mano para medio taladrar la placa en los puntos de corte. Es recomendable pasar una lija o cepillo para evitar posteriores cortos en las pistas.

Placa perforada

Perforaciones en en la parte trasera

A continuación empezaremos por soldar las tiras de pines y el zócalo (ver fotos).

Tiras de pines hembra una vez cortadas

Tiras de pines hembra soldadas

A partir de ahí, es útil empezar por soldar los componentes de menor altura, como son las puentes, para ir luego soldando hacia los de más altura (como las resistencias). Podemos, por ejemplo, soldar el potenciómetro de la entrada (a la izquierda).

Añadimos zócalo y potenciómetro

Cortaremos los puentes más o menos a su medida (un poco más largos es más cómodo) y los soldamos. Podemos aprovechar para soldar el transistor (BC547), cuidando su orientación, y el potenciómetro de la derecha. Después de soldar todo esto, el circuito debe tener un aspecto parecido al de la foto…

Añadimos los puentes verticales y el transistor

Respecto al montaje de las resistencias, todas son de 10K (marrón-negro-naranja), así que no hay que preocuparse por su valor. Las iremos colocando según el esquema.

Por último, soldamos las resistencias

Después podemos montar el TLC2274 en su zócalo, cuidando su orientación (la marca de la patilla 1 hacia arriba).

VCO completo excepto los condensadores

Por último seguiremos con los condensadores. El condensador C1 va soldado (es 10uF, electrolítico, así que ojo con la polaridad, debe ir la patilla negativa hacia arriba de la placa, a la pista de GND, y la positiva hacia abajo, a la de +5V). Los condensadores C2 (1uF) y C3 (10 nF) no van soldados, sino puestos en los zócalos, para así poder cambiarlos fácilmente (esto modificará el portamento y el filtrado de la señal PWM del Arduino). El C2 también es electrolítico, y va orientado con la patilla negativa hacia abajo.

Montaje terminado

Para comprobar el funcionamiento del VCO debemos primero alimentar el circuito conectando 5V (los podemos obtener de Arduino) entre la pista de GND y la de 5V (fijarse en el esquema, porque en este circuito hemos puesto la pista de 5V debajo de la de GND, y eso puede liarnos). Luego lo más cómodo es aprovechar el potenciómetro de la entrada para generar una tensión entre 0 y 5V que pasarle al CV del oscilador: usando cablecillos pondremos la señal INPUT CV Signal 1 a 5V, la INPUT CV Signal 2 a 0V.

Después la salida de la mezcla MIXER Out la conectamos a CV INPUT. La señal de salida Triangle Out la tendremos que conectar a los altavoces (junto con la señal GND, claro está). Ahora no queda solo mover el potenciómetro y ver cómo varía el tono de la señal.

4. Control del VCO

Como el VCO se controla por voltaje, cualquier circuito que nos dé una tensión (entre 0 y 5V, para no "tostar" el VCO) valdrá para controlarlo y generar una frecuencia dependiente de esa tensión. A continuación van algunas propuestas para controlar el VCO:

En las dos primeras propuestas hemos añadido un transistor para mejorar la respuesta en el rango de frecuencias del oscilador.

Control del CV del VCO usando una LDR.

Control del CV del VCO usando una fruta o verdura, actuando ésta como un divisor de tensión.

La última propuesta, y una de las más divertidas, es controlar el VCO mediante un secuenciador que nos permita enviar notas MIDI desde nuestro ordenador a un microcontrolador. En nuestro caso usamos un Arduino Uno con el firmware que podéis descargar en el siguiente enlace:

http://www.bleepsandchips.com/basic_firmware

5. Calibración para control MIDI

Para que nuestro VCO pueda generar una determinada nota MIDI debemos introducir una tensión de entrada (CV) que haga que el VCO oscile 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 con otros dispositivos MIDI. 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 hacen 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. Como hemos comentado, este firmware permite recibir los mensajes MIDI desde el ordenador (a través de un convertidor MIDI-Serial, como puede ser Hairless MIDI), así como realizar el proceso de calibración.

Ahora conectaremos el VCO a Arduino de la siguiente manera:

Por un lado conectaremos las señales de 5V y GND para alimentar el circuito.

1. A continuación debemos conectar la señal 10 de Arduino a la entrada del filtro de CV.

2. Luego la salida del filtro de CV a la entrada de CV del VCO.

3. Posteriormente conectaremos la salida de onda cuadrada del VCO al pin 8 de Arduino.

4. Finalmente conectaremos un cablecillo entre el pin 12 de Arduino y GND. Y por supuesto la salida de audio triangular (y su GND, claro) a unos altavoces (cualesquiera de ordenador valdrán).

Lo mejor para ver cómo evoluciona el proceso es abrir el terminal de Arduino 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 momentáneamente a 5V comenzará el proceso de calibración (volver a poner la señal 12 a GND), que continuará hasta el final o hasta que se resetee el micro. Iremos viendo (y oyendo) cómo 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 20 Hz 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 (foto 7).

Este proceso puede tomar algunos minutos (entre 5 y 10), 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).

A partir de ese momento, nuestro oscilador podrá recibir mensajes MIDI y "tocará" la nota deseada afinada. Las primeras notas (las más bajas) pueden tener un error importante, pero luego es apenas perceptible. Si se utiliza Hairless MIDI como interfaz MIDI-Serial, hay que acordarse de configurarlo a 57600 baudios, que es lo que espera el firmware, o bien modificar el firmware para adaptar la comunicación serie a la velocidad necesaria.

Por último, recalcar que la afinación cambia si modificamos la forma de onda (con el potenciómetro 2), por lo que la calibración ya no valdría.

Terminal serie conectado al Arduino durante el proceso de calibración