Tabla de contenido:

Módulo de sintetizador Raspberry Pi Stompbox: 6 pasos (con imágenes)
Módulo de sintetizador Raspberry Pi Stompbox: 6 pasos (con imágenes)

Video: Módulo de sintetizador Raspberry Pi Stompbox: 6 pasos (con imágenes)

Video: Módulo de sintetizador Raspberry Pi Stompbox: 6 pasos (con imágenes)
Video: SUNVOX modular synth on Raspberry Pi 2024, Mes de julio
Anonim
Módulo de sintetizador Raspberry Pi Stompbox
Módulo de sintetizador Raspberry Pi Stompbox
Módulo de sintetizador Raspberry Pi Stompbox
Módulo de sintetizador Raspberry Pi Stompbox

El objetivo de este proyecto es colocar un módulo de sonido basado en Fluidsynth en un stompbox. El término "módulo de sonido" que suena técnico en este caso significa un dispositivo que toma mensajes MIDI (es decir, valor de nota, volumen, inflexión de tono, etc.) y sintetiza sonidos musicales reales. Combine esto con un controlador MIDI, que son legión, baratos y, a menudo, muy geniales (¡como keytars!), Y tendrá un sintetizador que puede modificar y ajustar infinitamente, y diseñar de una manera que se adapte a su estilo de interpretación.

Una descripción general amplia de este proyecto es que tomamos una pequeña computadora Linux de una sola placa (una Raspberry Pi 3 en este caso), conectamos una pantalla LCD de caracteres, un par de botones y una tarjeta de sonido USB (ya que el sonido integrado de la Pi no es muy bueno) y meter todo en un pedal de efectos Hammond 1590bb (como los que se utilizan para efectos de guitarra) con algunas conexiones exteriores para salidas USB MIDI, alimentación y audio. Luego configuramos el software interno para ejecutar un programa al inicio que ejecuta FluidSynth (un excelente sintetizador de software gratuito multiplataforma), controla la pantalla LCD y nos permite cambiar parches y configuraciones usando los botones.

No entraré en detalles minuciosos paso a paso en esta compilación (hay muchos tutoriales de hey-i-made-a-cool-raspberry-pi-case), sino que intentaré concentrarme en por qué hice varias opciones en la construcción y el diseño a medida que avanzaba. De esta manera, con suerte, puede hacer modificaciones para adaptarse a sus propios propósitos sin atascarse en hacer cosas que luego resulten no funcionar.

ACTUALIZACIÓN (mayo de 2020): si bien este instructivo sigue siendo un excelente lugar para comenzar para un proyecto como este, he realizado muchas mejoras tanto en el hardware como en el software. El software más reciente es FluidPatcher, disponible en GitHub; consulte la wiki para obtener muchos detalles sobre cómo configurar la Raspberry Pi. ¡Visite mi sitio Geek Funk Labs para obtener noticias y actualizaciones continuas sobre SquishBox!

Suministros

