আন-/ প্লাগড হেডফোনগুলি কীভাবে স্বয়ংক্রিয়ভাবে ভলিউম স্তর পরিবর্তন করবেন?


36

আমি যা চাই তা হল:

  • আমি যখন আমার হেডফোনগুলিতে প্লাগ ইন করি, তখন আমি শব্দটি নিঃশব্দ করতে এবং একটি নির্দিষ্ট ভলিউম স্তরে সেট করতে চাই।
  • আমি যখন আমার হেডফোনগুলি প্লাগ ইন করি, তখন আমি শব্দটি নিঃশব্দ করা (বা নির্দিষ্ট ভলিউমের স্তরে সেট করা) চাই।

ভলিউম স্তর নির্ধারণ করা সমস্যা নয়, তবে হেডফোনগুলি আন-/ প্লাগ করার সময় আমার একরকম এটি করা দরকার, তাই আমি এই ইভেন্টগুলি সম্পর্কে অবহিত হওয়ার উপায় খুঁজছি।

আমি দ্রুত /proc/asound/card0/codec#0হেডফোনগুলি প্লাগ ইন করা হয় কিনা তা নির্দেশ করে দেখতে পেয়েছি, তাই আমি পরিবর্তিত বিজ্ঞপ্তির inotifywaitউপর ভিত্তি করে ভলিউম স্তরটি ব্যবহার করে এটি পর্যবেক্ষণ করার চেষ্টা করেছি । দুর্ভাগ্যক্রমে ব্যর্থ হয়েছে কারণ প্রোক কোনও সাধারণ ফাইল সিস্টেম নয়।inotifywait

এটি করার অন্যান্য উপায় আছে (সম্ভবত পালস অডিও মাধ্যমে)?

অডিও ডিভাইস: ইন্টেল এইচডিএ , অডিও কোডেক: কনক্সেন্ট সিএক্স20585


আমি এ পর্যন্ত যা চেষ্টা করেছি তার সংক্ষিপ্তসার হিসাবে:

  • ইয়ার ক্যান্ডি: আমার সিস্টেমে মোটেও চালানো হয়নি। একটি পরিত্যক্ত প্রকল্প বলে মনে হচ্ছে?
  • কার্ল বিলেফেল্ট পোস্ট করা কোডটি কিছু হার্ডওয়ারে কাজ করতে পারে, এটি আমার হয় না।
  • 'স্পিকার' চ্যানেলের অভাবের কারণে স্টিফেনপলজারের ধারণাটি ব্যর্থ।
  • Aking1012 দ্বারা অনুপ্রাণিত হয়ে আমি এটিকে কার্নেল কোড (কোডেকের জ্যাক সেন্সিং কোডটি সন্ধান করার পরে) এর চারপাশে হ্যাক করে কাজ করেছিলাম, তবে এটি একটি বরং জটিল জটিল।

সুতরাং, আমি এখনও এটি করার একটি সহজ উপায় খুঁজছি।


দুর্দান্ত প্রশ্ন, আমিও এটি করতে চাই!
স্টিফেন পলগার

দুর্দান্ত ... তবে আমি মনে করি প্লাগ / আনপ্লাগে পছন্দসই "তাত্ক্ষণিক" প্রতিক্রিয়ার জন্য আলসার কাছে একটি প্যাচ প্রয়োজনীয় হবে। অন্যথায় এটি কাজ করবে বা কাজ করবে বলে মনে হবে তবে লোড বা অন্যান্য অবস্থার মধ্যে সাড়া পিছিয়ে যেতে পারে। প্লাগ ইভেন্ট এবং আউটপুট টগল এর মধ্যে আপনাকে যেতে হবে বলে মনে করেন। সম্ভবত সম্ভব, তবে আলু দেব যদি না বলেন যে এটি ট্রাঙ্কে প্রতিশ্রুতিবদ্ধ হবে তবে স্বতন্ত্র প্যাচ ভিত্তিতে স্যুওও মূল্যবান নয়।
রোবটহুমানস

একটি উপায় হ'ল জিডিবিতে মডিউলটি লোড করা হবে, "স্বাভাবিক" শব্দ ইভেন্টগুলি থামার জন্য অপেক্ষা করুন, রেকর্ড বিকল্পটি ব্যবহার করুন, হেড ফোনগুলি প্লাগ করুন এবং আনপ্লাগ করুন এবং ডিবাগ রেকর্ডিংয়ে কী ঘটেছিল তা দেখুন।
রোবটহুমানস

আপনি কত বিলম্ব সহ স্বাচ্ছন্দ্য বোধ করেন?
রোবটহুমানস

উত্তর:


3

কনসোল থেকে ভলিউম স্তর নির্ধারণ করতে কমান্ড অ্যামিক্সার ব্যবহার করুন। উদাহরণ স্বরূপ:

অ্যামিক্সার এসসেট মাস্টার প্লেব্যাক 0%

আপনার স্তর 0% এ সেট করবে

