배치 변환 및 녹음


배치 모드

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 SECSEC초 후 자동 중지 (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