حل مشکل ضبط صدای کارت TV یا capture

امروز بعد از مدت‌ها خواستم با کمک کارت TV تصویر تلویزیون را از گنو/لینوکس ضبط کنم که دیدم: «ای بابا! صدا هست اما ضبط نمی‌شه!» یعنی تصویر تلویزیون بدون صدا ضبط می‌شد. Audio Out مال کارت TV را به Line In مال کارت صدا وصل کرده بودم و از برنامه XDTV استفاده می‌کردم (بهترین برنامه‌ای که برای ضبط تصاویر از کارت TV یا capture دیدم). مثل همیشه اول باید کمی با سیستم و تنظیمات صدا ور :!: می‌رفتم.

در نهایت، اگر شما هم به مشکل مشابهی برخوردید، برای حل مشکل باید به قسمت تنظیمات صدا بروید.

برای میزکار گنوم

بر روی آیکن بلندگو کلیک کنید (یا دستور gnome-alsamixer را وارد کنید)، گزینه Sound Card Preferences را از منوی Edit انتخاب کنید و کنترلهای Digital و Capture و Input Source را انتخاب کنید، بر روی Close کلیک کنید تا به پنجره اصلی بازگردید. مطمئن شوید که کنترلهای Digital و Capture دارای volume هستند و گزینه Rec یا Record (در صورت وجود) برای آنها انتخاب شده است. در نسخه جاری gnome-alsamixer نمی‌توان مقدار Input Sourceها را تغییر داد بنابراین دستور زیر را وارد کنید:

$ alsamixer -V capture

سپس با مشاهده ظاهر برنامه، کلید جهت راست را نگهدارید تا به کنترل Input Source برسید، مقدار Input Source را می‌توانید توسط کلید جهت بالا یا پایین تغییر دهید. اگر خروجی صدای کارت TV را به ورودی کارت صدا (Line In) متصل کرده‌اید، مقدار Line را برای Input Source تعیین کنید و اگر خروجی صدای کارت TV را به ورودی میکروفون (Microphone) متصل کرده‌اید، مقدار Mic را برای Input Source انتخاب کنید.

برای میزکار Xfce

بر روی آیکن بلندگو کلیک کنید (یا دستور xfce4-mixer را وارد کنید)، بر روی دکمه Select Controls کلیک کنید و سپس کنترلهای Digital و Capture و Input Source را انتخاب کنید، بر روی Close کلیک کنید تا به پنجره اصلی بازگردید. بر روی زبانه Capture کلیک کنید و مطمئن شوید که کنترلهای Digital و Capture دارای volume هستند و وضعیت ضبط (recording) آنها فعال است (باید دایره زیر آنها به رنگ قرمز باشد). سپس بر روی زبانه Options کلیک کنید و اگر خروجی صدای کارت TV را به ورودی کارت صدا (Line In) متصل کرده‌اید، مقدار Line را برای Input Source تعیین کنید و اگر خروجی صدای کارت TV را به ورودی میکروفون (Microphone) متصل کرده‌اید، مقدار Mic را برای Input Source انتخاب کنید.

بطور کلی، بسیار بهتر است که خروجی صوتی کارت TV را به ورودی کارت صدا متصل کنید و از میکروفون برای اینکار استفاده نشود (مگر در حالت اجبار).

نکته: اگر صدای کارت TV را ندارید و خروجی صدای آن را با اتصال به کارت صدا تأمین کرده‌اید (مثل من)، بنابراین مقدار volume کنترل Line In یا Microphone را در بخش تنظیم صدا بررسی کنید.

VMPK، یک پیانوی مجازی

Virtual MIDI Piano Keyboardموسیقی‌زدن با پیانو همیشه یکی از سرگرمی‌های من بوده، هر چند که «پیانو» ندارم و با علم موسیقی هم آشنایی ندارم! اما همیشه آهنگ‌زنی را دوست می‌داری‌ام :grin: «پیانوی مجازی» چیزی است که کلیدهای پیانو و صدای نت‌های آن را بصورت نرم‌افزاری شبیه‌سازی می‌کند. من قبلا از برنامه Virtual MIDI Keyboard (بسته vkeybd) استفاده می‌کردم، اما به تازگی با برنامه VMPK (مخفف Virtual MIDI Piano Keyboard) آشنا شدم، برنامه خوب و خوش‌دست و ساده‌تری است.

قابلیت‌های کلیدی نرم‌افزار:

  • انتخاب نواهای مختلف
  • افکت‌گذاری بر روی نوای صدا
  • اختصاص کلیدهای صفحه‌کلید به نت‌های مختلف
  • تنظیمات برنامه از قبیل افزودن کنترلها
  • امکان انتخاب اتصال (connection)

