تحويل الدفعات والتسجيل
وضع الدفعات
يدعم 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 لاستغلال المعالجات متعددة الأنوية بالكامل:
# 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 بحيث يمكن دمج DpdoEngine مع أدوات سطر أوامر أخرى لبناء خطوط معالجة مرنة.
الاستخدام الأساسي
# قراءة PCM من stdin والكتابة إلى 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
# الوضع الأصلي (ALSA raw DSD_U32_BE، يتطلب دعم الجهاز)
DpdoEngine --record-dsd --dsd-mode native live.dsf
لا يمر تيار DSD المسجَّل أبداً بصيغة PCM وسيطة — يذهب تيار PDM من محول ADC مباشرة إلى ملف 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