Creación de Google Open Nsynth Super
Un instrumento basado en tecnología de Raspberry Pi y aprendizaje automático para generar nuevos sonidos únicos que existen entre sonidos diferentes.
NSynth ("Neural Synthesizer", sintetizador neuronal) es un algoritmo de aprendizaje automático o inteligencia artificial de Google y otros colaboradores que emplea una red neuronal profunda para aprender las características de los sonidos y crear posteriormente un sonido completamente nuevo basado en ellos. Más que limitarse a mezclar sonidos, lo que hace en realidad es crear un sonido completamente nuevo usando las cualidades acústicas de los sonidos originales.
Open NSynth Super es una interfaz física experimental para NSynth basada en torno a Raspberry Pi, una PCB personalizada y una sencilla carcasa cortada con láser. Viene provisto de imágenes de sistema operativo llave en mano que incluyen software y firmware preconfigurados, junto con una serie de sonidos de ejemplo; esto permite evitar el proceso de generación de archivos de audio, que consume muchos recursos, para empezar a experimentar con el sintetizador.
El diseño de la PCB, el firmware del microcontrolador, el software y el diseño de la carcasa están publicados bajo licencias de código abierto, lo que significa que cualquiera puede crear su propio Open NSynth Super.
Teoría de funcionamiento
Diagrama del codificador automático WaveNet. Fuente: magenta.tensorflow.org.
Como se ha mencionado anteriormente, NSynth utiliza redes neuronales profundas para generar sonidos y en el sitio web se describe el proceso de la siguiente manera:"Por medio de un codificador automático, extrae 16 características temporales definitorias de cada entrada. Posteriormente, estas características se interpolan de forma lineal para crear nuevas incrustaciones (representaciones matemáticas de cada sonido). Estas nuevas incrustaciones se decodifican en nuevos sonidos, que tienen las cualidades acústicas de ambas entradas".
Dispones de más información en NSynth: página de Neural Audio Synthesis.
Información general de Open NSynth. Fuente: https://github.com/googlecreativelab/
Después, Open NSynth Super toma el audio generado y proporciona una interfaz física o instrumento con:
- Entrada MIDI para conectar un teclado de piano, un secuenciador, un ordenador, etc.
- Cuatro mandos giratorios para asignar instrumentos a las esquinas del dispositivo
- Pantalla OLED para ofrecer información sobre el estado y el control de los instrumentos
- Controles de precisión para:
- Posición: establece la posición inicial de la onda.
- Ataque establece el tiempo necesario para el incremento inicial de nivel.
- Caída establece el tiempo necesario para la disminución posterior.
- Sostenimiento establece el nivel durante la secuencia principal del sonido.
- Desvanecimiento establece el tiempo necesario para que el nivel disminuya desde el nivel de sostenimiento hasta cero.
- Volumen establece el volumen de salida.
- Interfaz táctil para explorar las posiciones entre sonidos.
Para la gestión de las entradas físicas se utiliza un microcontrolador que se programa antes del primer uso.
Lista de materiales
En el repositorio de GitHub se proporciona una lista completa de materiales y aquí se incluye un subconjunto de la misma para ofrecer una idea de los principales componentes utilizados.
- 1 Raspberry Pi 3 Model B (896-8660)
- 6 potenciómetros Alps RK09K Series (729-3603)
- 4 mandos giratorios Bourns PEC11R-4315F-N0012
- 2 CI de controlador táctil Microchip AT42QT2120-XU (899-6707)
- 1 microcontrolador STMicroelectronics STM32F030K6T6, 32bit ARM Cortex(829-4644)
- 1 convertidor de audio TI PCM5122PW, DAC Dual 32 bit (814-3732)
- o 1 pantalla Adafruit 1.3" OLED
Para obtener una lista completa, que incluye elementos pasivos y fijaciones mecánicas, etc., consulte el repositorio de GitHub.
El repositorio también incluye archivos Gerber que se pueden enviar al fabricante de la PCB que elijas.
Montaje
La mayoría de los componentes son de montaje superficial y si bien el paso de cable se reduce a unos 0,5 mm, estos componentes se pueden soldar a mano si se tiene cuidado. Sin embargo, aunque haya quien asegure que no es absolutamente necesario, sí es aconsejable disponer también de un microscopio estereoscópico y una estación de aire caliente. Y no hace falta decir que también deberías tener flux y mecha de soldadura en abundancia.
Para facilitar el trabajo, la PCB lleva estampada una tabla con las designaciones de los componentes.
Por lo general, conviene comenzar con las piezas más pequeñas e ir aumentando el tamaño; por este motivo se colocaron primero las resistencias.
Después, los condensadores.
A continuación, los CI.
Aquí es donde un microscopio estereoscópico puede resultar de gran ayuda, sobre todo si se producen cortocircuitos.
Por desgracia, me las arreglé para que hubiese demasiada soldadura en los pines del DAC y después de aplicar mucho flux y de atacar con mecha de soldadura, se hicieron cortocircuitos detrás de la parte curvada de los pines. Para resolverlo, se necesitó la estación de aire caliente (124-4133) y después de calentarla, la soldadura se fundió y se agotó.
Si no has usado una estación de aire caliente antes, te recomendaría que echaras un vistazo a la entrada del blog de Karl Woodward, Choosing your next soldering tool (Elegir tu próxima herramienta de soldadura).
La pantalla está asegurada debajo de un hueco en la PCB, por medio de pines que atraviesan las dos placas en la parte superior y soldadura que rellena dos lengüetas en la parte inferior de la placa de la pantalla.
Después se colocaron los potenciómetros.
A continuación, los mandos giratorios de cada esquina.
Arriba podemos ver la placa montada casi en su totalidad, solo faltan por instalar unos pocos conectores.
Tenga en cuenta que no hay mucho espacio entre los pines de las piezas con agujeros pasantes y las carcasas metálicas de los conectores de Raspberry Pi, por lo que se aplicó un trozo de cinta Kapton sobre la primera para mayor seguridad.
Esto se puede ver con un poco más de claridad con el Pi colocado arriba.
Luego, se recortó la carcasa de acrílico rojo y se escribió en una tarjeta SD. En el primer arranque, se conectó un teclado y un monitor para que pudiéramos seguir el procedimiento de programación del microcontrolador, un paso que resultó bastante sencillo y no llevó mucho tiempo.
Ten en cuenta que los pasos que se detallan aquí no pretenden sustituir las instrucciones oficiales que se proporcionan en el repositorio de GitHub y si estás construyendo tu propio Open NSynth Super, son esas instrucciones las que tienes que consultar.
Pruebas
Para efectuar las pruebas, descargamos un archivo MIDI de Internet y lo reprodujimos a través de un portátil con Linux y una interfaz USB/MIDI por medio del comando "aplaymidi". Como era de esperar, el NSynth Super cobró vida, pudimos asignar instrumentos a cada esquina y luego interpolarlos a través del prodigioso aprendizaje automático para crear nuevos instrumentos, desconocidos hasta ahora —al menos para nosotros—, como la "flarimba".