Tabla de contenido:

Otra caja MIDI a CV: 7 pasos (con imágenes)
Otra caja MIDI a CV: 7 pasos (con imágenes)

Video: Otra caja MIDI a CV: 7 pasos (con imágenes)

Video: Otra caja MIDI a CV: 7 pasos (con imágenes)
Video: Cómo tocar en VIVO usando tu teclado como Controlador MIDI | Instalación, Conexión y PRUEBAS 2024, Mes de julio
Anonim
Otra caja MIDI a CV
Otra caja MIDI a CV

Otra caja de MIDI a CV es un proyecto que desarrollé cuando un Korg MS10 llamó a mi puerta y tuvo lugar en mi estudio. Dado que mi configuración se relaciona en gran medida con MIDI para automatizar y sincronizar todos los instrumentos, cuando compré el MS10, el primer problema que tuve que enfrentar fue cómo implementar dicho control.

Korg MS20 / 10 no son los sintetizadores más fáciles de implementar MIDI: en primer lugar, se basan en el control Hz / V (correlación lineal entre el voltaje de control y la frecuencia de la nota), en lugar de oct / V (1V por octava); En segundo lugar, para activar una nota, debe enviar una señal de puerta negativa y poner en cortocircuito la entrada a tierra (S-Trig), no una señal de +5 V (V-trig).

Hay varias soluciones comerciales para controlar estos instrumentos hoy en día (es decir, Arturia Beatstep Pro, Korg SQ-1, Kenton Solo) pero soy un bastardo barato e incluso 100 euros son demasiado para un dispositivo que "no suena":).

Aquí estamos: déjame mostrarte cómo construir una caja MIDI a CV de bajo presupuesto para controlar / automatizar el tono, puerta, velocidad y frecuencia de corte de un sintetizador pre-MIDI con un controlador MIDI externo (teclado, DAW, secuenciador o lo que sea).

"¿Qué pasa con el nuevo MS20 mini?"

Como casi todo el mundo sabe, el nuevo MS20 está realmente preparado para MIDI: IN con un conector MIDI de 5 polos e IN / OUT con conector USB.

"¡Entonces, si tengo un MS20 mini, esto es inútil!"

Bueno no. El MS20 mini reconoce solo los mensajes de activación / desactivación de notas y el teclado no es sensible a la velocidad. No hay forma de superar esto con el teclado vintage o mini MS10 / 20, pero con la caja midi y un teclado sensible a la velocidad estás dorado. Además, con la caja MIDI puede automatizar el corte del filtro (o cualquier otro parámetro controlable por voltaje) o hacer que lo modifique la nota MIDI entrante sobre la velocidad. Una vez más, el único canal MIDI al que responde el MS20 mini es el canal 1. Con esta caja también puede superar este límite.

"¿Qué pasa si tengo un sintetizador Oct / V?"

¡No hay problema! El código que escribí es compatible con los sintetizadores Oct / V (no probado, pero estoy seguro de que funcionará de inmediato;)).

Paso 1: !! Nota de precaución - ¡Exención de responsabilidad

Su equipo es muy valioso y no debe usarse para realizar pruebas.

Jugar con electricidad puede dañar gravemente su equipo o hacerse daño a sí mismo.

No me hago responsable de los daños a su equipo / hardware o incluso a usted mismo provenientes de cualquiera de los programas, esquemas, información o enlaces que informé en este instructivo.

¡Usted ha sido advertido!

Paso 2: Ingeniería del hardware

Arduino es útil cuando se trata de proyectos como este. La existencia de una gran comunidad y muy buenas bibliotecas que abarcan casi todas las tareas comunes la convierten en la elección correcta. Aquí, la placa se programará de modo que lea los datos MIDI entrantes y luego envíe los voltajes apropiados a la unidad:

- Pitch, al convertir una salida pwm en un voltaje analógico para impulsar el VCO a través de un convertidor digital a analógico (DAC)

- Velocidad, filtrando una salida pwm para impulsar el VCA con un simple filtro RC

- Filtro de frecuencia de corte, mediante el filtrado de una salida pwm para impulsar el VCF con un simple filtro RC

- Puerta, directamente desde una salida digital en caso de V-trig (ponga un 1Kohm en serie con la salida para reducir el drenaje de corriente) o por un simple interruptor de transistor pnp fuera de la salida digital (vea el esquema adjunto al paso del esquema).

Arduino no es capaz de generar voltajes directamente estables, sino pulsos de 0 / + 5 V con varios períodos (PWM). Necesitamos convertidores de digital a analógico (DAC) para el matrimonio. Los filtros RC son el DAC más fácil que se me ocurre. Un filtro RC es suficiente para el filtro y amplificador controlado por voltaje (VCA y VCF). Los filtros RC están diseñados para dar como resultado una frecuencia de corte <20Hz (frecuencia audible más baja).

