Page 1 of 1
Aide pour un script [résolu]
Posted: Tue 31 Jul 2018, 04:17
by patrick21
Bonjour,
j'aurais besoin d'aide pour un script.
J'utilise Soundstretch en ligne de commande pour manipuler des fichiers wav.
Pour un seul fichier, ça va. Par ex pour baisser de 3 demi-tons:
Code: Select all
soundstretch input.wav output.wav -pitch=-3
Mais j'aimerais faire ça pour plusieurs fichiers en même temps. J'aissayé:
Code: Select all
#!/bin/bash
pitch=-3
for f in *.wav; do
fname=$(basename $f)
ext="${fname##*.}"
base="${fname%.*}"
./soundstretch $f $base$pitch.$ext -pitch=$pitch
done
Sans succès. Quelqu'un aurait-il une idée. Merci
La page de soundstrecht
https://www.surina.net/soundtouch/soundstretch.html
Posted: Tue 31 Jul 2018, 07:57
by Argolance
Bonjour,
Ne manque-t-il pas le chemin complet du dossier contenant les fichiers wav?
Code: Select all
for f in /chemin/vers/dossier/*.wav; do
Cordialement.
Posted: Tue 31 Jul 2018, 08:02
by patrick21
merci de ta réponse.
Le script est dans le dossier où sont les fichiers. Mais peut-être que cela ne suffit pas. Je vais essayer.
Posted: Tue 31 Jul 2018, 08:15
by Argolance
Posted: Tue 31 Jul 2018, 08:29
by Argolance
Autrement, va dans la rubrique "Programming" de la partie anglophone, tu trouveras sans doute quelqu'un qui se fera un plaisir de te dépanner, ou encore sur le forum Ubuntu, où j'ai pour ma part trouvé pratiquement toutes les réponses à mes "problèmes".
Cordialement.
Re: Aide pour un script
Posted: Tue 31 Jul 2018, 08:53
by MochiMoppel
patrick21 wrote:
Code: Select all
#!/bin/bash
pitch=-3
for f in *.wav; do
fname=$(basename $f)
ext="${fname##*.}"
base="${fname%.*}"
./soundstretch $f $base$pitch.$ext -pitch=$pitch
done
First you need to change to the working directory (= directory of script and wav files)
This should work:
P.S. I google translated this page. French is all Greek to me
Posted: Tue 31 Jul 2018, 09:17
by patrick21
Bonjour,
j'ai trouvé ce qui buggait. En fait, il faut certainement indiquer le chemin du fichier, mais surtout le ./ avant soundstretch n'a pas l'air correct.
J'ai changé le script de:
Code: Select all
#!/bin/bash
pitch=-3
for f in *.wav; do
fname=$(basename $f)
ext="${fname##*.}"
base="${fname%.*}"
./soundstretch $f $base$pitch.$ext -pitch=$pitch
done
vers
Code: Select all
#!/bin/bash
pitch=-3
cd /root/test
for f in *.wav; do
fname=$(basename $f)
ext="${fname##*.}"
base="${fname%.*}"
soundstretch $f $base$pitch.$ext -pitch=$pitch
done
et cela a fonctionné. En tout cas, merci beaucoup pour votre aide.
MochiMoppel, I modified the script and added the workin directory (not with your writing, because I did not understand it), and I remove the ./ before soudstrecht wihich seems to be for windows. I dont know if it is properly made, but it works.
Thank you!
Posted: Tue 31 Jul 2018, 13:27
by MochiMoppel
patrick21 wrote:I remove the ./ before soudstrecht wihich seems to be for windows
Bonjour and congratulations!
./ before soundstretch is not only for WIndows. Since you used it in your code I assumed that you did this on purpose. You
must use this syntax if the file
soundstretch is located in the directory of the script and the *.wav files. If you saved
soundstretch into one of the directories where bash searches for executable files, e.g. /usr/bin , then this syntax will not work.
Posted: Tue 31 Jul 2018, 18:08
by patrick21
Thanks for the explanation. I did not use this syntax really on purpose, I just copied a script. But I understand that, in my case, the ./ was not necessary.