আপনি যখন আপনার হেডফোনগুলি প্লাগ করেন তখন কীভাবে এটি পরিবর্তন করতে হয় তা আমি জানি না ... তবে সম্ভবত কেউ আপনাকে এটির সাহায্য করতে পারে


3

ওয়ানিরিকের ইউডিএস চলাকালীন জ্যাক সনাক্তকরণ সম্পর্কে একটি অধিবেশন বসেছে। বিস্তারিত জানার জন্য ব্লুপ্রিন্ট দেখুন । মনে হচ্ছে এটি হ'ল যা আমি খুঁজছি ঠিক তা করবে: বিভিন্ন ডিভাইসের জন্য বিভিন্ন ভলিউমের মাত্রা - কেবল প্রতিটি হার্ডওয়ারে নয়:

<htorque> এমন কিছু সম্পর্কে যা আমি উত্সাহী: আমি কি খুব শীঘ্রই বিভিন্ন ডিভাইসের (যেমন অভ্যন্তরীণ শব্দ নিঃশব্দ, হেডফোন 75%) জন্য বিভিন্ন ভলিউম স্তর পেতে সক্ষম হব?

<coling> এটি সমর্থিত হবে (কিছু h / ডাবলু) হ্যাঁ। টাইমস্কেলগুলি "শীঘ্রই": পি
<কলিং> (আমি যখন জ্যাকগুলি প্লাগ / প্লাগ লাগানো হয় তখন (বর্তমান ভলিউম সহ) ওএসডি প্রদর্শিত হবে বলেও আশা করতাম)

11.10 এর জন্য আপডেট

এটি এখন ওয়ানিরিকে কাজ করা উচিত - দুর্ভাগ্যক্রমে আমার থিংকপ্যাড টি 510 বর্তমানে এমন একটি সিস্টেম বলে মনে হচ্ছে যা সমর্থিত নয়।

ডেভিড হেনিংসনের আরও একটি ফলোআপ:

দীর্ঘ গল্প সংক্ষেপে, এটি একটি আকাঙ্ক্ষিত বৈশিষ্ট্য এবং আমরা সেই দিকে এগিয়ে চলেছি তবে ধীরে ধীরে বৈশিষ্ট্যটি প্রথম নজরে যেমন মনে হচ্ছে তার চেয়ে জটিল।

সুসংবাদ: আসন্ন উবুন্টু ওয়ানরিক (১১.১০) এ, এটি আসলে কাজ করছে। খারাপ খবর: এটি সবার পক্ষে কাজ করছে না।

আরও এখানে

12.04 এর জন্য আপডেট

এটি এখন আমার থিংকপ্যাড টি 510 (এবং অন্যান্য অনেক মডেল) এর সাথে উবুন্টু 12.04 (বিকাশ সংস্করণ) এ কাজ করছে।


বর্তমানে কোনও হার্ডওয়্যার সমর্থিত কোনও ট্র্যাকিং রয়েছে, বা সেই প্রভাবটির কিছু?
মিউ মাইন্ড


2

আপনার কতটা কোডিংয়ের অভিজ্ঞতা আছে inotifywaitতা আমি জানি না , তবে আপনি উল্লেখ করেছেন তাই আমি ধরে নিচ্ছি আপনি কমপক্ষে শেল স্ক্রিপ্টিংয়ের সাথে স্বাচ্ছন্দ্য বোধ করছেন। এই নিবন্ধের উপর ভিত্তি করে নীচের সি প্রোগ্রামটি আপনার হেডফোনগুলি প্লাগ করা বা প্লাগযুক্ত করা হচ্ছে তা সনাক্ত করতে সক্ষম হওয়া উচিত, তারপরে আপনি যা খুশি ক্রিয়া সম্পাদন করতে পারবেন।

#include <linux/input.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <fcntl.h>

int main(int argc, char* argv[])
{
    int fd = -1;
    char name[256]= "Unknown";
    struct input_event event;

    if ((fd = open(argv[1], O_RDONLY)) < 0) {
        perror("evdev open");
        exit(1);
    }

    if(ioctl(fd, EVIOCGNAME(sizeof(name)), name) < 0) {
        perror("evdev ioctl");
    }

    printf("The device on %s says its name is %s\n",
            argv[1], name);

    read(fd, &event, sizeof(struct input_event));
    printf("Event type is %d\n", event.type);
    printf("Event code is %d\n", event.code);
    printf("Event value is %d\n", event.value);

    close(fd);
    return 0;
}

প্রোগ্রামটি একটি যুক্তি নেয় যা আপনার হেডফোনগুলির জন্য ইনপুট ইভেন্ট ডিভাইসের পথে হওয়া উচিত। এটি /dev/input/event7আমার জন্য, তবে এটি আপনার সিস্টেমে রয়েছে কিনা তা খুঁজে পেতে আপনাকে কয়েকটি চেষ্টা করতে হতে পারে। আপনার সেই ডিভাইসে পড়ার অনুমতি প্রয়োজন হবে। প্রোগ্রামটি ডিভাইসের নাম এবং প্রস্থানের আগে প্রথম ইভেন্টের ধরণ, কোড এবং মান মুদ্রণ করবে।


