Ecasound est un enregistreur & éditeur audio multipistes dans un terminal.
Site web officiel : http://ecasound.seul.org/ecasound/.
Version actuelle : 2.9.2 du 2020 01 11.
Support : JACK, OSC, LADSPA.
Licence : GNU GPL.
Ecasound est un logiciel audio-numérique écrit en C++ et qui tourne exclusivement sous les systèmes d'exploitations de type Unix, Linux et BSD. Il est maintenu par le tchécoslovaque Kai Vehmanen qui a initié son développement depuis 1995, c'est donc un logiciel très mature. Ecasound est très complet, il peut être utilisé aussi bien pour faire de l'enregistrement multi-pistes que du mixage, de l'arrangement ou du traitement audio. Il ne possède pas d'interface graphique native. Cependant, il peut être contrôlée de manière interactive au moyen d'instructions envoyées en ligne de commande ou par l'intermédiaire de scripts. De premier abord, cette façon de procéder peut paraître très contraignante et peu intuitive, mais en fait, cela permet d'envoyer une multitude d'instructions en même temps, ce qu'une souris ou même deux mains seraient bien incapable de faire. Rassurez-vous, des projets parallèles lui ont greffé une interface graphique, mais je n'en parlerai pas dans cet exposé (voir : Visecas et Nama). D'autre part, Ecasound est totalement contrôlable via MIDI ce qui en fait un candidat de choix pour les performances temps réel (live).
La structure d'Ecasound est composée de 4 entités principales qui sont :
En définitive, l'enjeu d'Ecasound consiste à savoir associer ces entités entre elles de manière à obtenir ce qu'on appelle en anglais une "chainsetup". Pour cela quelques règles fondamentales s'imposent :
Voilà pour les règles fondamentales, ne paniquez pas, vous comprendrez tout grâce à l'exemple d'utilisation en "live" qui va suivre.
Je voulais intituler ce paragraphe "Avantages et Inconvénients", mais finalement je n'ai pas trouvé beaucoup d'inconvénients, bien au contraire ! En fait, la courbe d'apprentissage du logiciel n'est pas très rapide, mais une fois que l'on a compris le principe, c'est comme savoir marcher ou faire du vélo, on se sent libre de faire un peu tout ce qu'on veut...
Le principal intérêt d'Ecasound, outre son extrême flexibilité, est sa stabilité. En effet, Ecasound a été codé avec le soucis permanent de fiabiliser les processus en temps réel. Les événements qui nécessitent des temps de latence courts sont séparés de ceux qui en demandent moins comme les accès disques, le code de l'interface utilisateur et la gestion de la mémoire.
La présentation qui va suivre décrit l'utilisation d'Ecasound au centre d'une configuration matérielle et logicielle pour une performance temps réel. Ecasound va servir à centraliser tous les flux audio pour ajuster les niveaux et appliquer les effets.
Du côté matériel nous avons :
Du côté logiciel nous utilisons :
Tout ce petit monde va transiter par Ecasound au moyen d'un Script que je vais détailler dans le chapitre suivant.
Toutes les commandes qui vont décrire la "chainsetup" sont contenues dans un fichier exécutable intitulé master.sh, nous allons le détailler pas à pas :
* on définit les chaînes :
Une fois le script exécuté :
Je vous conseille d'utiliser QJackCtl pour connecter tout ce petit monde, le mieux est de créer une configuration dans "Patchbay".
Les entrées stéréos d'Ecasound apparaissent dans QJackCtl de haut en bas dans l'ordre de création des chaînes dans Ecasound. Ainsi Hydrogen doit être connecté aux deux premières entrées d'Ecasound, ensuite c'est au tour de Freewheeling pour le routage vers l'égaliseur et puis pour le délai. Même chose pour TerminatorX et la TB303.
Je ne me présente pas comme un expert d'Ecasound, il y a certainement une façon plus élégante ou plus performante d'obtenir le résultat escompté, c'est pourquoi j'invite quiconque à suggérer des améliorations de ce script. Le but de cet exposé est de vous donner l'envie de créer votre propre configuration audio avec Ecasound. Un des intérêts que je n'ai pas évoqué jusqu'à présent est la possibilité de partager ses scripts, en ce sens Ecasound reste très fidèle à la mentalité véhiculée par les logiciels libres et surtout, Ecasound est un des seuls logiciels audio, de niveau professionnel, entièrement accessible aux non voyants.
Table des matières
Informations
Site web officiel : http://ecasound.seul.org/ecasound/.
Version actuelle : 2.9.2 du 2020 01 11.
Support : JACK, OSC, LADSPA.
Licence : GNU GPL.
1. Présentation d'Ecasound
1.1. Ecasound c'est quoi ?
Ecasound est un logiciel audio-numérique écrit en C++ et qui tourne exclusivement sous les systèmes d'exploitations de type Unix, Linux et BSD. Il est maintenu par le tchécoslovaque Kai Vehmanen qui a initié son développement depuis 1995, c'est donc un logiciel très mature. Ecasound est très complet, il peut être utilisé aussi bien pour faire de l'enregistrement multi-pistes que du mixage, de l'arrangement ou du traitement audio. Il ne possède pas d'interface graphique native. Cependant, il peut être contrôlée de manière interactive au moyen d'instructions envoyées en ligne de commande ou par l'intermédiaire de scripts. De premier abord, cette façon de procéder peut paraître très contraignante et peu intuitive, mais en fait, cela permet d'envoyer une multitude d'instructions en même temps, ce qu'une souris ou même deux mains seraient bien incapable de faire. Rassurez-vous, des projets parallèles lui ont greffé une interface graphique, mais je n'en parlerai pas dans cet exposé (voir : Visecas et Nama). D'autre part, Ecasound est totalement contrôlable via MIDI ce qui en fait un candidat de choix pour les performances temps réel (live).
1.2. Les bases à connaître pour débuter
La structure d'Ecasound est composée de 4 entités principales qui sont :
- Les objets audio : ce sont les entrées et sorties audio, les fichier audio (wav, mp3, ogg etc...)
- Les chaînes : elles correspondent aux chemins empruntés par le son, pour mentaliser les chaînes, considérez qu'elles correspondent aux câbles audio.
- Les opérateurs de chaîne : ce sont les processeur d'effet (amplificateur, panner, reverb...etc)
- Les contrôleurs : ils peuvent être des oscillateurs ou des contrôleurs MIDI.
En définitive, l'enjeu d'Ecasound consiste à savoir associer ces entités entre elles de manière à obtenir ce qu'on appelle en anglais une "chainsetup". Pour cela quelques règles fondamentales s'imposent :
- Une chaîne doit posséder exactement une entrée et une sortie audio.
- Toutes les entrées et les sorties audio doivent être connectées au moins à une chaîne.
- Une entrée ou une sortie audio dans Ecasound ne peut être définie que par une seule entrée ou sortie physique ou un seul fichier audio.
- Le routage audio, vers ou depuis une chaîne, doit se faire en sélectionnant une ou plusieurs chaînes en leur assignant soit une entrée soit une sortie audio.
- Les canaux audio sont routés tel quels, par exemple, si vous utilisez une entrée audio ayant 4 canaux et que vous attachez cette entrée à une chaîne utilisant une sortie audio ayant 2 canaux, seuls les deux premiers canaux seront audible par la sortie audio.
Voilà pour les règles fondamentales, ne paniquez pas, vous comprendrez tout grâce à l'exemple d'utilisation en "live" qui va suivre.
1.3. Pourquoi utiliser Ecasound ?
Je voulais intituler ce paragraphe "Avantages et Inconvénients", mais finalement je n'ai pas trouvé beaucoup d'inconvénients, bien au contraire ! En fait, la courbe d'apprentissage du logiciel n'est pas très rapide, mais une fois que l'on a compris le principe, c'est comme savoir marcher ou faire du vélo, on se sent libre de faire un peu tout ce qu'on veut...
Le principal intérêt d'Ecasound, outre son extrême flexibilité, est sa stabilité. En effet, Ecasound a été codé avec le soucis permanent de fiabiliser les processus en temps réel. Les événements qui nécessitent des temps de latence courts sont séparés de ceux qui en demandent moins comme les accès disques, le code de l'interface utilisateur et la gestion de la mémoire.
2. Exemple d'utilisation en "Live"
2.1. Les différents composants matériels et logiciels
La présentation qui va suivre décrit l'utilisation d'Ecasound au centre d'une configuration matérielle et logicielle pour une performance temps réel. Ecasound va servir à centraliser tous les flux audio pour ajuster les niveaux et appliquer les effets.
Du côté matériel nous avons :
- une carte son avec une entrée audio (Terratec PHASE 26 USB) connectée à un instrument de musique (dans mon cas une TB303).
- Deux contrôleur MIDI (un Kenton Control FREAK et un MAM MCB4) connectés à une interface MIDI Edirol UM 2.
- Un clavier maître 4 octaves (FATAR Studio 49) relié au MIDI IN de la carte son.
- Un ordinateur pentium 4 2.66GHz avec 512Mo de RAM et un disque dur de 80Go à 7200tour/min.
Du côté logiciel nous utilisons :
- QJackCtl comme interface de Jack.
- Ecasound, dont nous allons détailler l'utilisation.
- Les greffons LADSPA (greffons Tap en l'occurrence)
- Hydrogen pour la rythmique.
- Freewheeling pour le sampler, basé sur l'utilisation de boucles audio.
- TerminatorX pour effectuer les scratchs.
- Zynaddsubfx comme synthétiseur virtuel.
- Ecasignalview? comme vu-mètre.
- Jack Timemachine pour enregistrer la session.
- Darkice pour diffuser la session en direct sur Internet ;)
Tout ce petit monde va transiter par Ecasound au moyen d'un Script que je vais détailler dans le chapitre suivant.
2.2. Le script pas à pas
Toutes les commandes qui vont décrire la "chainsetup" sont contenues dans un fichier exécutable intitulé master.sh, nous allons le détailler pas à pas :
- Ecasound est lancé en mode interactif
ecasound -c \
- on définit les paramètres de gestion des entrées et sorties audio : le driver utilisé est Jack, le port de connexion utilisé par Jack sera appelé "ecasound" et Ecasound ne sera pas assujetti au "Transport" de Jack; Ecasound n'étant pas utilisé dans notre cas de figure comme séquenceur.
-G:jack,ecasound,notransport \
- on définit le driver qui va prendre en charge le MIDI
-Md:alsaseq \
* on définit les chaînes :
- on crée la première chaîne : on l'appelle hydrogen,
-a:hydrogen \
-i:jack \
- on y applique un effet amplificateur (-ea) réglé par défaut au maximum (100).
-ea:100 \
- cet opérateur de chaîne est contrôlé par MIDI (-km) selon 5 paramètres.
- Le premier paramètre désigne le paramètre de l'opérateur de chaîne qui sera soumis au contrôle. Dans le cas d'un amplificateur il n'y a qu'un seul paramètre à contrôler, le gain, donc la valeur est 1.
- Le deuxième paramètre désigne la valeur minimum du paramètre de l'opérateur de chaîne à assigner au contrôleur MIDI.
- Le troisième paramètre correspond à la valeur maximale à assigner au même contrôleur.
- Le quatrième paramètre correspond au numéro de contrôleur (compris entre 0 et 127).
- Le cinquième paramètre correspond au canal MIDI (compris entre 1 et 16).
- ainsi dans mon cas, je vais pouvoir contrôler le niveau d'Hydrogen avec le potentiomètre linéaire n°6 de mon control FREAK. Comme sur une vraie console en quelque sorte (la touche mute fonctionne également!).
-km:1,0,100,7,6 \
- de la même manière, on crée la chaîne fw_eq correspondant à l'entrée de Freewheeling destinée à être routé vers l'égaliseur
-a:fw_eq \ -i:jack \ -ea:100 \
- Je vais pouvoir contrôler le niveau avec le potentiomètre linéaire n°7 de mon control FREAK.
-km:1,0,100,7,7 \
- on crée la chaîne fw_del correspondant à l'entrée de Freewheeling destinée à être routée vers le délai
-a:fw_del \ -i:jack \ -ea:100 \
- remarquez que je vais utiliser le même potentiomètre linéaire de mon control FREAK que le précédent.
-km:1,0,100,7,7 \
- les entrées pour TerminatorX et la TB303 sont créés de la même façon sauf que pour la TB303 nous ne contrôlons pas le niveau, mais le pan (50 correspond au centre, 0 à gauche et 100 à droite).
-a:tx_eq \ -i:jack \ -ea:100 \ -km:1,0,100,7,4 \ -a:tx_del \ -i:jack \ -ea:100 \ -km:1,0,100,7,4 \ -a:tb_eq \ -i:jack \ -epp:50 \ -km:1,0,100,7,5 \ -a:tb_del \ -i:jack \ -epp:50 \ -km:1,0,100,7,5 \
- nous arrivons à l'instruction clé qui permet de regrouper les chaînes destinées à être routée vers des opérateurs communs. Dans notre cas, ce seront l'égaliseur et le délai. Pour ce faire, on regroupe les chaînes fw_del, tx_del et tb_del auxquelles on attribue une sortie "virtuelle" appelé "loop" avec le numéro 1. Puis on regroupe les chaînes fw_eq, tx_eq, tb_eq et hydrogen auxquelles on attribue une sortie loop avec le numéro 2. À ce niveau, toutes les chaînes créées précédemment possèdent une seule entrée et une seule sortie audio, la règle d'Ecasound est respectée.
-a:fw_del,tx_del,tb_del \ -o:loop,1 \ -a:fw_eq,tx_eq,tb_eq,hydrogen \ -o:loop,2 \
- nous pouvons alors créer la chaîne "delay" qui va être routée vers l'opérateur de chaîne contenant l'effet délai. Il suffit alors de désigner comme entrée audio l'objet "loop" n°1.
-a:delay \ -i:loop,1 \
- l'effet utilisé est le greffon LADSPA Tap Stereo Echo développé par Tom Szilagyi, dans notre script, il est contrôlé par 7 paramètres le délai du canal gauche, le "feedback du canal gauche, le délai du canal droit, le "feedback" du canal droit, le niveau d'écho gauche, le niveau d'écho droit et le niveau d'effet appliqué (dry/wet). Le délai du canal gauche et droit est contrôlé par le même contrôleur MIDI. Même chose pour le "feedback" gauche et droit. Le niveau gauche et droit sont contrôlés individuellement. Le dernier paramètre n'est pas contrôlé.
-el:tap_stereo_echo,200,90,200,90,-2,-2,0 \ -km:1,100,400,1,1 \ -km:3,100,400,1,1 \ -km:2,0,100,2,1 \ -km:4,0,100,2,1 \ -km:5,-70,10,3,1 \ -km:6,-70,10,4,1 \
- Même procédure pour l'opérateur utilisant l'effet dj_eq développé par Steve Harris
-a:eq \ -i:loop,2 \ -el:dj_eq,0,0,0 \ -km:1,-70,6,7,1 \ -km:2,-70,6,7,2 \ -km:3,-70,6,7,3 \
- une fois les effets appliqués, il faut regrouper les chaînes précédemment créées en leur attribuant une sortie "virtuelle" n°3
-a:eq,delay \ -o:loop,3 \
- La dernière chaîne définie correspond au Master, l'entrée audio correspond à l'objet "loop" n°3, la sortie audio est confiée à Jack on y applique deux opérateurs de chaîne contenant un amplificateur contrôlé par MIDI et le limiteur Tap Limiter développé par Tom Szilagyi. Le limiteur est très utile en live pour contrecarrer les erreurs de manipulations très courantes pendant les lives.
-a:master \ -i:loop,3 \ -o:jack \ -ea:100 \ -km:1,0,200,7,8 \ -el:tap_limiter,0,0
2.3. Les inter-connections
Une fois le script exécuté :
./master.sh
Je vous conseille d'utiliser QJackCtl pour connecter tout ce petit monde, le mieux est de créer une configuration dans "Patchbay".
Les entrées stéréos d'Ecasound apparaissent dans QJackCtl de haut en bas dans l'ordre de création des chaînes dans Ecasound. Ainsi Hydrogen doit être connecté aux deux premières entrées d'Ecasound, ensuite c'est au tour de Freewheeling pour le routage vers l'égaliseur et puis pour le délai. Même chose pour TerminatorX et la TB303.
3. Conclusion
Je ne me présente pas comme un expert d'Ecasound, il y a certainement une façon plus élégante ou plus performante d'obtenir le résultat escompté, c'est pourquoi j'invite quiconque à suggérer des améliorations de ce script. Le but de cet exposé est de vous donner l'envie de créer votre propre configuration audio avec Ecasound. Un des intérêts que je n'ai pas évoqué jusqu'à présent est la possibilité de partager ses scripts, en ce sens Ecasound reste très fidèle à la mentalité véhiculée par les logiciels libres et surtout, Ecasound est un des seuls logiciels audio, de niveau professionnel, entièrement accessible aux non voyants.