DpdoPlayerEngine — DSD 오디오 플레이어

개요

DpdoPlayerEngine는 DSD 재생에 최적화된 CLI 오디오 플레이어입니다. 네이티브 DSD 출력과 DoP (DSD over PCM) 두 가지 전송 모드를 지원하며 다양한 USB DAC 및 DSD 디코더와 호환됩니다.

사양 한눈에

사양값
오디오 형식DSD(DSF / DFF / DST / WSD) · SACD ISO · DTS / DTS-WAV · PCM(WAV / AIFF / FLAC) · ALAC / TTA / WavPack / APE · CUE
전송 모드네이티브 DSD 출력 / DoP (DSD over PCM) / DSD→PCM 디코드 재생
출력 모드standard / differential / BTL
채널 레이아웃스테레오 / 멀티채널 패스스루 / 사용자 정의 매핑
스트림 모드저지연 (-stream)
플랫폼Windows / Linux / macOS
현재 버전6.75.0

기본 사용법

DpdoPlayerEngine <audio_file> [options]
	

지원 형식: - DSD: DSF(.dsf) / DFF(.dff) / DST 압축 DSF/DFF(재생 시 자동 압축 해제) / WSD(.wsd, Korg, 6.70.0부터) / SACD ISO(.iso, DST 해제 포함) - DTS: .dts / DTS-WAV(코어 2.0–5.1) - PCM: WAV / AIFF / AIFC / FLAC - 무손실 압축: ALAC(.m4a / .mp4) / TTA(.tta) / WavPack(.wv) / APE(.ape) - 재생 목록: CUE(무간격) - 아직 미지원: MP3 / AAC / OGG

가장 간단한 재생:

# 단일 DSF 파일 재생
	DpdoPlayerEngine track.dsf
	
	# DFF 파일 재생
	DpdoPlayerEngine track.dff
	

장치 설정

-dev로 오디오 출력 장치를 선택합니다:

# 사용 가능한 장치 나열
	DpdoPlayerEngine track.dsf -dev list
	
	# 장치 ID로 선택
	DpdoPlayerEngine track.dsf -dev 1
	
	# 장치 이름으로 선택
	DpdoPlayerEngine track.dsf -dev "USB Audio DAC"
	

장치 목록 출력 예시:

Available audio devices:
	  0: Default Output
	  1: USB Audio DAC (ALSA)
	  2: HDMI Audio Output
	

채널 레이아웃

-layout으로 출력 채널 매핑을 구성합니다:

# 스테레오 강제
	DpdoPlayerEngine track.dsf -layout stereo
	
	# 멀티채널 패스스루 강제
	DpdoPlayerEngine track.dsf -layout multichannel
	
	# 사용자 정의 매핑 (왼쪽 → 출력 1, 오른쪽 → 출력 2)
	DpdoPlayerEngine track.dsf -layout "1,2"
	

레이아웃 옵션

값설명
stereo표준 스테레오
multichannel멀티채널 패스스루
reverse좌우 반전
mono모노 믹스다운
custom사용자 정의 매핑 (쉼표 구분 채널 인덱스)

재생 모드

-mode로 출력 모드를 설정합니다:

# 표준 모드
	DpdoPlayerEngine track.dsf -mode standard
	
	# differential 출력
	DpdoPlayerEngine track.dsf -mode differential
	
	# BTL 브리지 모드
	DpdoPlayerEngine track.dsf -mode btl
	

모드 설명

모드설명용도
standard표준 단일 종단 출력일반 호환 모드
differential채널당 반전 페어 차동 출력밸런스 DAC
btlBTL 브리지드 부하, 반전 구동고출력

DoP 모드 (DSD over PCM)

-dop으로 DSD-over-PCM 동작을 제어합니다:

# DoP 또는 네이티브 DSD 자동 선택
	DpdoPlayerEngine track.dsf -dop auto
	
	# DoP 강제
	DpdoPlayerEngine track.dsf -dop force
	
	# 네이티브 DSD 강제
	DpdoPlayerEngine track.dsf -dop native
	

