Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]






Informations


Site web officiel RaspBerry : https://www.raspberrypi.org/ . Image
Site web officiel RaspBian : https://www.raspbian.org/ . Image
Site web Cryptos-Adv :http://www.cryptos-sys.ch/?Raspberry-pi-3-audio-numerique


Description


Dans cet article, nous allons aborder la construction d’un synthétiseur matériel sur la base d’un Rasperry Pi, ainsi que sa configuration logicielle.


Le Raspberry Pi 3 est un micro-ordinateur qui fait suite au Raspberry Pi 2. Cette évolution apporte des améliorations notables :
  • Processeur 1200 Gigahertz
  • Mémoire de 1 Gb
  • La connectique est bien fournie: 1 sortie HDMI, une sortie son, 4 ports USB, un port réseau
  • Wifi intégré ainsi que Bluetooth (ces deux éléments ne nous intéresseront pas)
  • Le tout sur une carte PCB d’environ 9cm x 6cm.
L'intérêt est aussi le nombre de cartes optionnelles que l’on peut y ajouter : écran tactile, carte son 192Khz, caméra, etc.
Image Image Image et pour le dessert Image


Le projet


Les prérequis d'un enregistreur de qualité et efficace :
  • direct-to-disk pour l'enregistrement
  • un micro avec alimentation fantôme de 48 V ainsi que des micros lavallière.
  • configuration de l’enregistrement doit être simple et rapide.
  • l’enregistrement doit s’effectuer au minimum en 48000Hz. La carte incluse ne peut en aucun cas nous servir, celle-ci étant de qualité médiocre.
Par la suite, tester le système en tant que synthétiseur de sons.


Le matériel choisi


Image

et en tant que digestif Behringer U-PHORIA UMC204-HD 24-Bit/192 kHz tout de même

Image

  • carte principale Raspberry Pi 3
  • Raspberry Pi 7´´ affichage tactile
  • Behringer XENYX Q502USB. Ce choix s'impose dans le cas des prérequis fixés. Entrées et sorties. Le Behringer est petit et dispose d'une alimentation fantôme 48 V, de 5 entrées, 2 bus ainsi qu'un compresseur. Les cartes son Raspberry ne possède en effet qu'une sortie stéréo. Par contre, se justifie sans aucun doute dans le cas d'un synthétiseur sans possibilité d'enregistrement.
  • Behringer U-PHORIA UMC204HD 24-Bit/192 kHz. Alimentation fantôme 48V + MIDI IN/OUT
  • Une carte Micro SD de 32 Gb ou mieux de 64 Gb. Il vaut mieux aussi choisir la marque qui propose le débit le plus rapide.
  • Clavier Axiom 61 touches.
  • Alimentation 5V 2.5A. Requise afin de faire fonctionner correctement la carte principale, l'écran tactile et le clavier (oui cette alimentation permet d'alimenter aussi le clavier)
Une valise. Non, je ne pars pas biggrin mais il faut que ce soit transportable.


Logiciels


  • Le système d'exploitation par défaut et conseillé est Linux. Plus précisément la RaspBian https://www.raspbian.org/ Image . Cette distribution est basée sur la Debian Stretch.
  • Carla (KxStudio) présent dans certains dépôts spécifiques. La version proposée dans ces dépôts est la Carla-git 1.9.2 qui présente le défaut de ne pouvoir enregistrer les connections. Il faudra donc compiler une version plus récente à l'aide des sources git.
  • Le paquet "build-essential" des dépôts ainsi qu'un certain nombre de logiciel en version dev
  • TimeMachine ou mieux encore QjackRcd
  • ZynAddSubFx, pour la partie synthé
  • LinuxSampler qu'il faudra aussi recompiler
  • Les greffons LV2 FluidSynth concernant le Sf2
  • En annexe, un petit logiciel développé en Gambas (fonctionnel, mais cependant en cours de développement)


Montage matériel


Concernant le montage matériel de la carte principale, il n'y a pas de problème particulier. Simplement faire attention à la connexion des nappes et des fils d'alimentation. Des tutos sont disponibles, exemple : https://www.youtube.com/watch?v=E1lua5mgrJs . Image


Installation du système d'exploitation


La carte micro SD est en général livrée avec un adaptateur. Il faut l'insérer soit dans le logement prévu à cet effet soit au travers d'un adaptateur. Puis télécharger le système RaspBian : https://www.raspberrypi.org/downloads/ . Image
Une fois cela fait installer le système depuis votre ordinateur, selon la méthode suivante et en console :
sudo dd if=*__repertoire__*/__Nom de l'imag__.img of=/dev/__sdc__selon le référencement de votre carte

Cela peut prendre un peu de temps. Une fois l'opération terminée, retirer la carte SD et l'insérer sur la Raspberry, alimenter le Raspberry puis laissez le système se charger.
C'est tout.
Connecter cette carte au réseau par le câble. Réglez la langue, le clavier. Puis, en console faites immédiatement une mise à jour :
sudo apt-get update
sudo apt-get dist-upgrade

Une chose est encore importante : mettre à jour tous les micro-logiciels :
sudo rpi-update
#une fois terminé...
sudo reboot

Cela va installer si nécessaire un noyau optimisé et à jour. (Note : les noyaux installé sont tous basse-latence)
Ne pas oublier ensuite de paramétrer les locales et le clavier


Paramétrage du système Méthode 1 pour les gens pressés


C'est sans aucun doute l'étape la plus longue. En premier lieu, l'espace d'une carte SD étant limitée, on fait un petit peu de nettoyage :
sudo apt-get purge -y libreoffice-common claws-mail minecraft-pi pulseaudio epiphany-browser

Tout cela n'étant pas dans le projet, et donc absolument pas nécessaire
Et finalement :
wget -O - http://rpi.autostatic.com/autostatic.gpg.key| sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/autostatic-audio-raspbian.list http://rpi.autostatic.com/autostatic-audio-raspbian.list
sudo apt-get update

Qui permettra d'installer Carla-git et un studio audio.

Cependant la version Carla installée ne permet pas de sauvegarder les sessions et c'est ennuyeux.
Et là cela commence, il va falloir mettre les main dans le cambouis, autrement dit soit compiler le tout soit trouver une interface pratique pour un écran de 800x480.


Paramétrage du système Méthode 2 et en test !


