LINUX.ORG.RU

Flacon 5.0.0 — конвертор аудиофайлов музыкальных альбомов

 , ,


1

0

Flacon — свободная программа для извлечения индивидуальных треков из одного большого аудиофайла, содержащего музыкальный альбом, и сохранения их в виде отдельных аудиофайлов. Для этого программа использует информацию из соответствующих CUE-файлов.

Кроме этого, Flacon имеет возможность пересмотреть или добавить теги для всех треков вместе или же для отдельных треков.

Возможности программы:

  • Поддерживаемые входные форматы: WAV, FLAC, APE, WavPack, True Audio (TTA).
  • Поддерживаемые выходные форматы: FLAC, WAV, WavPack, AAC, OGG, MP3.
  • Анализ Replay Gain (в режимах album-gain и track-gain).
  • Многопоточный процесс конвертации.
  • Автоматическое определение текстовой кодировки для CUE-файлов.
  • Генерация потрековых CUE-файлов в выходной директории.

Основные изменения:

  • Добавлена возможность изменять битрейт и частоту дескритезации для выходных аудиофайлов.
  • Добавлены новые теги: “Album performer”, “Disk number”, “Disk count”.
  • Добавлен расширеный диалог для редактирования всех тегов.
  • Исправлен парсер CUE.
  • Улучшен внешний вид и UX программы.
  • Обновлены локали.

>>> Сайт программы

>>> Репозиторий исходного кода (GitHub)

>>> Скачать бинарные пакеты (для Linux и macOS)

>>> Подробности

★★★★★

Проверено: Shaman007 ()

юзабилити, трэков, сэмплрейт, bit depth

Лет ми спик фром май харт

индивидаульных
соответсвующих
резултириующих

Когда я такое вижу, сразу ясно, кто «корректор».

Повтор анализа усиления

Что имеется в виду? Regain?

denton ★★★★★ ()
Ответ на: комментарий от Shulman

. Что то я не пойму, что именно она делает... наверное для любителей облаков эта программа не подходит

Написано же - из одного флака делает несколько
Обычно это делается из консоли
А тут прикрутили гуй

Сразу вопрос авторам программы - можно в программу добавить конвертацию в mp3 ?

kto_tama ★★★★★ ()
Последнее исправление: kto_tama (всего исправлений: 1)
Ответ на: комментарий от denton

Пофиксил

Что имеется в виду? Regain?

Тут надо призвать AP'а, он лучше разбирается в терминологии аудио софта.

сразу ясно, кто «корректор».

А у тебя ★★★★★, но ты так и не научился писать об ошибках/опечатках в спецтопик?
>>> Ошибки и опечатки в новостях (4)

atsym ★★★★★ ()
Ответ на: комментарий от atsym

А у тебя ★★★★★, но ты так и не научился писать об ошибках/опечатках в спецтопик?

У меня ★★★★★ не потому, что я постоянно тут тусуюсь, а потому, что зарегистрирован давно. Думаешь, если тему создали год назад, я, как гуглобот, обязательно её прочитаю?

denton ★★★★★ ()
Ответ на: комментарий от Shulman

Типичный юзкейс: стягиваешь альбом с какого-нибудь трекера, а он в виде одного FLAC-файла и CUE к нему. С помощью Flacon разрезаешь его на отдельные треки, правишь теги и спокойно слушаешь во всех плеерах.

commagray ★★★ ()
Ответ на: комментарий от AVL2

а выступаешь, да еще и как бабка у подъезда

Это по поводу чего? Корректорской работы Шамана? Ну так сто раз уже было. Реально угадываю корректора по материалу. И не только благодаря опечаткам, но и стилю.

denton ★★★★★ ()

Вот скрипт, которым я пользуюсь:

#!/bin/sh
FLAC="$1"
CUE="$2"
cuebreakpoints "$CUE" | shnsplit -o flac "$FLAC"
cuetag "$CUE" split-track*.flac

iconv -f CP1251 -t UTF-8 "$CUE" > tmp
mv -f tmp "$CUE"
Зачем нужна GUI программа, я не пойму.

Rinaldus ★★★★★ ()
Ответ на: комментарий от commagray

В нормальных плеерах можно слушать и без разрезания.

Но да, когда нужно утолкать музыку в какой-нибудь железячный автомобильный плеер, где количество форматов ограничено изначально — да, может пригодиться.

hobbit ★★★★★ ()
Ответ на: комментарий от Rinaldus

Вот скрипт, которым я пользуюсь

Напиши тогда, из какого пакета берутся команды cuebreakpoints и cuetag. А то что-то мне подсказывает, что в дефолтной установке типового линукса их скорее всего нет.

hobbit ★★★★★ ()
Ответ на: комментарий от Rinaldus

Очень много багов и ограничений. Мне пришлось писать скрипт на 200000 строк (четверть из них копипаста). Не связывайтесь с башем. Лучше возьмите какой-нибудь питон с мутагеном. Хотя в принципе я доволен результатом, оно делает всё за меня и спрашивает там где не справляется.

