バッチ変換と録音


バッチモード

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