Hice algunas pruebas con capacitores no polarizados de baja capacidad y terminé con un valor de capacidad de 0.1uF para ser el mejor ajuste. Probado bien en un MS20 MKII.

Desafortunadamente, no podemos confiar en un filtro RC para impulsar el oscilador controlado por voltaje (VCO) ya que no sería lo suficientemente preciso (en escala Hz / V, en el extremo inferior dos semitonos adyacentes difieren por menos de 0.02V; en V / oct dos semitonos adyacentes difieren para 0,083 V); vamos a utilizar un IC DAC (MPC4725) para esto.

Límites conocidos

Limitando el voltaje de la unidad a 5 V (el voltaje de salida de Arduino), se cubre el rango completo de 0 a 5 V para la velocidad; el corte está medio cubierto (-5V a + 5V); el rango de VCO está parcialmente cubierto siendo que en Hz / V se requeriría un voltaje de 8 V para alcanzar el A4 de 440 Hz. Con un límite de salida de 5 V, podemos ajustar el oscilador hasta la frecuencia D4 en Hz / V.

Paso 3: Lista de componentes

Lista de componentes
Lista de componentes
Lista de componentes
Lista de componentes
Lista de componentes
Lista de componentes

Necesita:

1X Arduino UNO (o nano)

1 placa DAC MPC4725

4 conectores mono de 1/8 "o 1/4"

Conector MIDI 1X

Optoacoplador 1X 6N138

Diodo 1X 1N4148

1 resistencia de 220 ohmios 1/4 W

1 resistencia de 470 ohmios 1/4 W

1 resistencia de 10K ohmios 1/4 W

Resistencia de 4X 1K ohmios 1/4 W

Condensador 2X 0.1 uF

Transistor pnp 1X BC547 (en caso de S-trig)

1X caja de ABS (al menos 55 x 70 x 100 mm)

… Y obviamente tablero de pruebas o tablero de perforación, soldador, alambre y cables de soldadura (2 metros de 28 AWG deberían ser suficientes).

Observe que en las imágenes de arriba mi prototipo monta tapas electrolíticas de 100 uF, pero son demasiado lentas debido al tiempo de carga de la capacidad. Una capacitancia de 0.1uF es la elección correcta.

Usé un conector adicional para suministrar energía a mi arduino; no es necesario que sea posible extraer el microcontrolador directamente a través del conector mini USB integrado.

Paso 4: Conexiones / Esquemas

Conexiones / Esquemas
Conexiones / Esquemas
Conexiones / Esquemas
Conexiones / Esquemas
Conexiones / Esquemas
Conexiones / Esquemas

ENTRADA MIDI

El circuito MIDI IN es simple y está bien descrito en la red. Tome ESTE excelente instructable sobre MIDI y Arduino de Amanda Gassaei, por ejemplo. De todos modos hice el enésimo esquema sobre el tema.

Tenga en cuenta que agregué un interruptor en el esquema MIDI IN (interruptor 1): esto es necesario cuando se carga un nuevo boceto a Arduino porque el opto interfiere con la línea RX incluso sin mensajes midi entrantes. Debe abrir el interruptor antes de cargar su boceto o el IDE no podrá cargar el nuevo boceto.

Eventualmente puede modificar el boceto para usar una comunicación de software en serie.

DAC, filtro RC, sintetizador

La conexión para DAC, filtros RC y sintetizador (tono, puerta y velocidad) se muestran en el diagrama de arriba. Tomé como referencia un panel de conexiones Korg MS20, pero también probé todo en una MS10. La conexión directa del CV de velocidad al punto de parche de "ganancia inicial" de VCA no tiene ningún efecto (debo profundizar más en esto) pero si lo conecta al punto de parche "Total" y aumenta el total de potenciómetros externos (MG / T. EXT), escuchará agradables variaciones de tono en función de la velocidad de la nota.

Mis esquemas (y mi prototipo también) no usan una resistencia limitadora de corriente en la salida DAC, pero siempre es una buena idea colocar una para asegurar una larga vida a sus circuitos. Será suficiente una resistencia de 220 ohmios.

Observe que en los esquemas anteriores se informan tapas electrolíticas de 100 uF, pero son demasiado lentas debido al tiempo de carga de la capacidad. Las tapas no polarizadas de 0,1 uF son la elección correcta.

Puerta de salida