দুর্ভাগ্যক্রমে ইভেন্ট * এর কোনওটিই আমার হেডফোনে সংযুক্ত হতে পারে নি। যাইহোক, +1 - সম্ভবত এটি অন্যান্য ব্যবহারকারীদের জন্য সহায়ক।
horque

+1, আমার জন্য কাজ করে, event.valueসত্যিই স্যুইচ করা হয় ... তবে মানটি পরিবর্তিত হলেইread অপারেশনটি ফিরে আসে ... সম্ভবত আপনি কীভাবে এটি ব্লক না করা যায় তা জানেন? যাই হোক ধন্যবাদ!
কেভিন

আপনি O_NONBLOCKযখন ডিভাইসটি খুলবেন তখন আপনি যুক্ত করুন এবং এর ফেরতের মানটি পরীক্ষা করুন read। যদি এটি নেতিবাচক হয় তবে পঠনটি ব্লক হয়ে গেছে বা অন্য কোনও ত্রুটি ঘটেছে। পোলিং ছাড়াই এটি করার আরও আরও জটিল উপায় রয়েছে যদি আপনি এটিকে কোনও বৃহত্তর প্রোগ্রামে অন্তর্ভুক্ত করেন।
কার্ল বিলেফেল্ট

1

Dmesg এবং অন্যান্য লগ ফাইল চেক করুন। সম্ভবত প্লাগ ইন / আউট কিছু বিশেষ বার্তা আগুন।

তারপরে, আপনি লগ ফাইলটি বিশ্লেষণ করতে এবং ইভেন্টগুলি সনাক্ত করতে একটি ডিমন ব্যবহার করতে পারেন। আমি মনে করি আপনি এই বিষয়টি থেকে কি করতে জানেন :)


1

যদি তুমি করো

amixer sset 'Speaker' playback 0%

স্পিকার ভলিউম নিঃশব্দ করা হবে তবে হেডফোনগুলি কাজ চালিয়ে যাবে। হেডফোনগুলি প্লাগ ইন করার অর্থ কোনও শব্দ নেই। যা আপনি প্রায় চান ...

তবে ...

আপনি যদি ভলিউম নিয়ন্ত্রণ পরিবর্তন করেন তবে 'স্পিকার' ভলিউম সেটিংস আবার সেট আপ হবে। এর কারণ হ'ল পালসওডিওগুলি ভলিউম সেট করার সাথে চালাক হওয়ার চেষ্টা করে ( আরও তথ্যের জন্য http://pulseaudio.org/wiki/PulseAudioStoleMyVolume দেখুন )। যদিও আমরা এটি খণ্ডগুলির সাথে গোলযোগ থেকে আটকাতে পারি।

খুলুন /etc/pulse/default.pa

এবং লাইন খুঁজে

load-module module-udev-detect

এবং এটিকে পরিবর্তন করুন

load-module module-udev-detect ignore_dB=1

পালসওদিও পুনরায় চালু করুন।

killall pulseaudio

এখন আপনি যদি স্পিকারের ভলিউমকে নিঃশব্দ করেন তবে মাস্টার ভলিউম পরিবর্তিত হবে না। সুতরাং হেডফোনগুলি কাজ করবে তবে স্পিকার নীরব থাকবে।


একটি ভিন্ন পদ্ধতির হতে হবে, তবে দুর্ভাগ্যক্রমে আমার স্পিকার ভলিউম চ্যানেল নেই, কেবলমাত্র মাস্টার এবং পিসিএম।
horque

1

পরিবর্তনের জন্য এসিপিআইডি সকেটটি পরীক্ষা করুন, পাইথন বা সি বা শেল স্ক্রিপ্টের সাহায্যে ( ইয়ারফোন প্লাগইন প্লে নিয়ন্ত্রণ করার জন্য পাইথন কোড এবং রিদম্বক্সে বিরতি দেওয়ার জন্য) সাহায্য করা যেতে পারে। ইয়ারফোন প্লাগইন এবং ইয়ারফোন প্লাগ আউট সনাক্ত করতে এসিপিডি ভোল্টেজের পরিবর্তনগুলি পরীক্ষা করুন। যদিও এক সেকেন্ড বিলম্ব আশা করা যায়।


0

পালসওডিওতে একটি মডিউল ডিফল্টরূপে পাঠানো হয় যা এটি অর্জনের জন্য ডিজাইন করা হয়েছে:

http://pulseaudio.org/wiki/Modules#module-device-restore


এই মডিউলটি আমাকে কীভাবে সাহায্য করবে বলে আমি মনে করি না।
htorque

0

আমি মনে করি এটি ব্যবহারের জন্য আপনার যা প্রয়োজন তা আপনি অর্জন করতে পারেন: https://bbs.archlinux.org/viewtopic.php?pid=1105458#p1105458


উবুন্টুকে জিজ্ঞাসা করুন স্বাগতম! যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান।
কেভিন বোয়েন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.