我想用sox改变每个音乐文件夹中每个mp3的音高.我用bash写的:
function pitch_mp3 {
for mp3 in /home/mp3s/*/*.mp3
do
cd "$(dirname "$mp3")"
output=$(basename "$mp3" .mp3)PITCHED.mp3
sox -S "$mp3" -C 192 "$output" pitch 50
done
}
它将音高添加到例如01song.mp3,输出文件为01songPITCHED.mp3.
但是会发生的事情是sox第一次做这个工作,然后再次循环通过文件夹并添加音调到已经投入的mp3-s,所以他们的文件名被证明是01songPITCHEDPITCHED.mp3.当我注意到时,我停止了它,所以我不知道它是否会第三次添加音高等等.
为什么以及如何解决这个问题?
解决方法:
如果您只想跳过任何以PITCHED.mp3结尾的文件,我会使用case语句
case "$mp3" in
*PITCHED.mp3)
echo skipping "$mp3"
;;
*)
#repitch as before
;;
esac
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。