Esta es una breve lista (y una explicación) de los componentes más cruciales:

  • Computadora Raspberry Pi 3: cualquier computadora Linux de placa única podría funcionar, pero la Pi 3 tiene suficiente potencia de procesamiento para ejecutar Fluidsynth sin latencia y suficiente memoria para cargar grandes fuentes de sonido. El inconveniente es que tiene un sonido integrado deficiente, por lo que necesita una tarjeta de sonido USB. El CHIP es una alternativa que estoy explorando (tamaño más pequeño, mejor sonido, pero menos memoria / procesador)
  • Recinto Hammond 1590BB: sugiero que compre uno que esté prepintado en polvo si desea color, a menos que pintar stompboxes sea algo que le guste. Busqué muchos foros de mensajes, pero creo que no tengo la paciencia ni el tipo correcto de pintura, porque después de dos intentos mis resultados son bastante regulares.
  • Tarjeta de sonido USB: puede encontrar una adecuada de estas a un precio bastante bajo. De acuerdo con este hermoso tutorial de Adafruit (uno de muchos), debe seguir con uno que use el chipset CM109 para una máxima compatibilidad.
  • LCD de caracteres: hay muchos lugares diferentes para obtenerlos, pero los pines parecen ser bastante estándar. Asegúrate de tener luz de fondo para que puedas ver tus ajustes preestablecidos cuando juegues en los clubes llenos de humo.
  • Interruptores de pedal momentáneos (2): un poco más difícil de obtener, pero me puse momentáneo en lugar de alternar para poder tener más versatilidad. Puedo simular alternar en el software si quiero ese comportamiento, pero de esta manera también puedo tener diferentes funciones para toque corto, presión larga, etc.
  • Adafruit Perma-Proto Hat para Pi: esto me ayudó a conectar la pantalla LCD y otros componentes al puerto de expansión de Pi sin ocupar mucho espacio adicional. Si hubiera intentado usar un perfboard normal, habría tenido que sobresalir por los lados del Pi para poder conectarme a todos los pines GPIO necesarios. El revestimiento de doble cara y los orificios de montaje a juego también fueron muy útiles. A la luz de todo esto, era realmente la opción más barata.
  • Conectores USB: 1 hembra de tipo B para alimentación y dos de tipo A macho y hembra con los que hacer algunos cables extensores delgados y flexibles para las conexiones internas.
  • Tomas de audio de 1/4 ": utilicé una estéreo y una mono. De esa manera, el estéreo puede ser una toma de auriculares / mono, o simplemente llevar la señal izquierda si la otra toma está conectada.

Paso 1: Electrónica interna

Electrónica interna
Electrónica interna
Electrónica interna
Electrónica interna
Electrónica interna
Electrónica interna

Conectaremos la pantalla LCD y sus componentes asociados y los pulsadores al Pi Hat. Además, agregaremos un conector USB-B y USB-A para conectar la alimentación y un dispositivo MIDI, respectivamente. Traemos el puerto USB-A porque necesitamos usar uno de los puertos USB del Pi para conectar la tarjeta de sonido, que queremos tener dentro del gabinete, por lo que no podemos tener los puertos USB al ras con el costado de la caja. Usé un puerto USB-B para la alimentación porque sentí que podría soportar más castigo que el conector de alimentación micro-USB de Pi, además no pude encontrar una buena orientación donde el conector podría estar al lado del borde de la caja de todos modos.

Necesitará usar un cuchillo para cortar los rastros entre los orificios donde soldará los pines de las tomas USB. Solo tenga cuidado de no cortar ninguno de los rastros internos en la placa que conecta los otros pines, o si accidentalmente lo hace (como yo), vuelva a conectarlos con un cable de puente. Los pines Vcc y GND del conector USB-B van a 5V y GND en el puerto de expansión de Pi, respectivamente. De esta manera, puede alimentar su stompbox con un cargador de teléfono (suponiendo que tenga suficiente amperaje, 700mA parece funcionar para mí, pero es posible que desee más para asegurarse de que el puerto USB tenga suficiente energía para alimentar su controlador) y un cable USB A-B.

Encuentro que las longitudes de cable plano funcionan muy bien para conectar cosas con muchos pines sin tener demasiados espaguetis de alambre. Hice esto en lugar de soldar conectores macho en la pantalla LCD y luego soldarlos en el sombrero porque sentí que necesitaba algo de libertad para colocar la pantalla LCD para poder centrarla bien. La pantalla LCD debe venir con un potenciómetro que se usa para ajustar el contraste; asegúrese de colocarlo en un lugar donde no quede cubierto por la pantalla LCD, para que pueda hacer un agujero en la caja para alcanzarlo y ajustar el contraste una vez. todo está armado.

Consulte el esquema para obtener detalles sobre qué se conecta y dónde. Observe que los botones pulsadores están conectados a 3,3 V, ¡no a 5 V! Los pines GPIO solo están clasificados para 3.3V - 5V dañarán su CPU. El conector USB-A se conecta a otra tira de cable plano, que luego puede soldar a un enchufe USB que conectará a uno de los puertos USB de Pi para su controlador MIDI. Corte cualquier metal extra del enchufe para que sobresalga menos y use pegamento caliente para aliviar la tensión; no tiene que ser bonito ya que estará escondido dentro de la caja.

Paso 2: cableado de salida de audio

Cableado de salida de audio
Cableado de salida de audio
Cableado de salida de audio
Cableado de salida de audio
Cableado de salida de audio
Cableado de salida de audio

