Cómo hacer un sintetizador conveniente con tus propias manos

Cuando era niño, tenía un piano, tan real, soviético, 300 kilogramos kilogramo. Me gustaba rasguearlo e incluso tocar algo después de graduarme de la escuela de música. Un piano es genial, auténtico, pero nada práctico. Y para ser absolutamente directo para el alma, también necesita una batería, cinco tacones de guitarra eléctrica, clarinete, sitar y bucles de muestra ...



Por supuesto, ahora ya no es necesario hacer un estudio de garaje desde el apartamento por un alijo de seis salarios, es suficiente instalar un editor de música gratuito en la PC. Pero, eso es todo incómodo.

El teclado de la PC no es como un instrumento de teclado, aquí no es así. Además, para enseñar a un niño esto no es del todo adecuado. Parece que no hay más remedio que comprar un sintetizador. Pero las dudas todavía me destrozan.

¿Qué es un sintetizador? Un dispositivo grande con un teclado de música, que en algún lugar debería ocupar un lugar decente. En el que la acústica está integrada, y sin embargo, ya tengo un receptor con altavoces. Que tiene una bonita PC incorporada, pero tengo una buena PC.

Resulta que por 40 mil compro lo que ya tengo en la mejor calidad, con la excepción de solo el teclado. Esto es solo algunos gastos irracionales máximos.

En la búsqueda de un teclado separado, me encontré con una clase de dispositivos como el teclado USB MIDI.
Siempre me pareció que MIDI es del campo de la actividad musical profesional.
Pero ahora toda la música se hace en una PC, en cualquier lugar conveniente, lo que significa que los músicos necesitan teclados musicales móviles que se ajusten fácilmente a una mochila.

Aqui esta!



Un plan inmediatamente se formó en mi cabeza. Conectamos el teclado MIDI al centro multimedia hogareño basado en Raspberry Pi 3, donde el sintetizador de software está girando, permitiendo a cualquiera que quiera realizar su próxima obra maestra en cualquier momento. En estos teclados MIDI, como regla, hay un conjunto de perillas y botones adicionales que están programados para varios efectos o instrumentos musicales adicionales. Se ve y suena muy bien!

Hay dispositivos más grandes y más pequeños, hay más caros y un poco más baratos. Elegí la opción por aproximadamente 5 sput. Tiene dos octavas, una tecla de tamaño normal, un botón para bateristas, un botón de afinación, eso es todo lo que un músico electrónico novato puede soñar.

No soy especial en la creación de música en una PC, por lo que fue difícil buscar formas de implementar mis ideas. La información tuvo que ser recopilada poco a poco. El rompecabezas comenzó a tomar forma gradualmente y resultó reunir una solución de trabajo, que comparto con ustedes. Curiosamente, en la distribución estándar de Raspbian / Debian, se encontró todo lo que necesitaba, ni siquiera tuvo que conectar repositorios externos.

Fluidsynth se usa como secuenciador (una aplicación que reproduce archivos MIDI).
El teclado MIDI se detecta inmediatamente a través de ALSA y está disponible para conectarse a un secuenciador.
Para reproducir los sonidos de varios instrumentos, se utilizan bases de datos de muestra abiertas en el formato SoundFont2. Para comenzar, instálalo todo.

sudo -s apt-get update apt-get -y install alsa-utils fluid-soundfont-gm fluidsynth 

Conectamos el teclado MIDI a Raspberry e iniciamos el secuenciador en modo servidor:

 fluidsynth -i -s -a alsa -g 3 /usr/share/sounds/sf2/FluidR3_GM.sf2 

Ejecutamos el comando:

 aconnect -o 

Como resultado, veremos una lista de clientes MIDI disponibles:

 client 14: 'Midi Through' [type=kernel] 0 'Midi Through Port-0' client 20: 'VMini' [type=kernel] 0 'VMini MIDI 1 ' 1 'VMini MIDI 2 ' client 128: 'FLUID Synth (1628)' [type=user] 0 'Synth input port (1628:0)' 

