批量轉換與錄音


批量模式

DpdoEngine 支持通過腳本批量處理多個文件。雖然沒有專門的 --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 充分發揮多核 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 Mode)

--pipe 參數啓用管道輸入/輸出模式,允許 DpdoEngine 與其他命令行工具配合使用,構建靈活的處理流水線。

基本用法

# 從 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
	

錄音模式(Record Mode)

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自動停止時長(0=手動 q 停止)--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