DoP가 실제로 통하는지는 장치 측 증거로 판정합니다: 176400을 독점으로 열 수 있다고 DoP를 해석할 수 있는 것은 아닙니다 — 온보드 코덱에는 DSD 경로가 하드웨어로 없어서 DoP를 넣어도 마커가 일반 PCM으로 재생될 뿐입니다(들리는 것은 히스). 불가로 판정된 엔드포인트에서는 -dop force가 거부되고 자동으로 DSD→PCM 재생으로 전환됩니다. GUI(DpdoPlayer) 장치 목록에 판정이 표시되며(⟨DoP 2x⟩ / ⟨DoP 1x⟩ / ⟨DoP 미확인⟩ / ⟨PCM 전용⟩), 판정이 불확실한 장치는 «DSD 디코더로 표시»로 등록할 수 있습니다.

DoP 옵션

값설명
auto장치 능력 자동 감지, 최적 전송 선택
forceDoP 캡슐화 강제 (DSD를 24-bit PCM 프레임에 내장)
native네이티브 DSD 전송 강제 (장치 지원 필요)

팁: 대부분의 최신 USB DAC은 네이티브 DSD를 지원합니다. native를 먼저 시도하고, 노이즈나 무음이 들리면 force로 전환하세요.


볼륨 제어

-vol로 재생 볼륨을 설정합니다 (퍼센트):

# 볼륨 80% 설정
	DpdoPlayerEngine track.dsf -vol 80
	
	# 최대 볼륨
	DpdoPlayerEngine track.dsf -vol 100
	

볼륨 범위: 0–100, 기본값은 장치 초기 설정에 따라 다릅니다.

볼륨은 장치 측(Linux = ALSA 하드웨어 믹서, Windows = 엔드포인트 볼륨)에서 직접 변경합니다. 호스트는 디지털 감쇠를 하지 않습니다 — 1-bit DSD에 소프트웨어 곱셈을 적용하면 손실됩니다. -vol을 지정하지 않으면 장치 볼륨은 그대로 유지됩니다. -vol 100은 장치 볼륨을 최대로 설정합니다.


DSD → PCM 디코드 재생

-pcm 모드를 사용하면 DSD 네이티브 미지원 DAC에서도 DSD 파일을 재생할 수 있습니다. 재생 중 Pdm2Pcm이 실시간으로 PCM에 디코드합니다.

# 자동 레이트 디코드 재생 (DSD/64 또는 DSD/32)
	DpdoPlayerEngine track.dsf -pcm
	
	# 디코드 샘플레이트 명시
	DpdoPlayerEngine track.dsf -pcm 352800
	
	# 16-bit 출력
	DpdoPlayerEngine track.dsf -pcm -pcm-bits 16
	
  • -pcm [rate] — DSD→PCM 디코드 재생 활성화, rate 0(생략) = 자동 (DSD/64 또는 DSD/32)
  • -pcm-bits <16|24|32> — 출력 비트뎁스, 기본 24-bit, 내장 노이즈 셰이핑이 양자화 노이즈를 고역으로 밀어내 청감이 크게 개선

팁: 24-bit + 노이즈 셰이핑은 음질과 호환성의 최적점입니다. 16-bit는 구형 기기용, 32-bit는 후단 처리 체인용입니다.


스트림 모드

-stream으로 저지연 스트리밍을 활성화합니다:

# 스트림 모드 재생
	DpdoPlayerEngine track.dsf -stream
	

스트림 모드 특징

  • 낮은 지연 — 오디오 버퍼 감소
  • 실시간 재생 — 파이프 입력 라이브 모니터링에 적합
  • 자동 적응 — 시스템 성능에 따라 버퍼 동적 조정

DpdoEngine 파이프 실시간 변환 재생

# 실시간 PCM → DSD 변환 후 DpdoPlayerEngine로 재생
	DpdoEngine -i input.flac output.dsf --oversampling 64 --pipe | DpdoPlayerEngine - -vol 80
	
	# 실제 시나리오: 녹음 실시간 모니터링
	DpdoEngine --record recording.dsf --pipe | DpdoPlayerEngine - -stream
	

여기서 -는 stdin에서 오디오 데이터를 읽는다는 뜻입니다.


