Cómo el autor de TV-B-Gone hizo el sintetizador de música ArduTouch

Instrumento de entrenamiento de procesamiento de señal digital compatible con Arduino




Un artículo de Mitch Altman, el inventor que inventó el control remoto universal para apagar televisores TV-B-Gone, y el organizador de conferencias de piratas informáticos

Cuando era niño, me atraía la música, y me sorprendieron los sonidos del sintetizador Moog del álbum de 1968 Switched-On Bach . ¡Necesitaba aprender a hacer esos sonidos! Entonces comenzó la capacitación y la fabricación de sintetizadores de por vida, paralela a mi entrada en la industria tecnológica , donde terminé haciendo TV-B-Gone , un dispositivo que le permite apagar casi todos los televisores con control remoto. Desde que gané popularidad en TV-B-Gone, he hecho muchos kits para hacer divertidos dispositivos al aire libre que presento en todo el mundo en conferencias de bricolaje . En ellos, los principiantes aprenden a soldar, adentrarse en el mundo de la electrónica y los microcontroladores. Recordando mi juventud, quería proporcionarles un set que sea fácil de ensamblar y usar, pero al mismo tiempo es un sintetizador musical completo.

Así es como surgió ArduTouch, con un valor de $ 30. Este proyecto incluye una placa, un teclado táctil, ATMega328P (el mismo procesador utilizado en el Arduino Uno) y un amplificador de audio con un altavoz. También tiene una biblioteca de software que puede servir como punto de entrada al mundo del procesamiento de señales digitales.

La mayor dificultad para desarrollar la placa fue el número limitado de pines de E / S en ATMega328P. Utilicé 12 pines para el teclado para realizar toda la escala de música cromática en su conjunto. El teclado es similar al Stylophone , uno de mis sintetizadores analógicos favoritos de finales de la década de 1960, y utiliza un sensor capacitivo para el reconocimiento. Se usan dos pines más para la salida de sonido estéreo, y los otros dos son para la transferencia de datos en serie (ArduTouch se puede programar usando herramientas de desarrollo estándar para Arduino, aunque se requiere un cable FTDI para conectarse a una computadora). Los contactos restantes fueron suficientes para dos botones y dos potenciómetros que controlan el sintetizador.

Para que una persona pueda obtener resultados audibles inmediatamente después de soldar, puse el chip del amplificador LM386 y el altavoz en el tablero (el amplificador omite al conectar un conector de audio). Los chips DAC son caros, por lo que utilicé la modulación de ancho de pulso para codificar los canales de audio estéreo que salen del ATMega328P. Los filtros de paso bajo para cada canal, que consisten en una resistencia y un condensador, convierten PWM a audio.

Los ingenieros electrónicos experimentados entenderán que el circuito ArduTouch es simple. La base del proyecto es una sofisticada biblioteca de software de síntesis de audio utilizada para programar ATMega328P.

Es bastante simple hacer que el microcontrolador emita las notas más simples. Simplemente conecte el altavoz a los contactos y alterne de forma alterna, enviando una onda cuadrada a diferentes frecuencias (esta tecnología fue utilizada por el propio Alan Turing en la computadora Manchester Mark II ). Pero el resultado es un sonido nítido, lejos de la rica paleta del sintetizador Moog.

Para mejorar el sonido, necesitaba recurrir a sintetizadores digitales. Se dedican a la creación de representaciones binarias de ondas de audio, su distorsión y la conversión de estos números en señales analógicas. Esto se puede hacer de muchas maneras diferentes, y me complace señalar que ArduTouch admite muchas técnicas diferentes, incluido el uso de tablas de ondas (usando muestras almacenadas en la memoria) y la generación de sonidos (contando audio sobre la marcha).

Después de crear las representaciones binarias básicas del sonido, pasamos a la etapa crítica de su "distorsión". Si no juegas con el sonido, generalmente resulta delgado y estéril. Se obtienen sonidos fríos después de la manipulación dinámica. ArduTouch es capaz de aplicar una variedad de funciones y efectos dinámicos digitales, incluidos tremolo, vibrato, portamento, así como filtros de baja y alta frecuencia.




ArduTouch usa relativamente pocos componentes


Incluso los principiantes pueden recogerlo.

Y aunque conceptualmente todo lo anterior no es algo difícil de aprender y comprender, la programación en sí es bastante complicada. La biblioteca ArduTouch, creada por mí junto con mi amigo Bill Alessi, realiza todos los cálculos de bajo nivel, y nos llevó dos años crearla.

La biblioteca está diseñada para ser flexible y permitir que incluso usuarios sin experiencia creen nuevos sintetizadores que produzcan diferentes sonidos. El sintetizador grueso que combina cuatro ondas de diente de sierra viene con el kit, y otros sintetizadores se pueden descargar por separado . Los usuarios experimentados pueden aprender a crear sintetizadores desde cero invocando funciones de alto nivel. Espero que las personas a las que les guste el proyecto creen nuevos sintetizadores y compartan su código conmigo para que yo pueda compartirlo con otros.

Pero incluso cuando se usa el sintetizador predeterminado, el sonido es inesperadamente bueno para un microcontrolador de tan baja potencia (que admite una frecuencia de muestreo de solo 15 kHz) y un equipo económico. Puedes escuchar muchas demos en mi canal de YouTube .

Para desarrollar el proyecto en el futuro, continuaré mejorando la biblioteca ArduTouch para Arduino y diseñaré sintetizadores adicionales listos para usar. También estoy trabajando para crear una versión más poderosa de ArduTouch, adecuada para presentaciones. Ya no será un kit, pero seguirá siendo compatible con Arduino. Tendrá un microcontrolador de 32 bits con muchos pines de E / S, un DAC, un montón de memoria (que permite MIDI ), una pequeña pantalla LCD, varios botones y potenciómetros e indicadores LED, y, por supuesto, un sonido mejorado.

Source: https://habr.com/ru/post/es433212/


All Articles