Это старая версия документа.


Универсальные

Способ 1

Понадобится установить три пакета. Скачиваем первый пакет:

wget http://members.iinet.net.au/~aidanjm/mac-3.99-u4_b3-1_i386.deb

И устанавливаем его командой:

sudo dpkg -i mac-3.99-u4_b3-1_i386.deb

Потом еще два пакета:

sudo apt-get install flac
sudo apt-get install shntool

Допустим, нужно сделать преобразование APE ⇒ FLAC В терминале заходим в директорию, где лежат файлы APE:

cd ~/Music/Shopen

После чего набираем команду:

shnconv -o flac *.ape

Результатом выполнения команды будет переконвертация всех файлов APE в формат FLAC

А эта команда преобразовывает APE в WAV:

shnconv -o wav *.ape

И так далее.

Способ 2 (подходит для amd64)

  1. Ставим пакеты

    sudo aptitude install cuetools shntool flac wavpack

    Отсюда (т.к. репозиторий, который был указан в статье на Opennet, не хотел добавляться) ставим libmac2 и monkeys-audio

  2. Выделяем треки из sample.flac на основании индекса sample.cue, результат кодируем кодеком без потерь flac:

    cuebreakpoints sample.cue | shnsplit -a "sample" -o flac sample.flac

    При желании вместо «-o flac» можно указать «-o wav», «-o mp3» или «-o ogg». Опция «-a sample» задает имя префикса для сохраняемой группы файлов.

  3. Заполняем теги:

    cuetag sample.cue sample*.flac

    Если файл *.cue в неправильной кодировке, то сохраните его в правильной (geditom, например). Правильная — UTF-8.

Проверено на ubuntu 9.04 amd64

Кодирование в mp3

Вариант «-o mp3» не сработает, выдав ошибку:

shnsplit: error: invalid file format: [mp3]
shnsplit: 
shnsplit: type 'shnsplit -h' for help

Смотрим man shnsplit, касательно ключа -o:

-o
      -o ’cust ext=mp3 lame --quiet - %f’ (create mp3 files using lame)

Он говорит, что конвертирование в mp3 делается через lame, т.е. нам нежен еще пакет lame:

sudo aptitude install lame

И, следовательно, команда будет выглядеть примерно так:

cuebreakpoints sample.cue | shnsplit -a "sample" -o 'cust ext=mp3 lame --quiet - %f' sample.flac

По другим форматам вывода смотрите man, например для вывода в wav достаточно -o wav:

cuebreakpoints sample.cue | shnsplit -a "sample" -o wav sample.flac

Flac в MP3

Пофайловая конвертация без переноса ID тэгов

Зависимости

Для конвертации понадобятся программы flac и lame

sudo apt-get instal flac lame

Скрипт

Скрипт для конвертации (сохранен в ~/bin/)

flac-mp3.sh
#!/bin/sh
# Для всех .flac-файлов в данном каталоге:
for flac in *.flac;
do
# Новое имя файла -замена расширения с '.flac' на '.mp3'
newname=`echo $flac | sed s/\.flac$/\.mp3/`
# Собственно конвертирование
flac -d -c --totally-silent "$flac" | lame -S --cbr -b 320 - "$newname"
# Раскомментировать, если нужно удалять оригинальные .flac-файлы
rm "$flac"
 
done

320-битрейт

Пофайловая конвертация с переносом ID тэгов

flac-mp3tags.sh
#!/bin/bash
OUT_DIR="."
[ ! -d ${OUT_DIR} ] && mkdir -p ${OUT_DIR}
# modify the lame options to your
# preference
lame_opts=" --vbr-new -V 2 -B 256 "
for FLAC in *.flac;
do
MP3=`basename "${FLAC%.flac}.mp3"`
[ -r "$FLAC" ] || { echo can not read file \"$FLAC\" >&1 ; exit 1 ; } ;
metaflac --export-tags-to=- "$FLAC" | sed 's/=\(.*\)/="\1"/' > tmp.tmp
. ./tmp.tmp
rm tmp.tmp
[ -z $TITLE ] && TITLE="$Title"
[ -z $TRACKNUMBER ] && TRACKNUMBER="$Tracknumber"
[ -z $GENRE ] && GENRE="$Genre"
[ -z $DATE ] && DATE="$Date"
[ -z $COMMENT ] && COMMENT="$Comment"
[ -z $ARTIST ] && ARTIST="$Artist"
[ -z $ALBUM ] && ALBUM="$Album"
 
echo "Converting ${FLAC} to MP3 format"
flac -c -d "$FLAC" | lame ${lame_opts} \
--tt "$TITLE" \
--tn "$TRACKNUMBER" \
--tg "$GENRE" \
--ty "$DATE" \
--tc "$COMMENT" \
--ta "$ARTIST" \
--tl "$ALBUM" \
--add-id3v2 \
- ${OUT_DIR}/"$MP3"
rm "$FLAC"
done
Скрипт выдаёт ошибки в двух строках- чтение mp3 тэгов- видимо не экранированы пробелы.

Алгорит действий

Переходим в папку с flac файлами запускаем скрипт в виде ~/bin/flac-mp3.sh

Flac-образ в mp3 c разбивкой на трэки

Зависимости

sudo apt-get install shntool cuetools lame enca

Скрипт

flac-image-mp3.sh
#!/bin/sh
 
FROMCP=`enca -e *.cue`
iconv -f $FROMCP -t UTF-8 *.cue > /tmp/list.cue
 
DATE=`grep "REM DATE" /tmp/list.cue | sed -e 's/REM DATE \(.*\)/\1/g'`
GENRE=`grep "REM GENRE" /tmp/list.cue | sed -e 's/REM GENRE \(.*\)/\1/g'`
COMMENT=`grep "REM COMMENT" /tmp/list.cue | sed -e 's/REM COMMENT \(.*\)/\1/g'`
NUMBER=`cueprint -d "%N" /tmp/list.cue`
 
shntool split -f /tmp/list.cue *.flac -t %n
 
for((I=1;I<=NUMBER;I++));
do
  cueprint -n $I -t "ARTIST=\"%p\"\nALBUM=\"%T\"\nTRACKNUMBER=\"%n\"\nTITLE=\"%t\"\n" /tmp/list.cue > /tmp/tags
  . /tmp/tags
  J=`printf "%02d" $I`
  lame -b 192 --cbr \
    --ty "$DATE" \
    --tg "$GENRE" \
    --tc "$COMMENT" \
    --ta "$ARTIST" \
    --tl "$ALBUM" \
    --tn "$TRACKNUMBER" \
    --tt "$TITLE" \
    --add-id3v2 \
    --id3v2-only \
    $J.wav $J.mp3
  rm $J.wav
done
 
rm /tmp/list.cue /tmp/tags

Другие программы

  • Flacon audio converter — программа на Qt 4.x
  • gCue2tracks — ещё одна графическая программа, написана на python
  • Cueek — скрипт для конвертирования образов музыкальных альбомов в другой формат потреково, с переносом тэгов.
  • cue2tracks — скрипт для Nautilus для конвертирования и разбития на дорожки по cue
  • soundKonverter - для KDE

и множество подобных.

Ссылки