Aquí, es importante para nosotros recordar los números de los clientes de teclado y secuenciador, y luego conectarlos con el comando:

 aconnect 20:0 128:0 

Ahora estamos listos para tocar el piano Yamaha (este es el instrumento predeterminado). Lea el manual de fluidsynth , hay muchos comandos interesantes allí, por ejemplo, para cambiar el instrumento a batería o viento, establecer la cantidad de reverberación o coro.

Hagamos que nuestro sintetizador de software sea conveniente. Para no conectar manualmente el teclado al secuenciador cada vez, escribiremos un demonio simple que lo hará automáticamente al inicio.

 cat > /etc/init.d/fluidsynth << EOF #!/bin/bash ### BEGIN INIT INFO # Provides: fluidsynth # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Fluidsynth deamon to play via MIDI-keyboard ### END INIT INFO startDaemon() { sleep 30s && fluidsynth -i -s -a alsa -g 3 --load-config=/home/osmc/midi-router >/var/log/fluidsynth & sleep 60s && aconnect 20:0 128:0 & } stopDaemon() { pkill -9 fluidsynth &> /dev/null } restartDaemon() { stopDaemon startDaemon } case "$1" in start) startDaemon ;; stop) stopDaemon ;; restart) restartDaemon ;; status) ;; *) startDaemon esac exit 0 EOF 

Registre el demonio para la ejecución automática:

 chmod 755 /etc/init.d/fluidsynth update-rc.d fluidsynth defaults 

Tenga en cuenta que ahora, al inicio, el archivo de configuración (/ home / osmc / midi-router) que contiene los comandos que convierten nuestro teclado en un sintetizador real se transfiere al secuenciador.

Aquí está la cosa. Cada tecla y giro en el teclado envía eventos específicos, con su propio número. Según tengo entendido, no hay estándares especiales, por lo que cada fabricante hace lo que quiere. Por ejemplo, quiero que las teclas cuadradas suenen la batería, el resto de las teclas para tocar el piano, las perillas para controlar el volumen, la reverberación y el coro.

Por lo tanto, necesito asignar los códigos de eventos del teclado a diferentes instrumentos, y los códigos de los controladores a los códigos que entiende el secuenciador. En fluidsynth, esto se hace usando un enrutador. Son estos comandos los que están contenidos en el archivo de configuración.

Aquí hay un ejemplo de mi archivo de configuración, con comentarios sobre lo que hace.

 cat > /home/osmc/midi-router << EOF #     ,  -    load /usr/share/sounds/sf2/FluidR3_GM.sf2 load /home/osmc/241-Drums.SF2 #       select 1 2 128 0 select 2 1 0 0 #       0 #          router_begin note router_chan 0 0 0 1 router_par1 36 48 1 0 router_end #          router_begin note router_chan 0 0 0 2 router_par1 0 35 1 0 router_end router_begin note router_chan 0 0 0 2 router_par1 49 255 1 0 router_end #      ,   , #         fluidsynth router_begin cc router_chan 0 0 0 2 router_par1 14 14 0 98 router_end router_begin cc router_chan 0 0 0 2 router_par1 15 15 0 11 router_end router_begin cc router_chan 0 0 0 2 router_par1 16 16 0 91 router_end router_begin cc router_chan 0 0 0 2 router_par1 17 17 0 93 router_end #     0, #      #      cc 0 7 0 EOF 

Para saber qué códigos genera su dispositivo, debe usar esta utilidad:

 aseqdump -p 20:0 

Ella escucha y muestra eventos desde el teclado MIDI en la consola. Presione el botón o gire la perilla y verá el tipo, canal y código de evento. Puede programar su teclado de la manera que desee, y no de la forma en que los ingenieros que desarrollaron el sintetizador en particular idearon. Por lo cual muchas gracias a los desarrolladores de fluidsynth, alsa, SoundFont2, Raspberry y V-Mini.

Por cierto, este tema con sintetizadores de bricolaje se refleja en varios inventos, recomiendo para estudio: una y dos veces .

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


All Articles