J'ai un dossier plein de .wav
fichiers audio.
Certains sont stéréo, la plupart sont mono splits.
Les paires mono split sont toutes nommées foo bar track.L.wav
etfoo bar track.R.wav
Je peux utiliser l'outil de ligne de commande sox
pour combiner une paire mono dans 1 piste stéréo comme ceci:
sox -M track1.L.wav track1.R.wav track1.Stereo.wav
où les 2 premiers fichiers sont les paires mono et le troisième est le fichier stéréo de sortie.
C'est bien, mais j'aimerais avoir un script qui trouvera automatiquement toutes les paires mono et les combinera en fichiers stéréo.
En d’autres termes, j’ai besoin de trouver tous les fichiers qui portent le même nom, à l’exception de .L.
et .R.
avant l’extension, et de les exécuter sox
sur un nouveau fichier portant le même nom, sans L/R
suffixe.
Par exemple, si mon dossier contient ces fichiers:
track1.L.wav
track2.L.wav
track3.L.wav
track4.L.wav
track1.R.wav
track2.R.wav
track3.R.wav
track4.R.wav
track6.wav
track7.wav
J'ai besoin d'exécuter ces commandes:
sox -M track1.L.wav track1.R.wav track1.Stereo.wav
sox -M track2.L.wav track2.R.wav track2.Stereo.wav
sox -M track3.L.wav track3.R.wav track3.Stereo.wav
sox -M track4.L.wav track4.R.wav track4.Stereo.wav
Voici où je suis si loin:
for file in ./*.L.wav;
do
file2=`echo $file | sed 's_\(.*\).L.wav_\1.R.wav_'`;
out=`echo $file | sed 's_\(.*\).L.wav_\1.STEREO.wav_'`;
echo $file - $file2 - $out;
done
Cela fonctionne, mais quand je remplace la echo
ligne par
sox -M $file $file2 $out;
ça ne marche pas les espaces dans les noms de fichiers le font échouer.
sox
nécessite 3 arguments: les 2 fichiers, plus le fichier de sortie. J'ai besoin que le nom du fichier de sortie corresponde au nom des deux premiers sans L ni R