lundi 28 juillet 2014

ecasound / nama le multitrack recorder léger !

Pour accéder à la Liste des articles de ce blog c'est par ici

Bonjour,

aujourd'hui je vous parle d'un logiciel Linux qui existe depuis longtemps (1999) et qui est réputé pour être stable et très léger. ecasound est un enregistreur multi-pistes (multitrack recorder) en ligne de commande qui inclut des effets mais qui peut aussi utiliser des plugins LADSPA et LV2 (depuis la 2.9.1) . il va réhabiliter votre vielle ordinateur ou vous permettre d'enregistrer avec un netbook et une carte son USB par exemple !

Le but de cet article n'est pas de refaire une doc sur ecasound mais plutôt de fournir quelques astuces et exemples concrets qui vous permettront rapidement d'être opérationnel sur ce logiciel. Dans cet article, j'utiliserai le serveur de son jack avec ecasound mais sachez qu'il est aussi possible d'utiliser ALSA ou d'autres ... J'aborderai également en fin d'article nama qui est une surcouche à ecasound et qui est plus facile à appréhender.

ecasound supporte de nombreux formats de fichiers (utilise la bibliothèque libsndfile) mais dans cet article, on utilisera le format WAV.

Installation d'ecasound

Pour installer ecasound, tapez la ligne de commande suivante:
$ sudo apt-get install ecasound

Obtenir de l'aide sur ecasound:
$ man ecasound

Pour démarrer ...

Voici un exemple qui joue un fichier "musique.wav" sur la sortie du serveur de son jack.
$ ecasound -i musique.wav -o jack,system

Voici un exemple qui enregistre un fichier "micro.wav" à partir de l'entrée jack
$ ecasound -i jack,system -o micro.wav

jusque là, ça va ... Maintenant passons à la défintion de quelques concepts d'ecasound.

Concepts

Voici quelques concepts d'ecasound:
le concept de chainsetup : C'est l'équivalent d'un patch audio
le concept de "chain" qui s'apparente à un jack audio avec toujours une entrée (input) et une sortie (output). On peut appliquer sur un bout de chaîne (entrée ou sortie) des effets et faire des conversions de formats numériques (nombre de bits, nombre de canaux, fréquence d'échantillonage)

ecasound utilise le format de fichier .ecs pour stocker un fichier projet (ecasound chain-setup). Ce type de fichier contient simplement les options en ligne de commande que vous voulez utiliser avec ecasound. C'est beaucoup plus pratique que de saisir des longues ligne de commande.

Exemple de chain-setup

Fichier .ecs


Voici un exemple avancé de projet dans lequel on enregistre deux pistes que l'on monitore avec en plus un mix Basse/batterie/Chant/Click:
########################################################
# GENERAL

# Real time low latency
-B:rtlowlatency 

# frame buffer (determine la latence disponible pour le traitement (voir qjackctl))
-b 128 

# nom du projet 
-n:"lacher_prise" 

# mode update/truncate : update les fichiers en les tronquants
-x 

# s'arrête au premier xrun
-z:xruns 

# mixmode average : mixe en faisant la moyenne
-z:mixmode,avg 

# pour les problèmes de latences :
-z:nointbuf

# envoie les informations de positionnement aux autres process jack connectés
-G:jack,ecasound,send

# format numérique par défaut (32 bits, 2 canaux, à 48000 Hz)
-f:32,2,48000

# MIDI port
-Md:alsaseq,14:0

########################################################
# -f => format numérique
# -i => chain input : entrée de la chaîne
# -o => chain output : sortie de la chaîne
# -a => chain name : nom de la chaîne
#
# par défaut, il ne peut y avoir qu'une entrée et une sortie par chaîne
# avec loop,tag on peut mettre une entrée sur plusieurs sorties et une même sortie sur plusieurs entrées
########################################################
# AUDIO INPUTS 
-a:Capture1 -f:,1, -i:jack,system:capture_1 
-a:Capture2 -f:,1, -i:jack,system:capture_2
-a:RecCapture1,MixCapture1 -f:,1, -i:loop,rec1
-a:RecCapture2,MixCapture2 -f:,1, -i:loop,rec2

# Les deux lignes suivantes transforment le signal mono en stéréo
-a:MixCapture1 -chcopy:1,2 -epp:0
-a:MixCapture2 -chcopy:1,2 -epp:100

