Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
openatelier:projet:bot_irc_midi [2020/05/19 00:06] emoc [Démarrages et connexions MIDI] |
openatelier:projet:bot_irc_midi [2020/06/10 11:45] emoc [Améliorations possibles] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Bot IRC -> MIDI ====== | ====== Bot IRC -> MIDI ====== | ||
+ | |||
+ | aka **pouetBot** | ||
(Page créée le 15 mai 2020, en cours de rédaction) | (Page créée le 15 mai 2020, en cours de rédaction) | ||
Ligne 20: | Ligne 22: | ||
* **!panique** : coupe toutes les notes (envoie ALL NOTES OFF et ALL SOUNDS OFF sur les 16 canaux MIDI) | * **!panique** : coupe toutes les notes (envoie ALL NOTES OFF et ALL SOUNDS OFF sur les 16 canaux MIDI) | ||
- | D'autres commandes sont utilisables par l'administrateur pour le débuguage | + | D'autres commandes sont utilisables pour le débuguage |
===== Mise en pratique ===== | ===== Mise en pratique ===== | ||
Ligne 26: | Ligne 28: | ||
Une fois les différents logiciels démarrés ainsi que la communication entre eux, démarrer une videoconférence webRTC sur une généreuse instance jitsi (par exemple, parmi cette [[https://framatalk.org/accueil/fr/info|liste d'instance Jitsi compilée par Framasoft]]), en coupant la caméra et en choisissant comme source sonore le "monitor of audio interne stéréo analogique". Ce choix de source sonore vaut pour un ordinateur sous linux debian, il faudra l'adapter dans d'autres cas. Ce flux sonore correspond au "son qui sort de l'ordinateur", toutes applications confondues. | Une fois les différents logiciels démarrés ainsi que la communication entre eux, démarrer une videoconférence webRTC sur une généreuse instance jitsi (par exemple, parmi cette [[https://framatalk.org/accueil/fr/info|liste d'instance Jitsi compilée par Framasoft]]), en coupant la caméra et en choisissant comme source sonore le "monitor of audio interne stéréo analogique". Ce choix de source sonore vaut pour un ordinateur sous linux debian, il faudra l'adapter dans d'autres cas. Ce flux sonore correspond au "son qui sort de l'ordinateur", toutes applications confondues. | ||
- | Il est aussi possible de configurer un serveur webRTC mais c'est une autre affaire... | + | |
===== Usine à gaz ===== | ===== Usine à gaz ===== | ||
Ligne 58: | Ligne 60: | ||
==== Scripts ==== | ==== Scripts ==== | ||
- | **Les différents scripts sont téléchargeables dans ce dépôt : ** | + | **Les différents scripts sont téléchargeables dans ce dépôt : https://github.com/emoc/pouetBot ** |
==== Script de test ==== | ==== Script de test ==== | ||
Ligne 67: | Ligne 69: | ||
<panel title="mibot_test.php (cliquer pour afficher le code)"> | <panel title="mibot_test.php (cliquer pour afficher le code)"> | ||
<code php mibot_test.php> | <code php mibot_test.php> | ||
+ | #!/usr/bin/php -q | ||
<?php | <?php | ||
/* | /* | ||
Ligne 74: | Ligne 77: | ||
perc {channel} {inst} {vel} {dur} : jouer une percussion sur le {channel} ... | perc {channel} {inst} {vel} {dur} : jouer une percussion sur le {channel} ... | ||
| | ||
- | channel : entre 0 et 15 (canal MIDI) | + | channel : entre 1 et 16 (canal MIDI) |
note : entre 0 et 127 (note à jouer) | note : entre 0 et 127 (note à jouer) | ||
vel : entre 0 et 127 (vélocité) | vel : entre 0 et 127 (vélocité) | ||
Ligne 96: | Ligne 99: | ||
// Créer un message parmi les 3 types afin de tester que tout fonctionne | // Créer un message parmi les 3 types afin de tester que tout fonctionne | ||
if ($rnd < 33) { | if ($rnd < 33) { | ||
- | $message = "note " . rand(0,15) . " " . rand(0,127) . " " . rand(0, 127) . " " . (rand(20, 100) * 10) . ";\n"; | + | $message = "note " . rand(1,16) . " " . rand(0,127) . " " . rand(0, 127) . " " . (rand(20, 100) * 10) . ";\n"; |
} else if ($rnd >= 33 && $rnd < 66) { | } else if ($rnd >= 33 && $rnd < 66) { | ||
- | $message = "inst " . rand(0,15) . " " . rand(0,127) . ";\n"; | + | $message = "inst " . rand(1,16) . " " . rand(0,127) . ";\n"; |
} else { | } else { | ||
$message = "perc 10 " . rand(0,127) . " " . rand(0, 127) . " " . (rand(20, 100) * 10) . ";\n"; | $message = "perc 10 " . rand(0,127) . " " . rand(0, 127) . " " . (rand(20, 100) * 10) . ";\n"; | ||
Ligne 115: | Ligne 118: | ||
</accordion> | </accordion> | ||
+ | ==== Mise en place du stream ==== | ||
+ | |||
+ | Démarrer Butt (dans cette configuration, Butt est utilisé pour enregistrer l'audio produit localement, en parallèle de la diffusion en stream.) \\ | ||
+ | Démarrer Chromium \\ | ||
+ | |||
+ | === Réglages pulseaudio === | ||
+ | |||
+ | Dans l'onglet enregistrement, choisir "Monitor of Audio interne stéréo analogique" pour que le son utilisé ne soit __pas__ celui du micro, mais le mix des sons produits. | ||
+ | |||
+ | {{:openatelier:projet:bot_irc_midi:parametres_pulseaudio.png?direct|}} | ||
+ | |||
+ | === Réglages jitsi === | ||
+ | |||
+ | Pour l'émetteur, démarrer jitsi sans caméra et choisir que les participant·e·s démarrent aussi sans caméra ni micro. \\ | ||
+ | Régler dans les paramètres de son "Audio interne stéréo analogique" | ||
+ | |||
+ | {{:openatelier:projet:parametres_jitsi_1.png?direct|}} {{:openatelier:projet:parametres_jitsi_2.png?direct|}} | ||
+ | |||
+ | Ça fonctionne avec très peu de latence MAIS beaucoup de compression... Il faudrait trouver une alternative | ||
+ | |||
+ | ==== Bugs ==== | ||
+ | |||
+ | Buffer overflow! Le buffer du socket est dépassé par la taille de certains messages, les morceaux de messages restant seront interprêtés aussi, de manière imprévisible! \\ | ||
+ | En particulier pour la gestion des 16 slots correspondant à chaque canal MIDI \\ | ||
+ | Certains messages d'erreur du serveur IRC, déclenchés par ces dépassements sont invisibles sur le canal, mais sont interprêtés. \\ | ||
+ | Beaucoup de notes restent en suspend... La fonction !panique est très utile! \\ | ||
+ | |||
+ | ==== Améliorations possibles ==== | ||
+ | |||
+ | Corriger les bugs! \\ | ||
+ | |||
+ | Une commande pour changer le tempo ? du swing ? | ||
+ | Trouver une alternative utilisat·eur·rice-conviviale avec une meilleure qualité sonore, quelques pistes : | ||
+ | * mumble, https://fr.wikipedia.org/wiki/Mumble , c'est avant tout pour la voix mais on peut ptet régler les bitrates côté serveur et client et choisir le codec | ||
+ | * pour mumble voir aussi https://wiki.mumble.info/wiki/3rd_Party_Applications | ||
+ | * et un client web https://github.com/Johni0702/mumble-web (bien pour le côté convivial!) | ||
+ | * ninjam : https://www.cockos.com/ninjam/ | ||
+ | * jamulus : http://llcon.sourceforge.net/ + https://ressources.labomedia.org/musique_en_reseau_jamulus | ||
+ | * jamtaba : https://jamtaba-music-web-site.appspot.com/ | ||
+ | * jacktrip : https://ccrma.stanford.edu/groups/soundwire/software/jacktrip/index.html | ||
+ | * quacktrip "peer-to-peer high-quality low-latency audio, version 0.1" (Miller Puckette, 2020) : http://msp.ucsd.edu/tools/quacktrip/ | ||
+ | * serveur webRTC bidouillé | ||
+ | Un MOOC du CCRMA sur le sujet (en anglais) : https://online.stanford.edu/courses/sohs-music0001-online-jamming-and-concert-technology | ||
===== Ressources ===== | ===== Ressources ===== | ||