در دبیان testing بسته vmpk را با دستور apt-get نصب کنید. برای استفاده از این برنامه در گنو/لینوکس باید یک MIDI sequencer در حال اجرا باشد، برای این منظور می‌توانید از Fluidsynth یا ‪TiMidity++‬ استفاده کنید که قبلاً درباره نحوه راه‌اندازی ‪TiMidity++‬ نوشته‌ام. بنابراین اگر از ‪TiMidity++‬ به همراه این برنامه استفاده می‌کنید، برنامه VMPK را پس از نصب، اجرا کنید و گزینه Connections را از منوی Edit انتخاب کنید، سپس Midi Through:0 را بعنوان ورودی (input) و TiMidity:0 را بعنوان خروجی (output) انتخاب کنید. در اینصورت برنامه VMPK برای پخش صداها و نت‌ها از ‪TiMidity++‬ استفاده می‌کند.

این برنامه برای سیستم‌عامل‌های ویندوز و Mac OS X نیز ارائه شده و توسط کتابخانه‌های Qt و RtMIDI توسعه داده می‌شود.

[+] سایت رسمی پروژه بهمراه تصاویر و توضیحات
[+] لینک دانلودها برای نصب مستقیم

حل مشکل صدای MIDI توسط ‪TiMidity++‬

MIDI (مخفف Musical Instrument Digital Interface) یک قرارداد استاندارد صنعتی برای ارتباط و همگام‌سازی انواع تجهیزات الکترونیکی موزیکال است. فایل mid. قالبی (format) است که موسیقی مورد نظر را بر اساس این استاندارد ذخیره می‌کند. رایانه‌های شخصی (PC) معمولاً یک وسیله سخت‌افزاری برای کار با MIDI ندارند، بنابراین آن را بصورت نرم‌افزاری شبیه‌سازی می‌کنند تا بتوان موسیقی فایل‌های mid. را پخش کرد و شنید. نرم‌افزارهای Fluidsynth و ‪TiMidity++‬ هر دو برای این منظور به کار می‌روند با این تفاوت که Fluidsynth بصورت real-time نیز عمل می‌کند. برای استفاده از نواهای مختلف به sound font-ها نیاز است. من در ادامه درباره ‪TiMidity++‬ صحبت می‌کنم.

روش استفاده از ‪TiMidity++‬ ساده است، آن را با دستور زیر نصب کنید:

# apt-get install timidity

با این دستور، بسته timidity و freepats نصب خواهند شد. freepats که بانکی از مجموعه نواهای مختلف سازگار با GUS است.

پس از نصب، باید آن را تنظیم کنید، در سیستم‌عامل گنو/لینوکس دبیان، تنظیم‌کردن آن بسیار ساده است…
فایل ‪/etc/default/timidity‬ را ویرایش کنید و خط زیر را بیابید:

#TIM_ALSASEQ=true

علامت # را از ابتدای آن بردارید و تغییرات را ذخیره کنید، تمام.

در نهایت در اجرای بعدی سیستم (یعنی پس از restart) برنامه ‪TiMidity++‬ در هنگام شروع سیستم بطور خودکار اجرا خواهد شد. اگر فعلاً قصد restart-کردن سیستم را ندارید، می‌توانید با دستور زیر آن را در همان لحظه اجرا کنید:

# /etc/init.d/timidity restart

ممکن است ‪TiMidity++‬ در هنگام شروع سیستم بطور خودکار اجرا نشود و شما هر بار مجبور شوید از دستور قبل برای اجرای آن استفاده کنید، اگر اینطور بود، فقط یکبار دستور زیر را برای حل مشکل صادر کنید:

# update-rc.d timidity defaults

با انجام کارهای قبل، ‪TiMidity++‬ به عنوان یک MIDI sequencer همواره در پشت صحنه حضور خواهد داشت. اکنون با دستور aplaymidi یا با دستور pmidi می‌توانید فایل‌های mid. را پخش کنید و بشنوید (برای کار با برنامه pmidi باید بسته pmidi را نصب کنید) یا می‌توانید از سایر برنامه‌هایی که برای کار با MIDI پیش‌بینی شده‌اند، استفاده کنید (مثلاً برنامه VMPK).

تبدیل encoding زیرنویس فارسی به یونیکد

فایل‌های زیرنویس فارسی فیلم‌ها (با پسوند srt) یونیکد نیستند (تقریباً همهٔ آنها)، پس برای نمایش این نوع زیرنویس‌ها، باید برنامهٔ پخش‌کنندهٔ فیلم تنظیم شود تا بتواند آنها را به درستی نمایش دهد. encoding اکثر این زیرنویس‌ها CP1256 (موسوم به Arabic Windows) است.