No importa cuán pequeña sea la tarjeta de sonido USB que encuentre, es probable que ella o su enchufe sobresalgan demasiado de los puertos USB de la Pi para que todo entre en la caja. Por lo tanto, suelde otro conector USB corto con un cable plano, enchufes USB y pegamento caliente como se muestra en la imagen de arriba. Mi tarjeta de sonido todavía era demasiado gruesa para caber en el gabinete con todo lo demás, así que quité el plástico y lo envolví en cinta adhesiva para evitar que se produjera un cortocircuito con las cosas.

Para que el audio de la tarjeta de sonido llegue a las tomas de 1/4 ", corte el extremo de un cable de auriculares o AUX de 3,5 mm. Asegúrese de que tenga 3 conectores: punta, anillo y funda (TRS), en lugar de 2 o 4. La manga debe estar a tierra, la punta suele ser el canal derecho y el anillo (el conector del medio) suele estar a la izquierda. Puede conectar la punta y el anillo a dos conectores mono (TS - punta, manga) de 1/4 "y listo con él, pero puede obtener más versatilidad con un poco de cableado adicional. Busque un conector TS que tenga un tercer contacto momentáneo, como se muestra esquemáticamente en el diagrama anterior. Al insertar un enchufe se rompe este contacto, por lo que, como puede ver en el diagrama, la señal izquierda irá al conector TS si se inserta un enchufe, y al anillo del conector TRS si no se inserta ningún enchufe. De esta manera, puede conectar auriculares en el conector estéreo, un solo cable mono en el conector estéreo para una señal combinada derecha / izquierda (mono), o un cable en cada conector para salidas separadas derecha e izquierda (estéreo).

Conecté los pines de tierra de los jacks a los del cable que viene de la tarjeta de sonido, de modo que todo en la caja comparta la misma tierra y evite el desagradable zumbido de los bucles de tierra. Sin embargo, dependiendo de a qué esté conectado, esto puede tener el efecto opuesto, por lo que es posible que desee incluir un interruptor que le permita conectar o "levantar" el suelo en las tomas de 1/4 ".

Paso 3: preparación del gabinete

Preparación del recinto
Preparación del recinto
Preparación del recinto
Preparación del recinto
Preparación del recinto
Preparación del recinto

Este paso cubre los agujeros de corte en la caja para la pantalla, botones, conectores, etc. y separadores de epoxi en el gabinete para montar el sombrero Pi.

Comience colocando todos los componentes en el gabinete para asegurarse de que todo encaje y esté orientado de la manera correcta. Luego, mida y marque con cuidado dónde va a hacer los agujeros. Al cortar orificios redondos, recomiendo comenzar con una broca pequeña y trabajar hasta el tamaño que necesita; es más fácil centrar el orificio y es menos probable que su taladro se atasque. Los orificios rectangulares se pueden cortar perforando un orificio en las esquinas opuestas de la abertura prevista y luego cortando con una sierra de calar las otras dos esquinas. Este grosor de aluminio en realidad se corta bien con una sierra de calar siempre que lo haga con suavidad. Una lima cuadrada es muy útil para cuadrar las esquinas de las aberturas. Haga las aberturas para los enchufes USB un poco generosas en caso de que tenga cables gruesos.

Un epoxi de dos etapas (como el Gorilla Glue de la imagen) funciona bien para fijar los separadores del sombrero a la carcasa de metal. Raspe un poco la superficie del gabinete y la parte inferior de los separadores con lana de acero o un destornillador para que el epoxi pueda agarrarse mejor. Recomiendo colocar sus separadores en el sombrero Pi antes de pegarlos para que sepa que están colocados correctamente; no hay mucho margen de maniobra aquí. Solo usé tres separadores porque mi LCD estaba en el camino del cuarto. Mezcle los dos componentes del epoxi, pegue un poco en los separadores y fíjelos en su lugar. Evite mover o reposicionar las piezas después de más de 10 a 15 segundos, o la unión se volverá quebradiza. Espere 24 horas para que se configure para que pueda seguir trabajando. Se necesitan unos días para curar por completo, así que no estreses el vínculo innecesariamente.

