我尝试过用谷歌搜索,但只能找到相反方向的指南。
我有来自专辑的几个 flac 文件,都已正确标记。我想将它们自动制作成带有提示表的单个 flac 文件(即不粘贴到 Audacity 中并自己制作提示表)。
这可能吗?
答案1
使用什恩工具,一种用于处理无损音频文件的多用途、多格式的命令行工具。
shntool join -o flac *.flac
这将生成一个文件joined.flac
,其中包含 中每个文件的音频内容*.flac
。请注意,您可能希望指定 FLAC 文件的名称,而不是将其留给*.flac
。这可让您确保文件以正确的顺序合并,并且不会包含不需要的 FLAC 文件。
shntool cue *.flac > joined.cue
这将生成一个 CUE 文件joined.cue
,即列出音轨和时间的简单文本文件。指定 FLAC 文件的名称时也需注意这一点。(如果您按顺序尝试这些命令,joined.flac
现在将是 中的一个文件*.flac
。)
答案2
提示工具应该可以让你这样做 - 你可以选择文件所在的整个文件夹,然后选择“嵌入式”作为模式(嵌入式指的是专辑封面,而不是 flac 文件。选择 image+cue 以获得单独的专辑封面图像)和“编码”作为操作。选择 flac 作为文件类型,选择 libflake 作为编码器
这将弹出一个窗口,其中有提示表的几组数据 - 第一组基于您的数据,其他组来自 freedb 和其他网站。
这将为您提供一个带有提示文件的 flac 文件。
答案3
我尝试了 foobar2000 路线,但不幸的是,它没有准确打印每个曲目的 INDEX 变量。我也无法让其他解决方案奏效。我做了很多尝试和错误(在 ChatGPT 的大力帮助下),并编写了一个可以做到这一点的 bash 脚本。
#!/bin/bash
#if this doesn't work, you may need to install flac:
#sudo apt install flac
#written with significant help from ChatGPT
#INSTRUCTIONS: 1) Save this code as create_cue.sh
# 2) Place it in the same folder as the .flac files you want to create a .cue sheet for
# 3) Run the bash script (you may need to mark it as executable)
# 4) Voila! Instant .cue file. Enjoy
# Get the first FLAC file in the directory
flac_file=$(ls *.flac | head -n 1)
# Get the header information from the FLAC file
PERFORMER=$(metaflac --show-tag=ARTIST "$flac_file" | cut -d= -f2)
TITLE=$(metaflac --show-tag=ALBUM "$flac_file" | cut -d= -f2)
DATE=$(metaflac --show-tag=DATE "$flac_file" | cut -d= -f2)
COMMENT=$(metaflac --show-tag=COMMENT "$flac_file" | cut -d= -f2)
# Set variables for the cue file
CUEFILE="$PERFORMER - $TITLE.cue"
# Initialize variables for cumulative time
HOURS=0
MINUTES=0
SECONDS=0
# Start writing cue file
echo "REM DATE $DATE" >> "$CUEFILE"
echo "REM COMMENT $COMMENT" >> "$CUEFILE"
echo "PERFORMER \"$PERFORMER\"" >> "$CUEFILE"
echo "TITLE \"$TITLE\"" >> "$CUEFILE"
# Loop through each flac file in the current directory
for flacfile in *.flac; do
# Get track number, performer, and title from file tags
TRACK=$(metaflac --show-tag=TRACKNUMBER "$flacfile" | sed 's/.*=//')
PERFORMER=$(metaflac --show-tag=ARTIST "$flacfile" | sed 's/.*=//')
TITLE=$(metaflac --show-tag=TITLE "$flacfile" | sed 's/.*=//')
# Write track info to cue file
printf "FILE \"$flacfile\" WAVE \n" >> "$CUEFILE"
printf " TRACK %02d AUDIO\n" "$TRACK" >> "$CUEFILE"
printf " TITLE \"%s\"\n" "$TITLE" >> "$CUEFILE"
printf " PERFORMER \"%s\"\n" "$PERFORMER" >> "$CUEFILE"
printf " INDEX 01 %02d:%02d:%02d\n" "$HOURS" "$MINUTES" "$SECONDS" >> "$CUEFILE"
# Get length of track in seconds
LENGTH=$(metaflac --show-total-samples "$flacfile")
LENGTH=$((LENGTH/44100))
# Update cumulative time
SECONDS=$((SECONDS+LENGTH))
if [ $SECONDS -ge 60 ]; then
MINUTES=$((MINUTES+SECONDS/60))
SECONDS=$((SECONDS%60))
fi
if [ $MINUTES -ge 60 ]; then
HOURS=$((HOURS+MINUTES/60))
MINUTES=$((MINUTES%60))
fi
done
答案4
看看 Foobar2000,它可以创建带有嵌入式提示表的单个文件,还可以嵌入艺术作品,还可以播放生成的文件 http://www.foobar2000.org/