mardi 24 août 2021

Backing track

Transformer une grille d'accords en une backing-track MIDI potable, c'est faisable, mais sans les outils adaptés, c'est long et fastidieux, pourtant c'est ce que je faisais jusqu'à présent sur chacune de mes compos (principalement chansons) pour en avoir un rendu à peu près écoutable qui ressemblerait plus ou moins à une chanson.

  • écrire les parties de chaque instrument qui soit jouable sur un vrai instrument
  • écrire une piste de batterie réaliste avec un groove qui tourne

En travaillant avec des claviers arrangeurs, je n'avais que rarement la possiblité de transformer la backing track "temps réel" en un fichier MIDI utilisable dans ma DAW. J'étais donc à la recherche depuis quelques temps d'un logiciel qui permette

  • de générer des backing tracks MIDI d'après la grille / structure du morceau
  • d'utiliser des styles prédéfinis de qualité
  • de personnaliser les styles
  • de travailler sous Linux
  • de s'interfacer avec d'autres logiciels
    • en MIDI pour les synthés via ALSA, Jack ou autres
    • via des fichiers structurés "standard" pour d'autres éditeurs

j'avais en tête un logiciel que j'utilisais lorsque j'étais encore sous windows (c'est à dire il y a assez longtemps pour que ce soit windows 95) : Band in a box.

J'ai d'abord jeté un coup d'oeil sur LinuxBand (cf http://linuxmao.org/LinuxBand) dont l'interface assez vieillotte ne m'a pas vraiment convaincu.Cependant, la page d'accueil du projet référençait un autre projet JJazzLab-X qui possède une interface JJazzLab écrite en java : https://www.jjazzlab.com/

Le lancement avec fluidsynth décrit sur le site est un peu fastidieux (cf ci-dessous pour ma solution pour me simplifier la vie), mais les fonctionnalités sont plutôt très intéressantes pour se simplifier la vie et l'écriture, en particulier, le support des banques de style Yamaha (tyros, PSR, ...) rend le logiciel très extensible, et la possibilité de définir des styles personnalisés le rend vraiment très pratique, à défaut de toujours intuitif.

Voici donc mon petit script pour le lancer comme recommandé par la doc du projet, mais de manière automatique : 

#!/bin/env bash
#

jjlhome=$(dirname $(readlink -f $(dirname $0)))
jdkhome=${jjlhome}/jdk

if [[ -z "$(lsmod | grep snd_virmidi | wc -l)" ]]; then
echo "Loading virtual MIDI driver"
sudo modprobe snd-virmidi midi_devs=1
else
echo "Virtual MIDI driver already loaded"
fi

qsynth &

echo "Waiting a few seconds for fluidsynth to start"
sleep 5
VMIDI_DEV=$(aconnect -lo | grep 'Virtual Raw MIDI' | sed -r -e 's/^client ([0-9]+):.*$/\1/')
QMIDI_DEV=$(aconnect -lo | grep 'FLUID Synth' | sed -r -e 's/^client ([0-9]+):.*$/\1/')
aconnect $VMIDI_DEV:0 $QMIDI_DEV:0

${jjlhome}/bin/jjazzlab

# Kills qsynth once app is closed
pkill -9 qsynt

Pour ce qui concerne les banques de son, ils référencent une banque de qualité raisonnable dans la documentation, vous pourrez utiliser avec qsynth (fluidsynth) une soundfont de votre choix qui pourrait être beaucoup plus volumineuse et potentiellement de meilleure qualité que celle conseillée. C'est ensuite une question de performances de l'ordinateur utilisé.Vous trouverez probablement votre bonheur ici : https://musical-artifacts.com/

Une banque raisonnable disponible en plusieurs variations de différentes tailles :

 https://musical-artifacts.com/artifacts?q=DSoundfont

Pour en revenir à JJazzLab

  • l'interface est plutôt agréable, une fois qu'on la connait, mais la prise en main n'est pas ce qu'il y a de plus intuitif, en particulier
    • L'ajout d'accords en milieu de mesure demande <Ctrl> + Glisser de l'accord de début de mesure
    • Les fonctionnalités de la structure sont accessible à la fois dans les propriétés (onglet song part) et dans la carte dans la partie basse. On ne sait plus trop où modifier
    • Les fonctionnalités d'édition des propriétés avancées des mesures ne sont accessibles que depuis une fenêtre pop-up affichée au double clic sur un accord ... l'utilisation d'un onglet de propriétés contextuellesserait propablement plus simple.
  • Il me manque (mais c'est logique vu le fonctionnement 100% MIDI) une option d'export audio directement cablé dans l'appli.
    • on peut contourner ce problème en configurant la sortie de fluidsynth vers un fichier.

https://www.jjazzlab.com/images/JJazzLab-Dark-large.png

Le résultat, au final ?

Une fois la prise en main initiale du logiciel effectuée, la récolte de styles supplémentaires effectuée, le temps gagné est énorme et les résutats dépendent surtout de la qualité du style utilisé.

Voici côte à côte deux versions d'une même  backing track, la première réalisée à la main dans un vieux cubase en quelques heures, l'autre en quelques minutes avec jjazzlab. Les deux ont été jouées avec la même banque de son avec les mêmes réglages de fluidsynth, un pseudo-mastering analogique sur une Xenyx X1222 et enregistrement sur un DR-40x (entrée ligne) puis conversion en MP3 par lame.