複数のオーディオファイルをファイルごとに12のさまざまなピッチに移動したいと思います。
以下は、ファイルのピッチを正常に変更します。
sox *.wav Examples_100.wav pitch 100
以下は、ディレクトリ内のすべてのファイルをwavからmp3に正常に変換します。
for f in *.wav; do sox "$f" "converted/${f%%.wav}.mp3"; done
目的の結果を得るために、これらのコマンドを組み合わせてみました。以下は、ディレクトリ内のすべてのファイルにitch 100コマンドを適用しようとしています。
for f in *.wav; do sox "$f" "converted/${f%%.wav}.wav” pitch 100; done
したがって、まずこの問題を解決する必要があります。
しかし、最終的に各ファイルに以下を適用したいと思います。
pitch 100
pitch 200
pitch 300
pitch 400
pitch 500
pitch 600
pitch -100
pitch -200
pitch -300
pitch -400
pitch -500
pitch -600
したがって、ディレクトリ内の各ファイルは出力ディレクトリに12個のファイルを返します。
しかし、最初の問題を解決するのに役立つと、2番目の問題も私が直接解決できるようです。
これでパート1が解決されました。
今理由を知る必要があります。
for f in *.wav;
do sox "$f" "converted/${f%%.wav}.wav" pitch 100;
do sox "$f" "converted/${f%%.wav}.wav" pitch 200;
done
実行エラー:
-bash: syntax error near unexpected token `do'
ベストアンサー1
使用一つ(および単一の)ループ内で実行される各コマンドに対して、1つではなくループごとに1つのdo
ステートメントです。for
例えば
for f in *.wav; do
sox "$f" "converted/${f%%.wav}.wav" pitch 100
sox "$f" "converted/${f%%.wav}.wav" pitch 200
done
または:
for f in *.wav; do
for p in 100 200 300 400 500 600 -100 -200 -300 -400 -500 -600 ; do
sox "$f" "converted/${f%%.wav}.$p.wav" pitch "$p"
done
done