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./*.L.wav
marche mieux ...for
déclaration doit en quelque sorte trouver les fichiers qui correspondent*
à la premièrefor
A partir de la suggestion de sgmart, je l’ai résolue:
Nécessaire
"
est autour des variables.Et j'ai ajouté un peu pour déplacer les fichiers traités dans un sous-dossier 'mono'.
la source
Pour les personnes ayant besoin de le faire sous Windows avec un fichier de commandes:
Les 4 règles à remplir sont:
1) Le fichier de commandes doit être placé dans le répertoire où est installé SOX.
2) Les fichiers mono doivent avoir les terminaisons .L.WAV et .R.WAV
3) Pas d'espaces dans le nom du fichier
4) Placez tous vos fichiers / dossiers mono dans un nouveau dossier appelé input à l'intérieur du dossier d'installation SOX.
Après avoir exécuté le fichier de commandes, vous obtenez un nouveau dossier appelé sortie avec tous les fichiers stéréo et la même structure de dossier que le dossier d' entrée.
Le code est commenté, il est donc facile de suivre chaque étape du processus. N'hésitez pas à modifier et à publier ici des versions améliorées de ce script (la partie copie devrait être un mouvement, mais je ne suis pas très expert en code batch cmd!).
Et c'est parti:
la source