Quiero hablar sobre cómo resolver un problema que probablemente sea familiar para los fanáticos de los sintetizadores de hardware.
¿Qué debo hacer si quiero acoplar un controlador y sintetizador MIDI, pero uno de ellos solo tiene un conector USB y no tiene MIDI? Además, por razones obvias, quiero hacer todo esto sin usar una computadora.
Busqué en Internet varias veces en busca de un dispositivo para esto, pero no encontré nada excepto un par de enlaces a un par de dispositivos de pequeña circulación por una gran cantidad de dinero que ya se ha descontinuado.
En algún momento me di cuenta: puedes tomar la Raspberry Pi y hacer todo en ella: esta es una computadora real, y en ella esas cosas se hacen fácilmente.
Probablemente será débil para el procesamiento de sonido completo, pero el flujo de mensajes MIDI ya debería ser bombeado.
[Por cierto, hay un procesador de efectos de sonido para Raspberry Pi , pero requiere el último modelo de Raspberry Pi, que es mucho más caro, más un escudo adicional, que tampoco es barato, y decidí no molestarme].
Apenas dicho que hecho. Raspberry Pi obtuvo el primer modelo y ensambló un prototipo funcional en un par de noches. En pocas palabras cómo funciona.
ALSA Midi
Al principio, planeé tomar PureData y escribir un parche simple para él que transfiera mensajes midi de un puerto a otro.
Pero cuando comencé a usar MIDI en Linux, encontré un enfoque mucho más simple.
Linux tiene un sistema de entrada / salida de sonido estándar: ALSA. Es compatible con transmisiones de audio y MIDI.
Para que un programa reciba mensajes MIDI a través de ALSA, primero debe conectarlo a la fuente de estos mensajes. ¡Pero esto es exactamente lo que necesitamos para resolver este problema! Sin pensarlo dos veces, tiré PureData e hice todo con las herramientas nativas de ALSA.
Aquí está el resultado.
conexión
Cuando conecta un dispositivo MIDI al sistema, aparece en los dispositivos ALSA y puede realizar varias operaciones con comandos estándar. Estamos interesados en el equipo de aconnect
, que solo hace la conexión-desconexión de los puertos. La documentación detallada se puede encontrar aquí .
En realidad, solo necesitamos dos operaciones: mostrar una lista de dispositivos disponibles y conectar un dispositivo a otro:
# MIDI-, aconnect -l # Arturia Keystep Xio aconnect 'Arturia KeyStep 32' 'Xio'
Envuelvo estos comandos con scripts de systemd de inicio automático y los configuré para que se inicien constantemente en un bucle, puedes ver cómo lo hice aquí .
Alternativas
Si aún necesita procesar de alguna manera el flujo MIDI antes de enviarlo a la salida, puede usar varias opciones:
- Algunos de los lenguajes de procesamiento de audio:
- Mididings
Si conoce más opciones, envíe.
Upd: Resumen
Después de un mes y medio de experimentos, resumo.
Como resultado, la práctica ha demostrado que no importa la transferencia de notas: las notas a menudo se mueven y se saltan.
Para la transmisión de reloj, es más o menos normal: en la sincronización del arpegiador del sintetizador controlado con el ritmo maestro de las jambas, no oigo.
Pero para la transferencia de mensajes del controlador, parece ser ideal.
Ahora puede conectar Launch Control XL a cualquier sintaxis.
Referencias
La última vez que estudié esta pregunta por alguna razón, no pude encontrar nada.
Esta vez hubo muchas cosas, publicaré enlaces aquí para que no repitan mi camino si surge el mismo problema.