전체 재생 예시

# 고사양 재생 설정
	DpdoPlayerEngine sacd_track.dsf \
	  -dev "USB DAC" \
	  -layout stereo \
	  -mode differential \
	  -dop native \
	  -vol 85
	
	# 멀티채널 네이티브 DSD 재생
	DpdoPlayerEngine multichannel.dsf \
	  -dev 1 \
	  -layout multichannel \
	  -mode standard \
	  -dop native
	
	# 저지연 스트림 모드 재생
	DpdoPlayerEngine live_recording.dsf \
	  -stream \
	  -dev 0 \
	  -vol 70
	

문제 해결

소리가 나오지 않음

  1. DAC 연결 및 시스템 인식 확인
  2. -dev list로 올바른 장치 선택 확인
  3. DoP 모드 전환 시도: -dop auto → -dop force(DSD 경로가 없는 엔드포인트에서는 force가 자동으로 DSD→PCM으로 전환됩니다)
  4. 볼륨 확인: -vol 100

재생 중 노이즈/팝

  1. 네이티브 DSD에서 노이즈 발생 시 DoP 시도: -dop force; 단, 온보드처럼 DSD 경로가 없는 엔드포인트에서는 DoP를 쓰지 마세요(히스만 납니다) — 플레이어가 자동으로 막고 DSD→PCM으로 전환합니다
  2. USB 케이블 품질 및 연결 안정성 확인
  3. 낮은 DSD 사양 시도 (예: DSD256 대신 DSD128 소스)

장치가 나열되지 않음

  1. OS에 DAC 드라이버 설치 확인
  2. Linux에서 ALSA 설정 확인
  3. USB 연결 확인

GUI 버전

DpdoPlayer GUI

위: 플레이어 GUI(DpdoPlayer). 패커와 오디오 도구의 GUI 는 각 제품 페이지에 있습니다.

DpdoPlayer를 선택하는 이유

DSD 재생 자체는 다른 프로그램도 합니다. DpdoPlayer는 다음 부분을 구체적으로 구현했습니다(모두 검증 가능한 동작입니다).

  • DSD 네이티브 출력 + 확실한 대비책: native / DoP 우선. DSD를 지원하지 않는 DAC도 PDM2PCM 실시간 디코딩으로 재생됩니다. 믹싱이 필요한 구성은 자동으로 디코딩 재생으로 전환하고 로그에 명시합니다.
  • 여러 DAC를 전제로 한 설계: 채널당 DAC 1대(차동/밸런스, BTL) 또는 다채널 DAC 1대. 장치↔채널 매핑을 설정할 수 있어 배선 그대로 구성합니다.
  • 설정 가능한 채널 구성, 절대 조용히 바꾸지 않음: 믹스 행렬 + 믹스 게인(프리셋 direct / bs775 / all-channel-stereo 또는 사용자 *.json, GUI와 CLI가 같은 구성). 잘못된 구성(알 수 없는 채널 이름, 계수 범위 초과, 길이 불일치)은 재생을 거부합니다.
  • 듣기 전에 클리핑을 알 수 있음: 실측 스캔이 현재 구성으로 소재 전체를 통과시켜 채널별 피크, 클리핑 여부, 0 dBFS에 맞추는 믹스 게인을 보고합니다.
  • 비트 퍼펙트 라우팅: 채널 분리는 샘플을 하나도 바꾸지 않으며 기본 리미터/AGC/라우드니스 정규화가 없습니다. 레벨이 바뀌는 것은 실제로 믹싱할 때뿐이고 계수는 정적이며 재현 가능합니다.
  • 지원 형식: DSD(DSF / DFF / WSD / DSD-raw), SACD ISO(DST 해제 포함), DTS / DTS-WAV, PCM(WAV / AIFF / FLAC), CUE(무간격).
  • 볼륨은 장치 엔드포인트에서 조절하고 샘플은 건드리지 않습니다(1-bit DSD에 소프트웨어 곱셈은 손실). Windows는 ASIO / WASAPI 독점, Linux는 ALSA, 엔진은 양쪽 공통입니다.