# -ea : volume de la piste en pourcentage
# -ea:amplify%
#
# -km : affectation d'un paramètre d'effet à un contrôleur MIDI
# -km:fx-param,start-value,end-value,controller,channel

-a:Basse -i Basse24-48.wav
-a:Basse -ea:100 -km:1,0,100,1,1

-a:Batterie -i Batterie24-48.wav
-a:Batterie -ea:100 -km:1,0,100,2,1

-a:Chant -i Chant24-48.wav
-a:Chant -ea:100 -km:1,0,100,3,1

-a:Metronome -i Click24-48.wav
-a:Metronome -ea:100 -km:1,0,100,4,1

-a:Master -f:,2, -i:loop,all_mix
-a:Master -ea:100 -km:1,0,100,5,1

########################################################
# AUDIO OUTPUTS 
-a:Capture1 -f:,1, -o:loop,rec1
-a:Capture2 -f:,1, -o:loop,rec2
-a:RecCapture1 -f:,1, -o:new_track_capture1.wav
-a:RecCapture2 -f:,1, -o:new_track_capture2.wav
-a:MixCapture1,MixCapture2,Basse,Batterie,Metronome,Chant -f:,2, -o:loop,all_mix
-a:Master -f:,2, -o:jack,system

Petit diagramme excplicatif


Voici un petit graphique simple qui illustre le script ci-dessus:
                            
                                      /--1c--: new_track_capture1.wav
system:capture_1 :--1c--: rec1 :-----+
                          (loopback)  \--2c--: mix_all (loopback) :

                                      /--1c--: new_track_capture2.wav
system:capture_2 :--1c--: rec2 :-----+
                          (loopback)  \--2c--: mix_all (loopback) :


Basse24-48.wav :--2c--: Basse :--2c-------+-: mix_all (loopback) :--: Master :---: system
                                          /
Batterie24-48.wav :-2c: Batterie :-2c----/
                                        /             
Chant24-48.wav :---2c-: Chant :-2c-----/
                                      / 
Click24-48.wav :-2c-: Metronome :-2c-/          
                                    /
rec2 (loopback) :----1c=>2c--------/
                                  /
rec1 (loopback) :----1c=>2c------/

1c = 1 canal : mono
2c = 2 canaux : stereo
loopback : astuce pour connecter une entrée à plusieurs sorties ou plusieurs entrées à une sortie.

Surface de contrôle


ecasound permet de contrôler les paramètres d'effets via un contrôleur MIDI. Celui-ci peut-être hardware ou software (Virtual MIDI Sliders avec wine, Virtual MIDI Piano Keyboard: VMPK ...).

Exemple:
# -km:fx-param,start-value,end-value,controller,channel

-a:Metronome -ea:100 -km:1,0,100,4,1
La combinaison de -km et -ea permet de contrôler le pourcentage du volume (ici 0 à 100) avec le message MIDI CC 4 sur le canal MIDI 1.

La  surcouche à ecasound: Nama


Écrit en Perl, ce module en version 1.114 au moment où j'écris ces lignes sera votre compagnon si vous cherchez un outil de plus haut niveau pour utiliser ecasound mais toujours en ligne de commande. Ce logiciel fournit également une interface graphique épurée pour prendre en main l'outil.

Nama fournit de nombreuses fonctionnalités de haut niveau (punch in/out => track edit, marqueurs, pistes, bus, mixage, mastering, edition non-destructive ...) implémentées avec ecasound. Il évite la surcouche graphique généralement consommatrice en CPU ...  

L'avantage sur ecasound est évident, les chainsetups sont gérés automatiquement par Nama. Les commandes de Nama sont de haut niveau, biens documentées dans le logiciel et faciles à comprendre et à retenir.

Comme tout nouvel outil, il y a un temps d'apprentissage mais selon votre cas d'utilisation, cela peut aller très vite. En tout cas, ça peut valoir le coup si vous avez un ordinateur un peu juste en CPU ou avec un petit écran !





Articles connexes


Voici d'autres articles sur ecasound qui pourront vous intéresser.
Synchroniser un séquenceur MIDI avec ecasound
Métronome avec ecasound


Voilà,
amusez-vous bien,
Musicalement,

Vous trouverez d'autres astuces pour l'audio et la musique sur Ubuntu par ici.

Aucun commentaire:

Enregistrer un commentaire