#!/bin/bash ############# # Stéréo vers 5.1 (pseudo) surround - version 0.02 - 20140322 ############# # très librement inspiré de, et mercis à : # http://www.projectionniste.net/forums/viewtopic.php?f=45&t=5231 # http://jeanbruenn.info/2011/10/22/stereo-to-fake-surround/ # http://www.pfast.fr/IMG/pdf/UPMIXCicmHd3d.pdf # http://home-made-dcp.over-blog.fr/article-d-un-son-stereo-vers-un-pseudo-5-1-avec-audacity-84744383.html ############# # utilisation : # placez-vous dans le dossier où se situe votre fichier son stéréo à traiter, # puis lancez ce script depuis le terminal sur ce modèle : # bash nom_du_script nom_fichier_source nom_fichier_sortie # les noms de fichier s'entendent avec leur extension, .wav recommandé pour la sortie f_source="$1"; f_sortie="$2"; # contrôle présence SoX if [ -x /usr/bin/sox ]; then echo " SoX est bien présent sur votre système." else echo " SoX n'est pas présent sur votre système. Lancement de l'installation." sudo apt-get update sudo apt-get install -y sox libsox-fmt-all fi # paramètres de sox dft="-S -V" echo "Préparation du fichier de travail"; # transformation du fichier source en .wav 48khz 24 bits stereo # normalisé à -1 dbfs sox $f_source -r 48k -b 24 /tmp/00.wav sinc 20-20000 gain -n -1 if [ -f /tmp/00.wav ]; then echo " Ok, le fichier temporaire est créé !" else echo " Un problème est survenu : lisez attentivement les divers retours de commande." exit fi # les différents upmix rep_fq() { # gauche sox $dft /tmp/00.wav /tmp/01.wav remix -l sinc 1900-4800 # droite sox $dft /tmp/00.wav /tmp/02.wav remix -r sinc 1900-4800 # centre sox $dft /tmp/00.wav /tmp/03.wav remix 1v0.5,2v0.5 sinc 150-1900 # basses sox $dft /tmp/00.wav /tmp/04.wav remix 1v0.5,2v0.5 sinc 20-150 # ambiance gauche sox $dft /tmp/00.wav /tmp/05.wav remix -l sinc 4800-20000 # ambiance droite sox $dft /tmp/00.wav /tmp/06.wav remix -r sinc 4800-20000 # valeur de peak dbfs peak="-11" } mix_rep() { # gauche sox $dft /tmp/00.wav /tmp/01.wav remix 1v0.7,2v-0.11 # droite sox $dft /tmp/00.wav /tmp/02.wav remix 1v-0.11,2v0.7 # centre sox $dft /tmp/00.wav /tmp/03.wav remix 1v0.354,2v0.354 # basses sox $dft /tmp/00.wav /tmp/04.wav remix 1v0.5,2v0.5 lowpass -2 100 0.71 # ambiance gauche sox $dft /tmp/00.wav /tmp/05.wav remix 1v0.67,2v-0.22 # ambiance droite sox $dft /tmp/00.wav /tmp/06.wav remix 1v-0.22,2v0.67 # valeur de peak dbfs peak="-12" } inv_rep() { # mono_mix sox $dft -c 2 /tmp/00.wav -c 1 /tmp/mono_mix.wav mixer 0.5,0.5 # séparation gauche et droite sox $dft -c 2 /tmp/00.wav -c 1 /tmp/00gauche.wav mixer -l sox $dft -c 2 /tmp/00.wav -c 1 /tmp/00droite.wav mixer -r # inversion de phase sur gauche et droite, # soustraction de gauche au centre pour obtenir droite, # soustraction de droite au centre pour obtenir gauche sox $dft -M -c 1 -v -1 /tmp/00droite.wav -c 1 /tmp/mono_mix.wav -c 1 /tmp/gauche.wav sox $dft -M -c 1 -v -1 /tmp/00gauche.wav -c 1 /tmp/mono_mix.wav -c 1 /tmp/droite.wav # gauche sox $dft -c 1 /tmp/gauche.wav -c 1 /tmp/01.wav sinc 120-20000 # droite sox $dft -c 1 /tmp/droite.wav -c 1 /tmp/02.wav sinc 120-20000 # centre sox $dft -c 1 /tmp/mono_mix.wav -c 1 /tmp/03.wav sinc 120-12000 # basses sox $dft -c 1 /tmp/mono_mix.wav -c 1 /tmp/04.wav sinc 20-120 # ambiance gauche sox $dft -c 1 /tmp/gauche.wav -c 1 /tmp/05.wav delay 0.02 sinc 120-6000 reverb # ambiance droite sox $dft -c 1 /tmp/droite.wav -c 1 /tmp/06.wav delay 0.02 sinc 120-6000 reverb # valeur de peak dbfs peak="-11" } echo -n " Quel style d'upmix 5.1 désirez-vous effectuer ? - par répartition des bandes de fréquences, tapez 1 - par mixage des canaux + répartition, tapez 2 - par répartition + inversion de phases, tapez 3 "; while [ 1 ]; do read choix case $choix in 1 ) rep_fq break;; 2 ) mix_rep break;; 3 ) inv_rep break;; * ) echo -n " Aheum. Réponses possibles 1, 2, ou 3. Quel est donc votre choix ? " esac done echo " Création des différentes pistes"; echo " Création du fichier final multi-piste"; # sortie dans un fichier multipiste, peak déterminé dans les différents upmix sox $dft -M /tmp/01.wav /tmp/02.wav /tmp/03.wav /tmp/04.wav /tmp/05.wav /tmp/06.wav --comment "" -e s -L -c 6 $PWD/$f_sortie gain -e $peak if [ -f $PWD/$f_sortie ]; then echo "Le fichier $f_sortie est dans $PWD !" else echo "Un problème est survenu : lisez attentivement les divers retours de commande." fi exit 0