배치 변환 및 녹음
배치 모드
DpdoEngine은 셸 스크립트로 여러 파일을 배치 처리할 수 있습니다. 전용 --batch 플래그는 없으며 셸 루프로 충분합니다.
셸 배치 변환
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로 멀티코어 CPU를 활용:
# 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는 stdin/stdout 파이핑을 활성화하여 다른 CLI 도구와 결합해 유연한 처리 파이프라인을 구성할 수 있습니다.
기본 사용법
# stdin에서 PCM 읽기, 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 실시간 모니터링:
# 변환하면서 DpdoPlayer로 동시 모니터링
DpdoEngine -i input.flac output.dsf --oversampling 64 --pipe | DpdoPlayer - --vol 80
녹음 모드
DpdoEngine은 호환 오디오 인터페이스에서 직접 녹음할 수 있습니다. 목표는 무손실 다이렉트 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초 후 자동 중지 (0=수동) | --record-duration 300 |
--record-buffer N | 프레임 버퍼 (64–65536, 기본 512) | --record-buffer 512 |
--record-headroom DB | 헤드룸 dB (기본 3.0) | --record-headroom 3 |
--list-devices | 사용 가능한 오디오 장치 나열 | --list-devices |
출력 형식은 출력 파일 확장자로 결정됩니다 (
.dsf/.dff).
네이티브 DSD 녹음
네이티브 DSD 출력을 지원하는 오디오 인터페이스의 경우 DpdoEngine이 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 중간 형식을 거치지 않고 ADC에서 PDM 비트스트림을 직접 받아 DSF 파일로 패킹되어 녹음 체인을 최대한 깨끗하게 유지합니다.
녹음 + 실시간 모니터링
녹음하면서 DpdoPlayer로 제로 레이턴시 모니터링:
DpdoEngine --record recording.dsf --pipe | DpdoPlayer - --vol 70
통계 및 로깅
통계
DpdoEngine -i input.wav output.dsf --oversampling 128 --stats
보고되는 통계: - 입력/출력 샘플레이트 - 처리 시간 및 사용률 - 피크 및 RMS 레벨 - 노이즈 플로어 - 다이내믹 레인지
상세 로깅
기본적으로 DpdoEngine은 진행 상황을 터미널에 출력합니다. 로그 저장:
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로 폴더 감시, 새 파일 자동 변환
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
# 배치 변환 → SACD ISO 제작
for f in *.flac; do
DpdoEngine -i "$f" "${f%.flac}.dsf" --oversampling 128 --order 7 \
--artist "Artist" --album "Album" --title "${f%.flac}"
done
# SACD ISO 제작
DpdoPackSACD --album "Album" --artist "Artist" --cover cover.jpg *.dsf