مزیت زیرنویس یونیکد در این است که همهٔ زبان‌های دنیا را پوشش می‌دهد، پس زمانیکه شما می‌خواهید فیلمی را به همراه زیرنویسش در رایانه ببینید، نیازی نیست که همواره تنظیم برنامهٔ پخش‌کننده خود را تغییر دهید. UTF-8 نام یک encoding برای یونیکد است که با ASCII هم سازگار است زیرا در UTF-8 کاراکترهای ASCII همانطور که هستند با همان حجم (در ۱ بایت) ذخیره می‌شوند اما کاراکترهائی که در ۱ بایت گنجانده نمی‌شوند، مطابق با استاندارد یونیکد ممکن است در ۲ الی ۴ بایت ذخیره شود. پس UTF-8 قالب خوبی است برای استفاده از کاراکترهای یونیکد با فشرده‌سازی مناسب و سازگار با ASCII همانطور که برنامه‌های گنو/لینوکس همگی بر اساس UTF-8 کار می‌کنند.

برای تبدیل زیرنویس فارسی به یونیکد (با UTF-8 encoding) در گنو/لینوکس نیاز به ابزار خاصی نیست. یک دستور کوچک و کاربردی، این کار را برای شما انجام می‌دهد، از دستور iconv استفاده کنید:

$ iconv -f CP1256 -t UTF-8 input.srt -o output.srt

input.srt نام فایل زیرنویسی است که یونیکد نیست (CP1256 encoding).
و output.srt نام فایل زیرنویس خروجی است که به یونیکد تبدیل شده است (UTF-8 encoding).

کنترل از راه دور برنامهٔ MPlayer

برنامه‌ی قدرتمند MPlayer یکی از بهترین برنامه‌های پخش فایل‌های صوتی – تصویری است، قدرت این برنامه فراتر از انتظار است. توسعه‌دهندگان این برنامه، یک ابزار قدرتمند برای تبدیل قالب‌های صوتی – تصویری به نام MEncoder را در کنار MPlayer قرار داده‌اند. MPlayer برنامه‌ای بدون رابط گرافیکی کاربر است و از طریق خط فرمان اجرا می‌شود، اما رابط‌های گرافیکی بسیاری برای آن نوشته شده از قبیل GMPlayer و KMPlayer و SMPlayer و …

در ادامه، روشی به کار خواهد رفت تا بعد از اجرای MPlayer بتوان کنترل پخش آن را از طریق دستورات خط فرمان انجام داد :wink: نام این روش «پروتکل حالت Slave» است و مزیت فوق‌العاده‌ی آن، کنترل MPlayer از یک برنامه یا رایانه‌ی دیگر است.

در حالت عادی برای پخش یک فایل صوتی – تصویری از دستور زیر استفاده می‌شود:

$ mplayer INPUT.AVI

INPUT.AVI نام فایلی است که می‌خواهیم MPlayer آن را پخش کند، اما در حالتی که بخواهیم MPlayer را از راه دور کنترل کنیم، به جای آن از دستورات زیر استفاده می‌شود:

$ mkfifo remote-control
$ mplayer -slave -input file=remote-control INPUT.AVI

بنابر دستورات قبل، یک فایل از نوع FIFO به نام remote-control ایجاد خواهد شد، سپس MPlayer در حالت Slave اجرا خواهد شد، حالت Slave با استفاده از فایل FIFO به شما اجازه می‌دهد تا برنامه‌ی MPlayer را از هر جایی که می‌خواهید، کنترل کنید.

با واردکردن دستورات قبل، هم‌اکنون برنامه‌ی MPlayer باید در حال پخش باشد. در این لحظه شما باید یک ترمینال (یا کنسول) جدید را باز کرده و دستور زیر را در آن وارد کنید:

$ echo seek 120 > remote-control

واااو… فایلی که در MPlayer در حال پخش است به اندازه‌ی ۱۲۰ ثانیه به جلو می‌رود! به ترتیب دستورات زیر را وارد کنید و نتایج را از پنجره MPlayer مشاهده کنید:

$ echo seek -180 > remote-control
$ echo pause > remote-control
$ echo pause > remote-control
$ echo speed_incr -0.5 > remote-control
$ echo speed_incr 2 > remote-control
$ echo speed_set 1 > remote-control
$ echo volume 50 1 > remote-control
$ echo brightness 25 1 > remote-control
$ echo brightness 0 1 > remote-control

تعداد این تنظیمات بسیار زیاد است، برای دیدن لیست همه‌ی آنها، دستور زیر را وارد کنید:

$ mplayer -input cmdlist

در پایان، فایل remote-control را که ایجاد کرده بودیم، با دستور زیر پاک کنید:

$ rm remote-control

دنبال‌کردن

هر نوشتهٔ تازه‌ای را در نامه‌دان خود دریافت نمایید.