Cómo construir la mesa de mezclas económica de Jenny
HogarHogar > Noticias > Cómo construir la mesa de mezclas económica de Jenny

Cómo construir la mesa de mezclas económica de Jenny

Oct 29, 2023

Jenny escribió un artículo de Ask Hackaday a principios de este mes, todo sobre la búsqueda de un mezclador de audio barato basado en computadora. El primer intento no salió tan bien, con un problema con el que muchos de nosotros estamos familiarizados: a las aplicaciones de Linux realmente no les gusta usar múltiples dispositivos de audio al mismo tiempo. Jenny se encontró con este problema y no encontró una forma de fusionar las tarjetas de sonido en una sola aplicación.

He luchado contra este problema por un tiempo, probablemente 10 años. Mi primera colisión con esto fue un intento de grabar un piano con tres micrófonos, usando un par de preamplificadores USB diferentes. Y, por supuesto, al igual que Jenny, rápidamente me frustró el problema de que mi software de grabación solo veía una interfaz a la vez. La solución fácil es comprar una interfaz con más canales. La Tascam US-4x4HR es una excelente interfaz de audio de entrada/salida de cuatro canales, y la línea U-PHORIA de Behringer llega hasta ocho preamplificadores de micrófono, ampliables a 16 con un segundo DAC que puede enviar audio a través de ADAT. Pero esas son interfaces semiprofesionales, con etiquetas de precios acordes.

Pero, ¿qué pasa con la idea de Jenny, de improvisar múltiples interfaces súper baratas juntas? Pues sí, eso también es posible. Te mostraré cómo, pero primero, hablemos de cómo vamos a controlar este monstruo mezclador de software. Sí, solo puedes usar un mouse o un teclado, pero el desafío era construir una mesa de mezclas y, para mí, eso significa faders físicos y botones de silencio. Ahora, existen soluciones preconstruidas, siendo el Behringer X-touch una solución popular. Pero, de nuevo, estamos muy por encima del precio que Jenny fijó para este problema. Entonces, hagamos lo que mejor sabemos hacer aquí en Hackaday y construyamos el nuestro.

Lo que necesitamos es un microcontrolador que tenga soporte de cliente USB nativo, múltiples pines de E/S digitales y algunas entradas analógicas. Elegí el Arduino MKRZero por el tamaño pequeño, el precio decente y el hecho de que en realidad está disponible en Mouser. Los otros elementos que necesitaremos son algunos faders y botones. Elegí los faders de tamaño completo de 100 mm y algunos botones de alternancia LED fabricados por Adafruit. Los imprevistos, como cables y resistencias, se obtuvieron del contenedor de piezas local en la esquina.

Mi primer pensamiento fue diseñar e imprimir en 3D el panel, pero después de hacer el diseño en un trozo de madera contrachapada, el tamaño resultante resultó demasiado grande para mi impresora. Así que nos volvemos retro y hacemos una mesa de mezclas "de madera". Este sería un gran proyecto para un enrutador CNC, pero como todavía no soy parte de ese club genial en particular, fue un taladro, una sierra de mesa y una herramienta oscilante para el rescate. Los resultados no son tan bonitos como quería, pero tal vez algún día obtengamos un Mark II de este proyecto.

El cableado es relativamente sencillo, con una resistencia limitadora de corriente para proteger los LED dentro de los botones y una resistencia pull-up para evitar que el pin digital flote cuando no se presiona el botón. Ahora, ese pullup podría no ser necesario, ya que más tarde supe que el Arduino tiene un pullup incorporado en sus pines digitales. Y también cabe destacar que una resistencia de 10 Ω *no* es una buena opción para un pullup. Como dijo Al elocuentemente, eso es una "resistencia de tracción". 10 kΩ es la mejor opción.

Y para terminar la compilación, necesitaremos un boceto para ejecutar en Arduino. Afortunadamente, ya existe una gran biblioteca para exactamente lo que queremos hacer: Superficie de control. Hay muchas formas de configurar esto, pero mi boceto es bastante trivial:

Y ahora vamos con la carne y las patatas de este proyecto. ¿Cómo convencemos a una aplicación para que vea las entradas de varios dispositivos y, de hecho, haga algunas mezclas? El problema aquí es la desincronización. Cada dispositivo se ejecuta en una fuente de reloj diferente, por lo que el flujo de bits de cada uno puede desviarse y perder la sincronización. Ese es un problema lo suficientemente serio como para que las soluciones de sonido más antiguas no implementaran mucho en la forma de combinar tarjetas. No hace mucho tiempo, el proceso de volver a muestrear esos flujos de audio para que se sincronicen correctamente habría sido un procedimiento muy intensivo para la CPU. Pero en estos días todos tenemos gigantes de múltiples núcleos, supercomputadoras prácticas en comparación con hace 20 años.

Entonces, cuando Wim Taymans escribió Pipewire, adoptó un enfoque diferente. Tenemos suficientes ciclos para volver a muestrear, por lo que Pipewire lo hará de manera transparente cuando sea necesario. Pipewire ve todas sus interfaces de audio a la vez e implementa las API Jack y Pulseaudio. Las diferentes distribuciones manejan esto de manera un poco diferente, pero generalmente necesita los paquetes Pipewire, así como los paquetes pipewire-jack y pipewire-pulseaudio para que funcione.

