Enfant, j'avais un piano, un vrai soviétique de 300 kilogrammes, j'aimais jouer dessus et même jouer quelque chose après avoir obtenu mon diplôme d'école de musique. Un piano est cool, authentique, mais pas du tout pratique. Et pour être absolument simple pour l'âme, vous avez également besoin d'un kit de batterie, cinq talons de guitare électrique, clarinette, sitar et boucles d'échantillons ...

Bien sûr, maintenant il n'est plus nécessaire de faire un garage garage de l'appartement pour une cachette de six salaires, il suffit d'installer un éditeur de musique gratuit sur le PC. Mais, tout cela est inconfortable.
Le clavier du PC n'est pas du tout comme un instrument à clavier, ici ce n'est pas le cas. De plus, pour enseigner à un enfant, cela ne convient pas du tout. Il semble qu'il n'y ait pas d'autre choix que d'acheter un synthétiseur. Mais les doutes me déchirent encore.
Qu'est-ce qu'un synthétiseur? Un gros appareil avec un clavier musical, qui quelque part devrait occuper une place décente. Dans lequel l'acoustique est intégrée, et pourtant j'ai déjà un récepteur avec haut-parleurs. Qui a un joli PC intégré, mais j'ai un bon PC.
Il s'avère que pour 40 000 euros, j'achète ce que j'ai déjà dans la meilleure qualité, à l'exception du clavier uniquement. Ce ne sont que quelques dépenses irrationnelles maximales.
À la recherche d'un clavier séparé, je suis tombé sur une classe d'appareils tels que le clavier MIDI USB.
Il m'a toujours semblé que le MIDI venait du domaine de l'activité musicale professionnelle.
Mais maintenant, toute la musique est faite sur un PC, dans n'importe quel endroit pratique, ce qui signifie que les musiciens ont besoin de claviers musicaux mobiles qui s'intègrent facilement dans un sac à dos.
Ça y est!
Un plan s'est immédiatement formé dans ma tête. Nous connectons le clavier MIDI au centre multimédia domestique basé sur le Raspberry Pi 3, où le synthétiseur logiciel tourne, permettant à quiconque veut réaliser son prochain chef-d'œuvre à tout moment. Sur ces claviers MIDI, en règle générale, il y a un ensemble de boutons et de boutons supplémentaires qui sont programmés pour divers effets ou instruments de musique supplémentaires. Il a l'air et semble très cool!
Il existe des appareils plus grands et plus petits, il y a plus cher et légèrement moins cher. J'ai choisi l'option pour environ 5 sput. Il a deux octaves, une touche de taille normale, un bouton pour les batteurs, un bouton de réglage, c'est tout ce dont un musicien électronique novice peut rêver.
Je ne suis pas spécial dans la création de musique sur PC, il était donc difficile de trouver des moyens de mettre en œuvre mes idées. Les informations devaient être collectées petit à petit. Le puzzle a progressivement commencé à prendre forme et il s'est avéré assembler une solution de travail, que je partage avec vous. Curieusement, dans la distribution standard Raspbian / Debian, tout a été trouvé dont vous aviez besoin, vous n'aviez même pas besoin de connecter des référentiels externes.
Fluidsynth est utilisé comme séquenceur (une application qui lit des fichiers MIDI).
Le clavier MIDI est immédiatement détecté via ALSA et est disponible pour la connexion à un séquenceur.
Pour jouer les sons de divers instruments, des exemples de bases de données ouvertes au format SoundFont2 sont utilisés. Pour commencer, installez tout.
sudo -s apt-get update apt-get -y install alsa-utils fluid-soundfont-gm fluidsynth
Nous connectons le clavier MIDI à Raspberry et démarrons le séquenceur en mode serveur:
fluidsynth -i -s -a alsa -g 3 /usr/share/sounds/sf2/FluidR3_GM.sf2
Nous exécutons la commande:
aconnect -o
En conséquence, nous verrons une liste des clients 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)'
Ici, il est important pour nous de nous souvenir des numéros des clients clavier et séquenceur, puis de les connecter avec la commande:
aconnect 20:0 128:0
Nous sommes maintenant prêts à jouer du piano Yamaha (c'est l'instrument par défaut). Lisez le manuel de
fluidsynth , il y a de nombreuses commandes intéressantes, par exemple, pour changer l'instrument en batterie ou en vents, régler la quantité de réverbération ou de chorus.
Rendons notre synthétiseur logiciel pratique. Afin de ne pas connecter manuellement le clavier au séquenceur à chaque fois, nous écrirons un simple démon qui le fera automatiquement au démarrage.
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
Enregistrez le démon pour l'exécution automatique:
chmod 755 /etc/init.d/fluidsynth update-rc.d fluidsynth defaults
Veuillez noter qu'à présent au démarrage, le fichier de configuration (/ home / osmc / midi-router) contenant les commandes qui transforment notre clavier en véritable synthétiseur est transféré vers le séquenceur.
Voici le truc. Chaque touche et touche du clavier envoie des événements spécifiques, avec son propre numéro. Si je comprends bien, il n'y a pas de normes spéciales, donc chaque fabricant fait ce qu'il veut. Par exemple, je veux que les touches carrées sonnent de la batterie, le reste des touches pour jouer du piano, les boutons pour contrôler le volume, la réverbération et le chorus.
J'ai donc besoin de mapper les codes d'événements du clavier à différents instruments, et les codes des poignées aux codes que le séquenceur comprend. Dans fluidsynth, cela se fait à l'aide d'un routeur. Ce sont ces commandes qui sont contenues dans le fichier de configuration.
Voici un exemple de mon fichier de configuration, avec des commentaires sur ce qu'il fait.
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
Pour savoir quels codes votre appareil génère, vous devez utiliser cet utilitaire:
aseqdump -p 20:0
Elle écoute et affiche les événements depuis le clavier MIDI de la console. Appuyez sur le bouton ou tournez le bouton et vous verrez le type, le canal et le code d'événement. Vous pouvez programmer votre clavier de la manière que vous voulez, et non de la manière dont les ingénieurs qui ont développé le synthétiseur en question ont été conçus. Un grand merci aux développeurs de fluidsynth, alsa, SoundFont2, Raspberry et V-Mini.
Soit dit en passant, ce sujet avec les synthétiseurs DIY se reflète dans plusieurs inventions, je recommande pour l'étude:
une et
deux fois .