En caso de que vaya a secuenciar un sintetizador compatible con señales V-Trig (disparador de voltaje), una resistencia en serie de 1k ohmios para reducir el consumo de corriente será suficiente; en el caso de un sintetizador S-Trig (interruptor de gatillo), puede usar un circuito de interruptor PNP simple (vea el esquema adjunto).

Paso 5: el software

El software
El software

Traté de mantener el boceto lo más claro y "legible" posible.

Trabajé en una hoja de cálculo simple que encontré AQUÍ para derivar una curva de Voltaje Vs Nota # y usar directamente la ecuación en el microcontrolador. La ecuación se muestra en el gráfico de arriba. Usé C2 como nota de referencia para obtener una relación de nota de voltaje Vs compatible con Arp / Korg (C0 - 0.25V, C1 - 0.5V, C2 - 1V, C3 - 2V, C4 - 4V, C5 - 8V y así sucesivamente).

Tuve que definir alguna variable para jugar con el fin de obtener una buena sintonía … tómese su tiempo para encontrar los valores correctos. Es necesario un sintonizador.

Vamos a aumentar la frecuencia pwm de un temporizador / contador para reducir la ondulación de los voltajes de salida (tan fácil como una línea de código).

Para mantener el código receptivo a los bytes entrantes, el código depende en gran medida de las devoluciones de llamada de funciones.

¡Necesita las bibliotecas "Adafruit_MCP4725.h" de Sparkfun y Forty Seven Effects / Francois Best "MIDI.h" para compilar! (Muchas gracias a estas personas: ¡sin sus esfuerzos este proyecto nunca se realizaría!).

Asumiré que tiene Arduino IDE listo en su PC y que sabe cómo cargar un boceto en su placa Arduino.

No soy un codificador en la vida real, por lo que es muy probable que el boceto se pueda escribir de una mejor manera. Estoy abierto a sugerencias (siempre aprendo algo mirando el código del codificador;))

Las notas adicionales están escritas en el código a continuación. Instale las dos bibliotecas, abra el código adjunto en su IDE, conecte su placa, seleccione el tipo de placa y cargue.

Paso 6: solución de problemas

Incluso si el proyecto es de bajo nivel, hay muchas cosas que podrían salir mal. Si tiene problemas al intentar crear su propio cuadro de MIDI a CV, siga estos pasos:

1. Asegúrese de que Arduino esté recibiendo correctamente los mensajes MIDI

Verifique el canal de salida al que su teclado, DAW o secuenciador está enviando mensajes MIDI. Arduino está escuchando el canal 1 por defecto. Sube "TEST_MIDI_IN.ino" para leer un mensaje noteON entrante.

2. Verifique sus cables

… O mejor aún: ¡compruébalos tres veces! Reserva tu tiempo para esto.

3. Verifique la dirección y la salida DAC

El DAC podría configurarse para recibir datos en una dirección diferente a la que configuré en el esquema. Verifique la dirección ejecutando "I2C_scanner.ino". Si ocurre un error de "no se encontró ningún dispositivo", verifique su cableado DAC (¡las entradas SDA y SCL son diferentes en diferentes placas Arduino!). Si tiene un oscilocopio (incluso esos osciloscopios digitales de 15 euros son lo suficientemente buenos … ¡y es divertido jugar con ellos!) Puede verificar la salida de su DAC cargando el ejemplo del generador de ondas triangulares incluido con la instalación de la biblioteca DAC.

Recuerde que cuando se conecta un optoacoplador a la entrada RX de su placa arduino, ¡no podrá cargar un nuevo boceto! Coloque un interruptor (podría ser un simple puente) antes del pin RX.

La mayoría de estos bocetos de prueba no son míos o, al menos, están basados en material en línea existente.

¡¿Esta cosa suena desafinada para mí ?

Esto no es un problema real: la ecuación derivada para el control de Hz / V es "ideal". Alguna desviación del comportamiento ideal puede elevarse desde los + 5V que está suministrando que no son 5.000V, desde el DAC y desde el propio instrumento. Para solucionarlo debes actuar sobre tu sintetizador / potenciómetro de sintonización fina y "voilà" un control MIDI perfectamente afinado;)

Paso 7: Enlaces útiles

en.wikipedia.org/wiki/CV/gate

www.instructables.com/id/Send-and-Receive-…

www.songstuff.com/recording/article/midi_me…

pages.mtu.edu/~suits/NoteFreqCalcs.html

espace-lab.org/activites/projets/en-arduin…

learn.sparkfun.com/tutorials/midi-shield-h…

provideyourown.com/2011/analogwrite-conver…

www.midi.org/specifications/item/table-3-c…

arduino-info.wikispaces.com/Arduino-PWM-Fr…

sim.okawa-denshi.jp/en/PWMtool.php

Recomendado: