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 (lien mort au 19 Sep 2018)


Description


Dans cet article, nous allons aborder la construction d’un synthétiseur matériel sur la base d’un Raspberry 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 48V 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 48V, 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 (issue du projet 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és 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 mains dans le cambouis, autrement dit soit compiler, le tout soit trouver une interface pratique pour un écran de 800x480. (Édition du 19 septembre 2018 : le dépôt autostatic ne comprend que des paquets pour Raspbian wheezy)


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 pilotes 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 noyau 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 noyau.
À 8h20 le même jour j'ai trouvé cela : http://www.frank-durr.de/?p=203 Image .
8h23 après m'être copieusement gifflé et flagellé. Je suis revenu.
8h27 Le noyau 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êtres 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 certains menus, sinon il faut des tout petits 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 noyau RT, je mettrais en ligne une image du système audio rpi3.
Notez aussi que vos retours seront précieux !


Addenda


Vous trouverez ici le noyau-4.4-23rt que j'ai enfin pu compiler. Il y'a une erreur dans les outils 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. (lien mort au 19 Sep 2018)
Pour finir, l'aspect final de l'appareil dans son environnement :

Image





[+]

Collaborateur(s) de cette page : olinuxx , jujudusud et pierrotlo .
Page dernièrement modifiée le Jeudi 20 septembre 2018 02:50:57 par olinuxx.
Le contenu de cette page est licencié sous les termes licence.

Documentation [Afficher / Cacher]

Faire un don
[Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

olinuxx, 11:48, ven. 15 mars 2024: Bonjour et bienvenue à Jerry cool
calixtus06, 18:03, mer. 13 mars 2024: Bonjour et bienvenue à tanguero :-)
olinuxx, 11:01, dim. 10 mars 2024: Bonjour et bienvenue à lolo cool
bda, 16:59, sam. 09 mars 2024: Chapeau pour l'édito. Vous êtes au top les gars :-)
allany, 07:20, jeu. 07 mars 2024: Ça ne fait jamais de mal, c'est l'éditorial ! [Lien]
olinuxx, 19:52, mer. 06 mars 2024: Bonjour et bienvenue à TrkNrk cool
calixtus06, 11:17, mar. 05 mars 2024: Bonjour et bienvenue à D752 :-)
calixtus06, 18:59, lun. 04 mars 2024: Bonjour et bienvenue à Hborsa et Adjudandouille :-)
olinuxx, 18:34, jeu. 29 Feb 2024: Bonjour et bienvenue à anto45500 cool
jujudusud, 23:38, mar. 27 Feb 2024: Venez participer à la joute numéro 17 : [Lien]
calixtus06, 18:36, jeu. 22 Feb 2024: Bonjour et bienvenue à nikartri et rckloar :-)
calixtus06, 10:15, mer. 14 Feb 2024: Bonjour et bienvenue à smonff, Alphascorpii, tadumtss et letoII :-)