arthur.bebou

Le site arthur.bebou.netlib.re - retour accueil

git clone git://bebou.netlib.re/arthur.bebou
Log | Files | Refs |

commit 682d4500a466401f925f6bd3d469b98c94e90945
parent f2852ae966689b0569e979a553fedfd5ba0cd58f
Auterice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Mon, 10 Jun 2024 21:21:27 +0200

Début article sup sonore

Diffstat:
Acontents/sup-sonore/index.sh | 102+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 102 insertions(+), 0 deletions(-)

diff --git a/contents/sup-sonore/index.sh b/contents/sup-sonore/index.sh @@ -0,0 +1,102 @@ +#! page +title: Supervision sonore +author: Arthur Pons +description: De la supervision de serveur web \(ou autre\) avec du son +publication: 2024-06-11 + +sectionmd: main + +## But et outillage + +Une fois n'est pas coutume, faisons quelque qui n'implique pas *que* du texte. +Quelque chose d'un peu plus fun. De la supervision de serveurs web avec du son. +Cette expérimentation n'a pas vocation à se substituer à ce que serait de la +supervision plus sérieuse. Elle a pour but : + + * d'être un moyen ludique de garder un œil (ou une oreille huhu) sur l'activité des sites du serveur + * de favoriser les +interactions avec les utilisateur·ices + * d'être un outil pédagogique autour du web + * apprendre quelques trucs au sujet du son sur linux + +J'ai décidé dans cet article d'utiliser principalement +[ffmpeg](https://ffmpeg.org/), souvent présenté comme le couteau suisse du son +et de la vidéo. Cette décision est principalement motivée par le fait que je ne +connais pas vraiment d'outil similaire et que celui-ci est fait pour être +utilisé en ligne de commande, ce que j'apprécie. Cela dit ce ne veut pas pour +autant dire que son utilisation est facile. ffmpeg est connu pour ses quantités +d'options absolument gigantesques, ce qui est un atout en cela que la commande +"sait tout faire", mais est un gros désavantage à sa prise en main, sa +découvrabilité, son utilisation lors des phases exploratoires. Ce passage du +site de l'outil : + +> Converting video and audio has never been so easy. + +> $ ffmpeg -i input.mp4 output.avi + +Est vrai mais disons qu'une fois sortie des cas d'usages les plus simples ça +part vite en cacahuète. Comme beaucoup d'outils en ligne de commande passé une +certaine quantité et complexité de paramétrage. + +Cet article ne sera pas un cours de ffmpeg. Pour tout avouer je n'y comprends +pas grand chose et j'en suis malheureusement encore à l'étape "copier/coller des +trucs de stackoverflow et me plaindre de la documentation un peu nulle sans +vraiment l'avoir lu ni vouloir investir le temps nécessaire à comprendre les +principes fondamentaux" de ma relation avec cet outil. Avant lui le shell, +gnuplot, sed etc. + +## Créer du son + +Avant de se demander comment lier les logs à du son, demandons nous comment en +créer. Il y aurait mille façon de le faire, mille source à utiliser et mille +sons à créer. Nous allons ici utiliser ffmpeg mais tout le reste de l'article +peu se dérouler avec n'importe quel fichier audio, il n'est pas nécessaire d'en +générer un de zéro. + +Dans ffmpeg il existe un concept de +"[device](https://ffmpeg.org/ffmpeg-devices.html)". Un device est... bah je sais +pas bien. Je vous avais dit que c'était pas un cours de ffmpeg. Ils semblent +pouvoir être en entrée ou en sortie. En entrée un device semble être un élément +configurable qui permet d'accéder à une source d'audio. Par exemple si vous êtes +sur un linux, que vous utilisez +[alsa](https://www.alsa-project.org/wiki/Main_Page) et que vous avez un micro +sur votre ordinateur alors vous pouvez probablement y accéder via le device +"alsa". Pour choisir un device il faut utiliser l'option `-f` de ffmpeg. + +Il se trouve qu'il existe un device nommé +[lavfi](https://ffmpeg.org/ffmpeg-devices.html#lavfi) qui permet de générer une +entrée "virtuelle". Il semble possible de faire pleins de choses avec sans bien +comprendre comment cela fonctionne je me suis contenté de trouver ça sur les +internet : + + ffplay -f lavfi -i "sine=frequency=440:duration=1" + +> ffplay est un lecteur audio/vidéo qui utilise ffmpeg sous le capot. Cette +> commande a les mêmes arguments que si l'on avait voulu enregistrer l'audio +> généré dans un fichier avec ffmpeg plutôt que de directement le lire. + +Cette commande utilise de device `lavfi` et prend un entrée des commandes +comprises par lavfi qui ici génèrent une fréquence de 440Hz pendant une seconde. +Ici `sine` est un "filtre" documenté +[ici](https://ffmpeg.org/ffmpeg-filters.html#Sine). Il est un peu +particulier puisque contrairement à la plupart des filtres il n'a pas pour objet +de modifier une source mais d'un créer une. Il n'a donc pas d'entrée. + +> Au passage je joue avec d'autres filtres et du bruit marron avec un sample +> rate très bas donne un côté "bruit qui vient du tréfond des océans assez +> flippant et lovecraftien[^2]. Essayez +> +> $ ffplay -f lavfi -i "anoisesrc=c=brown:r=1000:a=1" +> +> Le visuel généré par ffplay donne une dimension encore plus angoissante. + +Plutôt que de directement jouer le son nous pouvons utiliser ffmpeg pour le +stocker dans un fichier (ogg par exemple) : + + ffmpeg -f lavfi -i "sine=frequency=440:duration=1" big.ogg + +On peut rejouer le fichier avec ffplay ou tout autre lecteur : + + mpv big.ogg + +[^2]: *fun* fact, Lovecraft était très raciste et antisémite : https://fr.wikipedia.org/wiki/H._P._Lovecraft#Race,_ethnie_et_classe