Sans utiliser la méthode 1
Là je vous ai un peu mâché le travail, télécharger donc ceci (dès que ce sera téléversé) :
http://www.cryptos-sys.ch/?Raspberry-pi-3-audio-numerique http://www.cryptos-sys.ch/IMG/gz/rpi-cadence-suite.tar.gz Sur le coup, c'est tout la suite Cadence que j'ai compilé suite à une remarque dans les commentaires.
Le résultat ?...catastrophique ! Avec la suite Cadence, le raspi aligne les décrochages audio (x-runs) dès Cadence chargé après 1 à 2 minutes et fini par geler tout le système.
À mon avis le problème vient de D-bus qui est mal supporté par le Raspberry. J'ai lu cela quelque part. Finalement je suis revenu à l'idée du départ : ne compiler que Carla. J'ai aussi simplifié le tout en ne compilant que ntk, fluidsynth, Carla et Linuxsampler :
http://www.cryptos-sys.ch/IMG/gz/rpi-carla-system.tar.gz .
Là cela fonctionne parfaitement en 192000 Hz avec une latence de 10.7 ms.
Après le téléchargement du tar.gz, ouvrez la console du Raspberry. Le mieux est de se connecter en ssh (openssh est installé d'office) puis :
tar -xzvf rpi-audio-compilation.tar.gz

Puis la première étape en vérifiant au préalable que les deux fichiers install_new et compil soit marqués comme exécutable :
./install_new

Allez boire un café, vous occuper de vos femmes et revenez quand c'est fini. Cela prend un peu de temps et une fois cela fait :
./compil

Allez boire un café, vous occuper de vos femmes (elles ne vous croiront jamais, deux fois dans la même journée...pfff) et revenez quand c'est fini. Cela prend un peu de temps.
Une fois la compilation et l'installation terminée, la machine redémarre. Il ne vous reste plus qu'à configurer votre interface graphique, Carla afin qu'il prenne le moins de place possible sur l'écran.
Vous pouvez ensuite brancher un clavier en USB, votre carte son en USB (je n'ai pas compilé jackd2 en firewire, ni en freebob). Pour Carla, pas de VST non plus.
...et le résultat est ...
Nul à ch***. S'il répond au jeu du clavier un moment, il part en "live". Il suffit pour cela de jouer un peu vite. Hors donc, on va pas se laisser bouffer par la technique. j'ai allégé le système :
sudo systemctl disable dhcpd.service
sudo systemctl disable raspi-config.service
sudo systemctl disable hciuart.service
sudo systemctl disable networking.service
sudo systemctl disable systemd-udev-trigger.service
sudo systemctl disable ntp.service
sudo systemctl disable binfmt-support.service

Pour commencer.
Ensuite pour les tests j'ai créé un script de lancement en en virant encore quelques un :
#!/bin/bash
sudo cpufreq-set -g performance
sudo systemctl stop networking.service
sudo systemctl stop hciuart.service
sudo systemctl stop cron.service
sudo systemctl stop raspi-config.service
sudo systemctl stop ntp.service
sudo systemctl stop binfmt-support.service
sudo systemctl stop systemd-udev-trigger.service
sudo killall /usr/lib/gvfs/gvfsd
sudo killall /usr/lib/gvfs/gvfs-mtp-volume-monitor 
sudo killall /usr/lib/gvfs/gvfs-udisks2-volume-monitor
sudo killall /usr/lib/gvfs/gvfs-goa-volume-monitor
sudo killall /usr/lib/gvfs/gvfs-afc-volume-monitor
sudo killall /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
sudo killall /usr/lib/gvfs/gvfsd-trash
sudo killall gnome-pty-helpersudo 
sudo killall /usr/lib/policykit-1/polkitd
sudo killall lxpanel
/usr/bin/jackd -dalsa -r192000 -p1024 -n3 -D -Chw:U192k -Phw:U192k &
sleep 5
zynaddsubfx -a &
sleep 5
aconnect 16:0 128:0 &

C'est nettement mieux, délicat mais mieux quand même.
Je me suis dit pourquoi ne pas compiler le noyau en RT. Au préalable j'ai téléchargé les sources, modifié le .config d'origine en ne modifiant que le "préempt lowLatency" et l'horloge à 1000 (par défaut à 100).Tout bien comme il faut Au final que dalle. Il démarre normalement puis gèle totalement la machine. Idem si j'applique le patch RT. Essayé en CROSS_COMPILE, la compilation s'arrête avec une erreur. RT ou pas. J'ai donc abandonné pour l'instant le noyau standard convenant à peu près.

Il reste à améliorer certains réglages comme le blacklistage de la carte son interne, bluetooth et wifi, la fréquence du processeur en mode performance. Ce n'est pas absolument nécessaire mais c'est un plus.
Pour exemple, pour blacklister les drivers pas très utiles cela se passe dans le fichier : /etc/modprobe.d/raspi-blacklist.conf. C'est important car avec un autre nom de fichier, cela ne fonctionne pas. Exemple :

blacklist snd_bcm2835
blacklist bnep
blacklist btbcm
blacklist hci_uart
blacklist cfg80211
blacklist brcmfmac
blacklist joydev
blacklist rpi_backlight
blacklist rpi_backlight
blacklist ipv6
blacklist bcm2835_gpiomem
blacklist bcm2835_wdt

un lsmod donnera ceci :
cpufreq_stats           3463  0 
snd_usb_audio         118608  0 
snd_hwdep               5727  1 snd_usb_audio
snd_usbmidi_lib        19801  1 snd_usb_audio
snd_rawmidi            18516  1 snd_usbmidi_lib
snd_seq_device          3621  1 snd_rawmidi
snd_pcm                75762  1 snd_usb_audio
snd_timer              19288  1 snd_pcm
snd                    51908  7 snd_usb_audio,snd_hwdep,snd_timer,snd_pcm,snd_rawmidi,snd_usbmidi_lib,snd_seq_device
evdev                  11396  5 
uio_pdrv_genirq         3164  0 
rpi_ft5406              2898  0 
uio                     8000  1 uio_pdrv_genirq

Et ne pas se gêner en créant un bash qui lance le programme souhaité de jouer avec des commandes a "donf" tel que :

sudo cpufreq-set -g performance
sudo /sbin/sysctl -w vm.swappiness=10
sudo mount -o remount,size=128M /dev/shm
sudo systemctl stop systemd-modules-load.service
sudo systemctl stop binfmt-support.service
sudo systemctl stop systemd-udev-trigger.service
sudo systemctl stop dhcpcd.service
sudo systemctl stop systemd-udev-trigger.service
sudo killall at-spi-bus-launcher
sudo killall gnome-pty-helpersudo
sudo killall /usr/lib/policykit-1/polkitd
sudo killall sshd
sudo killall systemd-journald
sudo killall systemd-udevd
sudo killall systemd-logind
sudo killall dhcpcd
sudo killall rsyslogd
sudo killall ssh-agent
/usr/bin/jackd -dalsa -r192000 -p1024 -n3 -D -Chw:U192k -Phw:U192k &
sleep 5
zynaddsubfx -a &
sleep 5
aconnect 24:0 128:0 &

Ceci est une version améliorée du script donné plus haut qui me donne entre autre une occupation mémoire de 120 Mo, jack-zynaddsubfx-aconnect non lancés et 221 Mo ceux-ci lancés. Je pense que c'est à retenir pour une station plus grosse.

Tests


  • TimeMachine et Direct-to-Disk : pour un enregistrement test au micro, pendant 45 minutes, aucun Xruns à l'horizon. Dans ce cas le système est tout à fait utilisable et efficace .
  • ZynAddSubFx : cela fonctionne à peu près, mais dès un jeu plus rapide, les Xruns s'alignent. Difficilement utilisable, sinon pour des nappes.

En conclusion


Cela fonctionne avec zynaddsubfx et un pad chargé (ne pas exagérer non plus dans la frappe du clavier ).

Moi-même écrit :
TODO ce */⁼ç*/&% de kernel rt. Aucun tuto pour la compilation ne fonctionne pour l'instant.
J'ai dit cela le 12 octobre 2016 à 8h10 en pleine déprime après avoir passé 3 jours à essayer de compiler ce kernel.
A 8h20 le même jour j'ai trouvé cela : http://www.frank-durr.de/?p=203
8h23 après m'être copieusement gifflé et flagellé. Je suis revenu
8h27 Le kernel RT était en place.
Et je vais aller acheter un bouquet de fleurs à ma femme afin de me faire pardonner la mauvaise humeur
Gros merci à Frank.


J'ai aussi modifié le code de zynaddsubfx. Pas grand chose si ce n'est les fenêtre en mode Beginner (que je souhaite en plein écran) parce que la fenêtre Instrument Bank se positionne à la hurf sur l'écran tactile. De même j'ai copié les sons, qui normalement se trouvent dans /usr/share/zynaddsubfx, vers /home/pi/zynaddsubfx. Sur l'écran tactile c'est assez pénible pour la sélection d'un seul son. Je vais donc aussi agrandir un peu certain menus, sinon il faut des tout petit doigts. Bon ça c'est histoire d'améliorer le confort. ça n'a pas d'impact sur le fonctionnement.

Je n'ai pas été foutu de faire un paquet Debian de Carla. Par contre pour Linuxsampler c'est ok.
Les autres je n'ai même pas essayé. Les paquets sont tous tirés des dépôts git ou svn.
S'il y'a dans la salle quelqu'un susceptible de créer le paquet deb de Carla pour rpi, alors ce serait vraiment cool. J'ai essayé... pas pu !
Pour Carla il faut aussi modifier dans les sources et le Makefile.mk la ligne 68 en
BASE_OPTS  = -O2 -ffast-math -mtune=generic-armv7-a -fdata-sections -ffunction-sections

Avec le téléchargement c'est déjà fait. Dès que j'ai une solution concernant le kernel RT, je mettrais en ligne une image du système audio rpi3.
Notez aussi que vos retours seront précieux !

Addenda

Vous trouverez ici ke kernel-4.4-23rt que j'ai enfin pu compiler. Il y'a une erreur dans les tools concernant la cross compilation. J'ai pu réparer.
Donc c'est ici : http://www.cryptos-sys.ch/?Raspberry-pi-3-audio-numerique. Veillez à bien lire le fichier texte qui s'y trouve et qui vous donnera la manière de l'installer.
Pour finir l'aspect final de l'appareil dans son environnement:

Image

Collaborateur(s) de cette page : jujudusud , olinuxx et pierrotlo .
Page dernièrement modifiée le Vendredi 02 février 2018 22:12:53 par jujudusud.
Le contenu de cette page est licencié sous les termes licence.

Documentation [Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

olinuxx, 19:36, sam. 18 Aug 2018: Bonjour et bienvenue à lalilala ! cool
sub26nico, 09:43, jeu. 16 Aug 2018: Salut et bienvenue à georges74 :-)
sub26nico, 22:36, mar. 14 Aug 2018: Salut et bienvenue à maharo :-)
sub26nico, 22:25, mar. 14 Aug 2018: En attendant la V5 de Mixbus 32C, qui devrait arriver demain...
sub26nico, 22:25, mar. 14 Aug 2018: Un nouveau greffon de chez Harrison : [Lien]
syberia303, 22:03, lun. 13 Aug 2018: Pour ceux que ça pourrait intéresser, Traktion en version 7 est gratuit: [Lien]
sub26nico, 17:53, lun. 13 Aug 2018: Salut et bienvenue à Nydoxic :-)
olinuxx, 18:27, dim. 12 Aug 2018: Bonjour et bienvenue à GhostOfBushes ! cool
sub26nico, 00:55, dim. 12 Aug 2018: Salut et bienvenue à TotoLeTroll :-)
olinuxx, 17:05, jeu. 09 Aug 2018: @jipeL : merci pour le partage d'expérience. La prochaine fois, mets un lien vers le fil de discussion stp. [Lien]
jipeL, 18:32, mer. 08 Aug 2018: Mise en garde concernant le code "ISRC" d'une oeuvre dans le forum.
jujudusud, 15:20, mer. 08 Aug 2018: un petit coup de pouce pour mon annonce : [Lien]