anonymous ()
Ответ на: комментарий от anonymous

Для моих личных нужд хватает и такого короткого скрипта. Я вообще flac редко режу, предпочитаю плееры, понимающие CUE и умеющие воспроизвести любую композицию из списка. Такие есть и в линуксе, и на Android.

Rinaldus ★★★★★ ()
Ответ на: комментарий от anonymous

Смех смехом, но у меня были CUE, которые нормально разрезались только им - видимо, какие-то нестандартные элементы в таких файлах. И под wine foobar2000 почему-то нормально не работал, уже не помню, почему.

denton ★★★★★ ()
Ответ на: комментарий от anonymous

Баш хорош, но не для больших программ - не понятно, как их отлаживать. К тому же, из-за вызова внешних утилит у баша сильная привязка к I/O. В частности, многократный вызов sed с целью замены по словарю будет намного менее эффективен, чем замена в Питоне.

denton ★★★★★ ()
Ответ на: комментарий от Rinaldus

Не делай таг! В плеере должна быть только одна кнопка плей, она же и стоп.

Альбом это предмет авторского права. Его создали единым произведением, в такой последовательности и ровно таким ты и должен его воспринимать. А то докатишься и будешь как сатанисты, задом наперед слушать...

AVL2 ★★★★★ ()
Последнее исправление: AVL2 (всего исправлений: 1)
Ответ на: комментарий от denton

Если в фубаре работало, там могло быть требование .wav файла в .cue, а лежал сжатый какой-нибудь. Наиболее частый косяк, фубар забивает.

Ну ещё отсутствующие/лишние/не там/не правильные переносы строк крашили тот же cueprint (и его форки). Тоже пришлось переписать, правда не так интересно — без бизона, зато не сегфолтится. Жаль консольный софт никому не нужен, никакой мотивации доделывать то что и так работает. Так и лежит лет 5.

anonymous ()
Ответ на: комментарий от anonymous

Жаль консольный софт никому не нужен

К сожалению, то же самое касается и софта с GUI. Больше всего программа оказывается нужна тому, кто её и написал (увы, Капитан Очевидность доносит эту мысль тогда, когда ты всё ещё пилишь свой проект, но сборку почти никто не скачивает). Вывод - пилить надо всегда в первую очередь для себя, любимого. Ну и, при желании, выкладывать сборки.

Так и лежит лет 5.

Ссылкой на исходник поделишься?

denton ★★★★★ ()
Ответ на: комментарий от hobbit

Но да, когда нужно утолкать музыку в какой-нибудь железячный автомобильный плеер, где количество форматов ограничено изначально — да, может пригодиться.

В таком случае очень удобен конвертер из DeadBeef, он сразу и режет, и жмет в lossy формат, и теги делает, и структуру папок делает. И все из коробки прямо в плеере.

curufinwe ★★★★★ ()

"Мне было тринадцать, я слушал все подряд. "(С)

Для миллениалов с «синдромом Питера Пена»(TM) и «мозаичным мышлением»(R), которые до сих пор не выросли из 13-ти летнего возраста, это поделие подойдёт.

Для серьезных меломанов, которые привыкли слушать музыку альбомами - «НЕНУЖНО».

Прослушивание наедине с самим собой цифрового источника - это пребывание в одиночестве. Прослушивание наедине с самим собой потрескивающей пластинки - это наслаждение уединением. Понимаешь разницу? Не понимаешь? Да и чёрт с тобой.

(С) таки https://ru.wikipedia.org/wiki/Роллинз,_Генри

Bioreactor ★★★★★ ()
Ответ на: комментарий от Rinaldus

Тоже когда-то делал так, а потом узнал, что shnsplit сам умеет cue читать.

Ты в курсе, что можно вот так?

shnsplit -f "$CUE" -o flac -t "%n - %t" "$FLAC"
Тогда имена файлов строятся из cue по шаблону "%n - %t".

anonymous ()
Ответ на: комментарий от anonymous

Мне пришлось писать скрипт на 200000 строк (четверть из них копипаста).

А можно посмотреть на такое чудо? Выложи куда-нибудь на пастебин, пожалуйста.

anonymous ()
Ответ на: комментарий от denton

Подозреваю, что эти нестандартные элементы сами фубаровцы и придумали в cue добавлять. Вот и получается теперь, что никто, кроме фубара, этих элементов не понимает. (На самом деле, достаточно просто подредактировать такой cue руками, чтобы привести его к стандартному виду.)

anonymous ()

Это мышевозная и неудобная замена этому?

#!/bin/bash

if [ $(ls -1 *.cue | wc -l) -ne 1 ] ; then
        echo "No proper CUE file found, exiting."
        exit