Y aquí está el secreto: las herramientas de enrutamiento de Jack funcionan con Pipewire. Las tres grandes opciones son qjackctl, carla y qpwgraph, aunque tenga en cuenta que qpwgraph es en realidad nativo de Pipewire. Entonces, incluso si una aplicación solo puede seleccionar un solo dispositivo a la vez, si esa aplicación usa la API Jack, Pulseaudio o Pipewire, puede usar uno de esos programas de control de enrutamiento para conectar entradas y salidas arbitrarias.

Entonces, comencemos con la solución más simple: jack_mixer. Inicie la aplicación y luego, utilizando sus controladores de enrutamiento preferidos, tome la salida MIDI de nuestra superficie de control Arduino y conéctela a la entrada MIDI de jack_mixer. En jack_mixer, agregue un nuevo canal de entrada y asígnele un nombre apropiado. Llamémoslo "platina de cinta", ya que tengo una platina de cinta USB con la que estoy probando esto. Ahora la magia del controlador entra en acción: presione el botón "aprender" para el control de volumen y mueva el primer atenuador en ese controlador. Luego siga con el botón de silencio y guarde el nuevo canal. También querremos agregar un canal de salida. Siéntete libre de asignar uno de tus faders a este también.

Y finalmente, regrese al programa de enrutamiento, y conecte la salida de su casetera a la entrada jack_mixer, y enrute la salida de jack_mixer a sus altavoces. ¡Reproduzca una cinta y disfrute del control total que tiene sobre el volumen y el silenciamiento! ¿Quieres agregar un video de Youtube a la mezcla? Inicie la reproducción del video y simplemente use el controlador de enrutamiento para desconectarlo de sus parlantes y aliméntelo a un segundo canal en jack_mixer. Repita con cada una de esas cinco tarjetas de sonido baratas y desagradables. ¡Ganancia!

Hay una aplicación más para mencionar aquí. En lugar de usar jack_mixer, podemos usar Ardor para hacer el trabajo pesado. Para configurarlo de esta manera, hay dos configuraciones principales de Ardor, que se encuentran en las preferencias: en la pestaña de monitoreo, asegúrese de que "Monitoreo de grabación manejado por" esté configurado en Ardour, y la opción "Entrada automática hace respuesta" esté marcada. Luego agregue sus pistas, configure la entrada de la pista al hardware de entrada apropiado y la salida de la pista al bus maestro. Asegúrate de que el bus maestro esté enrutado a donde quieras, y también deberías poder mezclar en vivo con Ardour.

Esto le brinda todo tipo de ventajas para jugar, en forma de complementos. ¿Quieres un compresor o ecualizador en una fuente de sonido? Ningún problema. ¿Quieres autosintonizar una fuente? X42 tiene un complemento que hace eso. Y, por supuesto, Ardor trae grabación, bucles y todo tipo de otras opciones a la fiesta.

Ardor también es compatible con nuestra interfaz de mezcla personalizada. También en preferencias, busque la pestaña Superficies de control y asegúrese de que General MIDI esté marcado. Luego resáltelo y haga clic en el botón "Mostrar configuración de protocolo". El MIDI entrante debe configurarse en nuestro dispositivo Arduino. Luego puede usar el atajo Ctrl + clic central en los faders del canal y los botones de silenciamiento para ponerlos en modo de aprendizaje. Mueva un control para asignarlo a esa tarea. O alternativamente puedes agregar un archivo .map al directorio midi_maps de Ardour. El mío se ve así:

Ahora, antes de que se emocione demasiado e invierta un montón de dinero y/o tiempo en una configuración de audio de Linux, hay algunas cosas que debe saber. Primero está la latencia. Es realmente un desafío configurar un sistema Pipewire para lograr una latencia realmente baja, especialmente cuando se utiliza hardware basado en USB. Es posible, y se está trabajando en el tema. Pero hasta ahora, lo mejor que he logrado ejecutar estable es una medición de ida y vuelta de 22 milisegundos, y eso requirió mucho jugar con los archivos de configuración de Pipewire para evitar audio ilegible. Eso es casi utilizable para el autocontrol y la música en vivo, y para reproducir cualquier cosa pregrabada, eso está perfectamente bien.

Lo segundo que hay que saber es que esto fue increíble. Es un poco preocupante lo divertido que es combinar un hardware de audio decente con las increíbles herramientas gratuitas que están disponibles. ¿Quiere sintonizar automáticamente su voz para su próxima reunión de Zoom? Fácil. ¿Construir un pequeño teclado MIDI en su escritorio? Solo un microcontrolador y algo de soldadura. El cielo es el límite. Y el futuro también es brillante. Herramientas como Pipewire y Ardor están en desarrollo muy activo, y los parches del kernel en tiempo real están a punto de llegar a la meta. Vuélvete loco, crea cosas geniales y luego ¡asegúrate de contarnos al respecto!