#!/bin/bash ############# # Stéréo vers 5.1 (pseudo) surround - version 0.05 - 20140628 ############# # 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 VIDEO avec 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, .mov recommandé pour la sortie f_source="$1"; f_sortie="$2"; # les différents upmix rep_fq() { echo "Répartition des fréquences sur les 6 canaux, Création des pistes..." # gauche sox $dft $ddt/00.wav $ddt/01.wav remix -l sinc 1900-4800 # droite sox $dft $ddt/00.wav $ddt/02.wav remix -r sinc 1900-4800 # centre sox $dft $ddt/00.wav $ddt/03.wav remix 1v0.5,2v0.5 sinc 150-1900 # basses sox $dft $ddt/00.wav $ddt/04.wav remix 1v0.5,2v0.5 sinc 20-150 # ambiance gauche sox $dft $ddt/00.wav $ddt/05.wav remix -l sinc 4800-20000 # ambiance droite sox $dft $ddt/00.wav $ddt/06.wav remix -r sinc 4800-20000 # valeur de peak dbfs peak="-11" } mix_rep() { echo "Répartition des fréquences + re-mixage sur 6 canaux, Création des pistes..." # gauche sox $dft $ddt/00.wav $ddt/01.wav remix 1v0.7,2v-0.11 # droite sox $dft $ddt/00.wav $ddt/02.wav remix 1v-0.11,2v0.7 # centre sox $dft $ddt/00.wav $ddt/03.wav remix 1v0.354,2v0.354 # basses sox $dft $ddt/00.wav $ddt/04.wav remix 1v0.5,2v0.5 lowpass -2 100 0.71 # ambiance gauche sox $dft $ddt/00.wav $ddt/05.wav remix 1v0.67,2v-0.22 # ambiance droite sox $dft $ddt/00.wav $ddt/06.wav remix 1v-0.22,2v0.67 # valeur de peak dbfs peak="-12" } inv_rep() { echo "Répartition des fréq. + spatialisation par inversion de phases + re-mixage sur 6 canaux, Création des pistes..." # mono_mix sox $dft -c 2 $ddt/00.wav -c 1 $ddt/mono_mix.wav mixer 0.5,0.5 # séparation gauche et droite sox $dft -c 2 $ddt/00.wav -c 1 $ddt/00gauche.wav mixer -l sox $dft -c 2 $ddt/00.wav -c 1 $ddt/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 $ddt/00droite.wav -c 1 $ddt/mono_mix.wav -c 1 $ddt/gauche.wav sox $dft -M -c 1 -v -1 $ddt/00gauche.wav -c 1 $ddt/mono_mix.wav -c 1 $ddt/droite.wav # gauche sox $dft -c 1 $ddt/gauche.wav -c 1 $ddt/01.wav sinc 120-20000 # droite sox $dft -c 1 $ddt/droite.wav -c 1 $ddt/02.wav sinc 120-20000 # centre sox $dft -c 1 $ddt/mono_mix.wav -c 1 $ddt/03.wav sinc 120-12000 # basses sox $dft -c 1 $ddt/mono_mix.wav -c 1 $ddt/04.wav sinc 20-120 # ambiance gauche sox $dft -c 1 $ddt/gauche.wav -c 1 $ddt/05.wav delay 0.02 sinc 120-6000 reverb # ambiance droite sox $dft -c 1 $ddt/droite.wav -c 1 $ddt/06.wav delay 0.02 sinc 120-6000 reverb # valeur de peak dbfs peak="-7" } # dossier de travail mkdir /tmp/script_upmix ddt="/tmp/script_upmix" # 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, depuis les dépôts." sudo apt-get update sudo apt-get install -y sox libsox-fmt-all fi # paramètres de sox dft="-S -V" # contrôle présence ffmpeg if [ -x /usr/bin/ffmpeg ]; then echo " FFMPEG est bien présent sur votre système." else echo " FFMPEG n'est pas présent sur votre système. Lancement de l'installation, via le PPA de Jon Severinsson." sudo add-apt-repository ppa:jon-severinsson/ffmpeg sudo apt-get update sudo apt-get install -y ffmpeg fi # Séparation de la vidéo en 2 fichiers, un pour l'audio # et l'autre pour la video echo " Préparation des fichiers de travail" ffmpeg -i $f_source -vn -f wav -acodec pcm_s24le -ar 48000 -ac 2 $ddt/AUDIO ffmpeg -i $f_source -an -f mov -vcodec copy $ddt/VIDEO # transformation du fichier AUDIO en .wav 48khz 24 bits stereo # normalisé à -1 dbfs sox $ddt/AUDIO -r 48k -b 24 $ddt/00.wav sinc 20-20000 gain -n -1 if [ -f $ddt/00.wav ]; then echo " Ok, le fichier AUDIO temporaire est créé !" else echo " Un problème est survenu : lisez attentivement les divers retours de commande." exit fi if [ -f $ddt/VIDEO ]; then echo " ...et le fichier VIDEO également !" else echo " Un problème est survenu : lisez attentivement les divers retours de commande." exit fi 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 du fichier AUDIO multi-piste"; # sortie dans un fichier multipiste, peak déterminé dans les différents upmix sox $dft -M $ddt/01.wav $ddt/02.wav $ddt/03.wav $ddt/04.wav $ddt/05.wav $ddt/06.wav --comment "" -e s -L -c 6 $ddt/AUDIO_51.wav gain -e $peak # "collage" de AUDIO_51.wav avec VIDEO ffmpeg -i $ddt/AUDIO_51.wav -i $ddt/VIDEO -f mov -acodec copy -vcodec copy $PWD/$f_sortie if [ -f $PWD/$f_sortie ]; then echo "Le fichier $f_sortie est dans $PWD !" echo -n "Suppression des fichiers de travail temporaires ? OUI, les supprimer définitivement sans pitié, tapez S NON, les déplacer vers le dossier "upmix" sur $PWD tapez D "; while [ 1 ]; do read choix case $choix in S ) rm -rf $ddt/ break;; D ) mkdir /$PWD/upmix mv $ddt/* /$PWD/upmix break;; * ) echo -n " Hmm. Les réponses possibles sont : S (majuscule) pour Supprimer ou D (majuscule) pour Déplacer les fichiers vers $PWD. Quel est donc votre choix ? " esac done else echo " Un problème est survenu : lisez attentivement les divers retours de commande." fi exit 0