else
        echo "CUE file found: \"$(ls -1 *.cue)\""
        cp "$(ls -1 *.cue)" /var/tmp/flac_to_oggs_$$.tmp
        chmod 644 /var/tmp/flac_to_oggs_$$.tmp
        echo "" >> /var/tmp/flac_to_oggs_$$.tmp
        CUE=/var/tmp/flac_to_oggs_$$.tmp
        enconv "$CUE"
        CUE_DATE=$(cat "$CUE" | grep DATE | head -n 1 | rev | cut -d \  -f 1 | rev)
        CUE_GENRE=$(cat "$CUE" | grep GENRE | head -n 1 | cut -d \  -f 3-)
        CUE_ARTIST=$(cat "$CUE" | grep PERFORMER | head -n 1 | cut -d \  -f 2- | sed -e "s/\"//g")
        TRACKS=$(cat "$CUE" | grep -v -e REM | grep -e TRACK -e AUDIO | wc -l)
        if [ $(cat "$CUE" | grep BINARY | wc -l) -ne 0 ] ; then
                echo "WARNING: Found track with binary data. It will be omitted."
        fi
        SKIP=0
        cat "$CUE" | while read z ; do
                if [ $(echo "$z" | grep -v -e TITLE -e PERFORMER | grep -e FILE | grep -e BINARY | wc -l) -ne 0 ] ; then
                        SKIP=1
                fi
                if [ $(echo "$z" | grep -v -e TITLE -e PERFORMER | grep -e FILE | grep -e WAVE | wc -l) -ne 0 ] ; then
                        SKIP=0
                fi
                if [ $SKIP -eq 0 ] ; then
                        if [ "$(echo "$z" | cut -c 1)" != ";" ] ; then
                                if [ $(echo "$z" | grep REM | wc -l) -eq 0 ] ; then
                                        echo "$z" >> /var/tmp/flac_to_oggs_$$.cue
                                fi
                        fi
                fi
        done

        CUE="/var/tmp/flac_to_oggs_$$.cue"
fi

if [ $(ls -1 *.flac *.ape *.wv 2>/dev/null | wc -l) -ne 1 ] ; then
        echo "No proper audio file found, exiting."
        exit
elif [ $(ls -1 *.flac 2>/dev/null | wc -l) -ne 0 ] ; then
        AUDIO=$(ls -1 *.flac)
        echo "FLAC file found: \"$AUDIO\""
elif [ $(ls -1 *.ape 2>/dev/null | wc -l) -ne 0 ] ; then
        AUDIO=$(ls -1 *.ape)
        echo "APE file found: \"$AUDIO\""
elif [ $(ls -1 *.wv 2>/dev/null | wc -l) -ne 0 ] ; then
        AUDIO=$(ls -1 *.wv)
        echo "WAVPACK file found: \"$AUDIO\""
fi
echo
echo "Total tracks: $TRACKS"
echo

# splitting flac to wave files
echo -n "1/6: Splitting... "
cuebreakpoints "$CUE" | sed s/$/0/ | shnsplit -o wav "$AUDIO" >/dev/null 2>&1
if [ $(ls -1 split*wav 2>/dev/null | wc -l) -eq 0 ] ; then
        echo "CUE error, exiting."
        exit
fi
echo "Done"

echo -n "2/6: Normalizing... "
normalize -b *.wav >/dev/null 2>&1
echo "Done"

echo -n "3/6: Encoding... "
trigger=0
for a in split*.wav ; do
        if [ $trigger -eq 0 ] ; then
                oggenc -q 4 "$a" >/dev/null 2>&1 &
                trigger=1
        else
                oggenc -q 4 "$a" >/dev/null 2>&1
                trigger=0
        fi
        echo -n "."
done

for z in {1..20} ; do
        if [ $(ps -ejH | grep oggenc | wc -l) -ne 0 ] ; then
                echo -n "_"
                sleep 2
        fi
done

echo "Done"

# writing tags into files
echo -n "4/6: Writing tags... "
cuetag "$CUE" *.ogg
for a in *.ogg ; do
        vorbiscomment -a "$a" -t "DATE=$CUE_DATE" -t "GENRE=$CUE_GENRE" -t "ARTIST=$CUE_ARTIST"
done
echo "Done"

# renaming files
echo -n "5/6: Giving names... "
let a=1
for b in split*.ogg; do
        mv "$b" "$(printf '%.2d-%s\n' "$(cueprint -t %n -n $a $CUE )" "$(cueprint -t %t -n $a $CUE)").ogg"
        let a=$a+1
done
echo "Done"

OGGTRACKS=$(ls -1 *.ogg | wc -l)

echo -n "6/6: Cleaning up... "
rm "$CUE" split*wav /var/tmp/flac_to_oggs_$$.tmp
echo "Done"

echo -n "We have $OGGTRACKS OGG Tracks, "
if [ $TRACKS -eq $OGGTRACKS ] ; then
        echo "seems good."
else
        echo "SOMETHING WRONG !!!"
fi

Stage1 ★★ ()

Для серьезных меломанов, которые привыкли слушать музыку альбомами - «НЕНУЖНО».

Так люди и слушают альбомами, избавляясь затем от ненужного. Конечно, некоторые авторы оскорбляются, когда из их целого альбома годен к прослушиванию только один трек.

dadd ★★ ()