A menos que desee hacer otro pasatiempo de pintar pedales, le sugiero que deje el aluminio al descubierto (en realidad no tiene un mal aspecto) o compre un gabinete prepintado. La pintura no quiere adherirse al metal. Si quieres probarlo, lija todos los lugares donde quieras que se pegue la pintura, usa primero una buena pintura en aerosol de imprimación para carrocería, aplica varias capas del color que desees y luego déjala secar el mayor tiempo posible. En serio, los maníacos de los foros sugieren cosas como dejarlo bajo el sol directo durante tres meses o en un horno tostador a fuego lento durante una semana. Después de lijar los restos arrugados y descascarados de mi primer trabajo de pintura, mi segundo intento todavía tiene astillas y grietas de cosas como bolígrafos en mi bolsa de trabajo, y el acabado se puede abollar con una uña. Decidí ceder y opté por el estilo punk, utilizando un marcador de blanqueamiento para las letras.

Paso 4: configuración del software

Configuración del software
Configuración del software
Configuración del software
Configuración del software

Antes de meter todo en el stompbox y atornillarlo bien, debe configurar el software en la Raspberry Pi. Sugiero comenzar con una nueva instalación del sistema operativo Raspbian, así que obtenga una copia reciente del sitio de la Fundación Raspberry Pi y siga las instrucciones allí para crear una imagen en una tarjeta SD. Tome un teclado y una pantalla o use un cable de consola para iniciar sesión en su Pi por primera vez y acceda a una línea de comandos. Para asegurarse de tener las actualizaciones de software y firmware más recientes, ingrese

sudo apt-get update && sudo apt-get upgrade

sudo rpi-update

A continuación, desea asegurarse de que puede usar wifi para enviar un SSH al Pi y realizar modificaciones una vez que esté abrochado dentro del gabinete. Primero, encienda el servidor ssh escribiendo

sudo raspi-config

y vaya a "Opciones de interfaz" y habilite el servidor ssh. Ahora, agregue una red inalámbrica al pi editando el archivo wpa_supplicant.conf:

sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

y agregando las siguientes líneas al final:

red = {

ssid = "su-red" psk = "su-contraseña"}

Reemplace su-red y su-contraseña anteriores con valores para cualquier red a la que desee que se conecte el Pi de forma predeterminada, lo más probable es que su enrutador wifi en casa, o tal vez el punto de acceso en su teléfono o una computadora portátil que se ejecute en modo de punto de acceso. Otra alternativa para conectarse a su Pi es configurarlo como un punto de acceso wifi, para que pueda conectarse sin importar dónde se encuentre. La interfaz que escribí a continuación también te permite emparejar otro dispositivo bluetooth con el Pi, después de lo cual puedes conectarte a él usando serial sobre bluetooth.

Para instalar FluidSynth, escriba

sudo apt-get install fluidsynth

Los archivos adjuntos a este paso proporcionan una interfaz entre los controles stompbox y FluidSynth, y deben copiarse en el directorio / home / pi. Aquí hay una breve explicación de lo que hace cada archivo:

  • squishbox.py: un script de Python que se inicia y se comunica con una instancia de FluidSynth, lee la entrada de los botones de stompbox y escribe información en la pantalla LCD
  • config_squishbox.yaml: un archivo de configuración en el formato YAML (en su mayoría) legible por humanos que almacena la configuración y la información del parche para el programa squishbox
  • fluidsynth.py: un contenedor de Python que proporciona enlaces a las funciones de C en la biblioteca FluidSynth, con muchos enlaces adicionales agregados por mí para acceder a más funciones de FluidSynth
  • ModWaves.sf2: una fuente de sonido muy pequeña que proporcioné para demostrar el uso y la potencia de los moduladores en el formato Soundfont

Tener una secuencia de comandos de Python que configure el proceso FluidSynth y maneje todas las cosas de los botones / LCD funciona bastante bien: los mensajes MIDI van directamente a FluidSynth y la secuencia de comandos solo interactúa con él cuando es necesario.

La secuencia de comandos de Python necesita un par de bibliotecas de Python que no están instaladas de forma predeterminada. Puede instalarlos directamente desde el índice de paquetes de Python utilizando la práctica herramienta pip:

