バッチ変換と録音
バッチモード
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