Wie kann ich aus mehreren FLAC-Dateien einen FLAC+Cue erstellen?

Wie kann ich aus mehreren FLAC-Dateien einen FLAC+Cue erstellen?

Ich habe es mit Google versucht, konnte aber nur Anleitungen für den umgekehrten Weg finden.

Ich habe ein paar FLAC-Dateien von einem Album, alle richtig markiert. Ich möchte sie automatisch in eine einzelne FLAC-Datei mit einem Cuesheet umwandeln (also nicht in Audacity einfügen und den Cue selbst erstellen).

Ist das möglich?

Antwort1

Verwendenwerkzeug, ein vielseitiges Befehlszeilentool für mehrere Formate zum Bearbeiten verlustfreier Audiodateien.

shntool join -o flac *.flac

Dadurch wird eine Datei erstellt joined.flac, die den Audioinhalt aller Dateien in enthält *.flac. Beachten Sie, dass Sie die Namen der FLAC-Dateien möglicherweise angeben möchten, anstatt sie bei zu belassen *.flac. Auf diese Weise können Sie sicherstellen, dass die Dateien in der richtigen Reihenfolge zusammengefügt werden und keine unerwünschten FLAC-Dateien eingefügt werden.

shntool cue *.flac > joined.cue

Dadurch wird eine CUE-Datei generiert joined.cue, eine einfache Textdatei mit einer Liste der Titel und Zeitangaben. Beim Angeben der Namen der FLAC-Dateien ist die gleiche Vorsicht geboten. (Wenn Sie diese Befehle der Reihe nach ausführen, joined.flacwird jetzt eine der Dateien in eingeholt *.flac.)

Antwort2

Queuetoolssollte Ihnen dies ermöglichen - Sie können den gesamten Ordner auswählen, in dem sich die Dateien befinden, und "Embedded" als Modus auswählen (Embedded bezieht sich auf das Albumcover, nicht auf die FLAC-Datei. Wählen Sie image+cue für ein separates Albumcover-Bild) und "Encode" als Aktion. Wählen Sie flac als Dateityp und libflake als Encoder

Bildbeschreibung hier eingeben

Dadurch wird ein Fenster mit mehreren Datensätzen für das Cue Sheet geöffnet – der erste basiert auf Ihren Daten, die anderen auf Freedb und anderen Sites.

Bildbeschreibung hier eingeben

Dadurch sollten Sie eine einzelne FLAC-Datei mit einer Cue-Datei erhalten.

Antwort3

Ich habe die foobar2000-Route ausprobiert, aber leider hat sie die INDEX-Variable für jeden Track nicht korrekt gedruckt. Auch die anderen Lösungen habe ich nicht zum Laufen gebracht. Ich habe viel herumprobiert (mit großer Unterstützung von ChatGPT) und ein Bash-Skript geschrieben, das genau das tut.

#!/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

Antwort4

Schauen Sie sich Foobar2000 an. Es kann eine einzelne Datei mit eingebettetem Cue Sheet erstellen, Grafiken einbetten und die resultierende Datei auch abspielen. http://www.foobar2000.org/

verwandte Informationen