sudo pip instalar RPLCD pyyaml

Finalmente, desea que Pi ejecute el script de Python en el arranque. Para que esto suceda, edite el archivo rc.local:

sudo vi /etc/rc.local

Inserte la siguiente línea justo antes de la línea final 'salida 0' en el archivo:

python /home/pi/squishbox.py y

Paso 5: Ensamblaje final

Montaje final
Montaje final
Montaje final
Montaje final
Montaje final
Montaje final

Antes de poner todas las piezas en la caja, es una muy buena idea enchufar todo y asegurarse de que el software funcione, como se muestra en las imágenes de arriba. Las imágenes 3-6 muestran todas las partes individuales y progresivamente cómo encajan en mi caja. La pantalla LCD se mantiene en su lugar mediante los cables que presionan contra ella, pero puede usar un poco de pegamento caliente o agregar algunos tornillos de montaje más si no le gusta. La cinta adhesiva naranja en la tapa de la caja es para evitar que el Pi haga cortocircuitos contra el metal.

Puede que tenga que experimentar y reconfigurar para que las cosas encajen. Ajustado es bueno: cuantas menos partes se muevan en la caja, mejor. El calor no parece ser un problema y no he tenido ningún problema con la señal wifi bloqueada por el gabinete. No se muestran en la imagen unos pies de goma adhesivos (puede encontrarlos en una ferretería) en la parte inferior de la caja para evitar que se deslice cuando está teniendo una sesión de pisotones.

Esté atento a golpes / aplastamientos / flexiones imprevistos cuando las cosas se atornillan. Una cosa que se debe verificar es que haya suficiente espacio para los conectores de 1/4 cuando se insertan los cables; las puntas sobresalen un poco más que los contactos del conector. Además, en mi construcción monté el Pi demasiado cerca del borde de la caja y el borde de la tapa presionó hacia abajo en el extremo de la tarjeta SD y la rompió; tuve que limar una muesca en el borde para que esto no sucediera.

Paso 6: uso

Image
Image
Uso
Uso
Uso
Uso

El módulo de sonido que he descrito en estos pasos y la ejecución del software proporcionado anteriormente son bastante utilizables y extensibles, pero son posibles muchas modificaciones / variaciones. Solo describiré brevemente la interfaz aquí: planeo actualizarla continuamente en un repositorio de github, donde, con suerte, también mantendré una wiki actualizada. Por último, discutiré cómo puede ajustar la configuración, agregar nuevos sonidos y hacer sus propias modificaciones.

Para comenzar, conecte un controlador MIDI USB en el conector USB-A de la caja, una fuente de alimentación de 5 V en el conector USB-B y conecte auriculares o un amplificador. Después de un rato, la pantalla LCD mostrará un mensaje "squishbox v xx.x". Una vez que aparezca el número y el nombre de un parche, debería poder tocar notas. Toques cortos en cualquiera de los botones cambian el parche, mantener presionado cualquiera de los botones durante un par de segundos te lleva a un menú de configuración, y mantener presionado cualquiera de los botones durante aproximadamente cinco segundos te da la opción de reiniciar el programa, reiniciar el Pi o apagar el Pi (Nota: el Pi no corta la energía a sus pines GPIO cuando se detiene, por lo que la pantalla LCD nunca se apagará. Solo espere unos 30 segundos antes de desenchufarlo).

Las opciones del menú de configuración son:

  • Actualizar parche: guarda los cambios que ha realizado en el parche actual en un archivo
  • Guardar nuevo parche: guarda el parche actual y cualquier cambio como un parche nuevo
  • Elija banco: el archivo de configuración puede tener varios conjuntos de parches, esto le permite cambiar entre ellos
  • Establecer ganancia: establezca el volumen de salida general (opción de 'ganancia' de fluidsynth), demasiado alto produce una salida distorsionada
  • Chorus / Reverb: modifica los ajustes de reverb y chorus del conjunto actual.
  • MIDI Connect: intente conectar un nuevo dispositivo MIDI si lo cambia mientras el programa se está ejecutando
  • Emparejamiento de Bluetooth: ponga el Pi en modo de descubrimiento para que pueda emparejar otro dispositivo bluetooth con él
  • Estado de Wifi: informe la dirección IP actual de la Pi para que pueda acceder a ella

