Пакетная обработка и запись
Пакетный режим
DpdoEngine поддерживает пакетную обработку через shell-скрипты. Отдельного флага --batch нет — достаточно цикла shell.
Пакетная конвертация в shell
Bash — пакетный FLAC → DSF:
#!/bin/bash
for f in *.flac; do
DpdoEngine -i "$f" "${f%.flac}.dsf" --oversampling 128 --order 7
done
Рекурсивная обработка подкаталогов:
#!/bin/bash
find /music/pcm -name "*.flac" | while read f; do
outdir="/music/dsd${f#/music/pcm}"
mkdir -p "$(dirname "$outdir")"
DpdoEngine -i "$f" "${outdir%.flac}.dsf" --oversampling 128 --order 7
done
Параллельная конвертация
Использование xargs или GNU parallel:
# xargs — 4 параллельных задания
find . -name "*.flac" -print0 | xargs -0 -n1 -P4 -I{} sh -c \
'f="{}"; DpdoEngine -i "$f" "${f%.flac}.dsf" --oversampling 128 --order 7 --opencl'
# GNU parallel (рекомендуется)
find . -name "*.flac" | parallel DpdoEngine -i {} {.}.dsf --oversampling 128 --order 7
Совет: с
--openclускорение GPU особенно эффективно в многозадачных сценариях.
Режим pipe
--pipe включает ввод/вывод через stdin/stdout для построения гибких конвейеров.
Базовое использование
# Чтение PCM из stdin, вывод в stdout
cat input.wav | DpdoEngine -i pipe output.dsf --oversampling 64 --pipe
# Совместно с ffmpeg
ffmpeg -i source.flac -f wav - | DpdoEngine -i pipe output.dsf --oversampling 128 --pipe
Примеры конвейеров
Многоступенчатая цепочка:
# PCM → нормализация громкости → шейпинг шума → DSD
ffmpeg -i track.flac -f wav - | \
DpdoEngine -i pipe track.dsf --oversampling 128 --order 7 --lufs -16 --pipe
Мониторинг в реальном времени через DpdoPlayer:
DpdoEngine -i input.flac output.dsf --oversampling 64 --pipe | DpdoPlayer - --vol 80
Режим записи
Прямая запись с совместимых аудиоинтерфейсов. Цель — запись DSD без потерь.
Базовая запись
# Начать запись в DSF
DpdoEngine --record recording.dsf
Параметры записи
| Параметр | Описание | Пример |
|---|---|---|
--record | Включить запись (моно, q — стоп) | --record |
--record-device NAME | Устройство записи | --record-device "USB Mic" |
--record-samplerate HZ | Частота захвата (0=авто) | --record-samplerate 44100 |
--record-channels N | Каналы (0=авто) | --record-channels 2 |
--record-duration SEC | Автостоп через SEC секунд | --record-duration 300 |
--record-buffer N | Буфер (64–65536, по умолч. 512) | --record-buffer 512 |
--record-headroom DB | Запас по пикам дБ (по умолч. 3.0) | --record-headroom 3 |
--list-devices | Список устройств | --list-devices |
Формат вывода определяется расширением файла (
.dsf/.dff).
Нативная запись DSD
Для интерфейсов с нативным выводом DSD — прямая запись потока (DoP или ALSA raw DSD):
# Режим DoP (PortAudio, широкая совместимость)
DpdoEngine --record-dsd --dsd-mode dop live.dsf
# Режим Native (ALSA raw DSD_U32_BE, требуется поддержка устройства)
DpdoEngine --record-dsd --dsd-mode native live.dsf
Записанный поток DSD не проходит через промежуточный PCM — битовый поток PDM идёт напрямую с АЦП в DSF-файл, сохраняя максимальную чистоту записи.
Запись + мониторинг
Запись с одновременным мониторингом через DpdoPlayer с нулевой задержкой:
DpdoEngine --record recording.dsf --pipe | DpdoPlayer - --vol 70
Статистика и логирование
Статистика
DpdoEngine -i input.wav output.dsf --oversampling 128 --stats
Отчёт включает: - входные/выходные частоты - время и загрузку - пиковые и RMS уровни - уровень шума - динамический диапазон
Логирование
DpdoEngine -i input.wav output.dsf --oversampling 128 2>&1 | tee conversion.log
Справочник скриптов автоматизации
Конвертация целого альбома (с метаданными)
#!/bin/bash
ALBUM="Symphony No. 9"
ARTIST="Beethoven"
YEAR=2024
for f in *.flac; do
TITLE="${f%.flac}"
DpdoEngine -i "$f" "${f%.flac}.dsf" \
--oversampling 128 --order 7 \
--artist "$ARTIST" \
--album "$ALBUM" \
--title "$TITLE" \
--year "$YEAR"
done
Мониторинг папки + авто-конвертация
inotifywait -m /watch/folder -e close_write --format '%f' | while read f; do
if [[ "$f" == *.flac || "$f" == *.wav ]]; then
DpdoEngine -i "/watch/folder/$f" "/output/${f%.*}.dsf" --oversampling 64 --order 7
fi
done
Одноэтапное создание альбома с DpdoPackSACD
#!/bin/bash
for f in *.flac; do
DpdoEngine -i "$f" "${f%.flac}.dsf" --oversampling 128 --order 7 \
--artist "Artist" --album "Album" --title "${f%.flac}"
done
DpdoPackSACD --album "Album" --artist "Artist" --cover cover.jpg *.dsf