我正在嘗試組合一些 .wav 檔案的排列。
有 4 種樂器的 6 種變奏。每個生成的軌道都應該有一個樂器。如果我的數學是正確的,應該有 24 個獨特的排列。
這些檔案的名稱如下:
beat_1.wav, beat_2.wav ...
bass_1.wav, bass_2.wav ...
chord_1.wav, chord_2.wav ...
melody_1.wav, melody_2.wav ...
我試圖將它們與
sox -m {beat,bass,chord,melody}_{1..6}.wav out_{1..24}.wav
但無論我對 out_n.wav 檔案使用什么范圍的值,sox 都會立即給出此錯誤:
sox FAIL formats: can't open input file `out_23.wav': No such file or directory
中的數字out_23.wav總是比我指定的范圍小一。
我愿意使用除 sox 和 bash 之外的工具,只要我可以在一個命令/程式中生成所有曲目(例如,我不想在 Audacity 中手動完成)。
uj5u.com熱心網友回復:
如果您替換sox為echo您將看到您構建的命令并沒有真正按照您想要的方式排列:
$ echo sox -m {beat,bash,chord,melody}_{1..6}.wav out_{1..24}.wav
sox -m beat_1.wav beat_2.wav beat_3.wav beat_4.wav beat_5.wav beat_6.wav bash_1.wav bash_2.wav bash_3.wav bash_4.wav bash_5.wav bash_6.wav chord_1.wav chord_2.wav chord_3.wav chord_4.wav chord_5.wav chord_6.wav melody_1.wav melody_2.wav melody_3.wav melody_4.wav melody_5.wav melody_6.wav out_1.wav out_2.wav out_3.wav out_4.wav out_5.wav out_6.wav out_7.wav out_8.wav out_9.wav out_10.wav out_11.wav out_12.wav out_13.wav out_14.wav out_15.wav out_16.wav out_17.wav out_18.wav out_19.wav out_20.wav out_21.wav out_22.wav out_23.wav out_24.wav
因此,我們看到您的輸入有 24 種組合,但它也在同一行提供 24 種輸出,根據 sox 的檔案,除了最后一個之外,所有輸入都被視為輸入,所以,檔案out_1.wav...out23.wav也將被視為輸入而不是輸出。所以,你有一個邏輯問題。
如果您想一次置換所有 24 種組合,我建議使用for回圈,例如
i=0
for f in {beat,bass,chord,melody}_{1..6}.wav
do
((i ))
echo "Input: " $f "Output: out_${i}.wav"
done
哪個輸出:
Input: beat_1.wav Output: out_1.wav
Input: beat_2.wav Output: out_2.wav
Input: beat_3.wav Output: out_3.wav
Input: beat_4.wav Output: out_4.wav
Input: beat_5.wav Output: out_5.wav
Input: beat_6.wav Output: out_6.wav
Input: bass_1.wav Output: out_7.wav
Input: bass_2.wav Output: out_8.wav
Input: bass_3.wav Output: out_9.wav
Input: bass_4.wav Output: out_10.wav
Input: bass_5.wav Output: out_11.wav
Input: bass_6.wav Output: out_12.wav
Input: chord_1.wav Output: out_13.wav
Input: chord_2.wav Output: out_14.wav
Input: chord_3.wav Output: out_15.wav
Input: chord_4.wav Output: out_16.wav
Input: chord_5.wav Output: out_17.wav
Input: chord_6.wav Output: out_18.wav
Input: melody_1.wav Output: out_19.wav
Input: melody_2.wav Output: out_20.wav
Input: melody_3.wav Output: out_21.wav
Input: melody_4.wav Output: out_22.wav
Input: melody_5.wav Output: out_23.wav
Input: melody_6.wav Output: out_24.wav
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/445478.html
上一篇:在括號前提取字串并創建新行
下一篇:如果列小于值替換其他列值awk