El archivo config_squishbox.yaml contiene información que describe cada parche, así como cosas como enrutamiento MIDI, parámetros de efectos, etc. Está escrito en formato YAML, que es una forma en varios idiomas de representar datos que las computadoras pueden analizar pero que también son humanos. -legible. Puede volverse bastante complejo, pero aquí solo lo uso como una forma de representar una estructura de diccionarios de Python anidados (matrices asociativas / hashes en otros lenguajes) y secuencias (listas / matrices). Puse muchos comentarios en el archivo de configuración de muestra y traté de estructurarlo para que uno pueda ver progresivamente lo que hace cada función. Eche un vistazo y experimente si tiene curiosidad, y no dude en hacer preguntas en los comentarios. Puede hacer mucho para cambiar los sonidos y la funcionalidad del módulo simplemente editando este archivo. Puede iniciar sesión y editar de forma remota, o enviar por FTP un archivo de configuración modificado al Pi, luego reiniciar usando la interfaz o escribiendo

sudo python /home/pi/squishbox.py &

en la línea de comando. El script está escrito para eliminar otras instancias en ejecución de sí mismo al iniciarse, de modo que no haya conflictos. La secuencia de comandos emitirá algunas advertencias en la línea de comandos cuando se ejecute, ya que busca dispositivos MIDI para conectarse y busca en varias ubicaciones sus fuentes de sonido. No está roto, esto es solo una programación perezosa de mi parte; podría atraparlos, pero afirmo que son diagnósticos.

Cuando instalas FluidSynth también obtienes la fuente de sonido FluidR3_GM.sf2 bastante buena y gratuita. GM significa general MIDI, lo que significa que contiene "todos" los instrumentos, asignados a números de banco y preset acordados comúnmente para que los reproductores MIDI que reproducen archivos con esta fuente de sonido puedan encontrar aproximadamente el sonido adecuado para piano, trompeta, gaitas, etc. Si desea más / diferentes sonidos, puede encontrar muchas fuentes de sonido gratuitas en Internet. Lo más importante es que la especificación de fuentes de sonido está ampliamente disponible, en realidad es bastante poderosa y hay un editor de código abierto maravilloso para fuentes de sonido llamado Polyphone. Con esto, puede crear sus propias fuentes de sonido a partir de archivos WAV sin procesar, además puede agregar moduladores a sus fuentes. Los moduladores le permiten controlar muchos de los elementos de síntesis (por ejemplo, envolvente ADSR, envolvente de modulación, LFO, etc.) en tiempo real. El archivo ModWaves. Hay tanto potencial aquí, ¡ve a jugar!

Espero que este tutorial genere muchas ideas y brinde a otros un buen marco para construir sus propias creaciones de sintetizadores únicos, además de respaldar la disponibilidad y el desarrollo continuos de buenas fuentes de sonido, la especificación de fuentes de sonido y un excelente software gratuito como FluidSynth y Polyphone.. La compilación que he descrito aquí no es la mejor ni la única forma de armar algo como esto. En el lado del hardware, las posibles modificaciones pueden ser una caja más grande con más botones, entrada / salida MIDI heredada (5 pines) y / o entradas de audio. La secuencia de comandos de Python se puede modificar (disculpas por mis escasos comentarios) para proporcionar otros comportamientos que podrían adaptarse mejor a ti. Estoy pensando en agregar un modo de "efectos" a cada parche donde actuará como un stompbox de efectos reales, alternando la configuración en y fuera. También se podría agregar algún software adicional para proporcionar efectos de audio digital. También creo que funcionaría mejor si el Pi se ejecuta en modo wifi AP como se describe anteriormente, y luego incluso podría proporcionar una interfaz web amigable para editar el archivo de configuración. No dude en publicar sus propias ideas / preguntas / discusiones en el feed de comentarios.

Quiero darles un gran apoyo a los creadores de FluidSynth y Polyphone por proporcionar software gratuito y de código abierto que todos podemos usar para hacer buena música. Me encanta usar esta cosa, ¡y tú lo hiciste posible!

Recomendado: