볼륨을 제어하고 모니터링하기 위해 멋진 wm용 위젯을 만들려고 합니다.
ALSA 및 PulseAudio에서는 스피커 볼륨을 얻고 설정하는 것이 쉽지만 실제 신호 강도를 얻는 것은 어떻습니까?
즉, 들리는 실제 소음을 의미합니다. 예를 들어 소리가 재생되지 않으면 소음은 0입니다. 앰프(VU 모니터)에서 보는 것과 같습니다.
/proc/
일반적으로 사용 중인 내용(예: CPU 사용량)에 대한 일부 값이 포함된 파일을 찾을 수 있지만 /proc/stat
이번에는 그렇지 않습니다.
실제로 목표는 앰프의 게인 VU 모니터와 유사한 라이브 오디오 디스플레이(바람직하게는 별도의 L/R 채널)를 표시하는 것입니다.
문제는 멋진 wm을 프로그래밍하는 방법이 아니라 이를 수행하는 데 사용할 수 있는 값을 얻는 방법입니다.
답변1
나는 이것이 사소한 것이 아니라고 생각하며 이 질문은 아마도 stackoverflow로 옮겨져야 할 것입니다.
내가 아는 한, 최종(ALSA) [오디오] 믹스에 액세스할 수 있는 인터페이스가 없거나 sysfs
전혀 없습니다. 일부 하드웨어(예 : )가 자체 믹싱을 수행 procfs
하더라도 소프트웨어에 그러한 것이 존재한다는 보장은 없습니다. emu10k1
비록 그것이 어떻게 작동하는지 모른다는 것을 인정하지만.
여러 카드의 가능성은 말할 것도 없고 동일한 카드에 여러 오디오 출력(디지털(예: SPDIF), 아날로그, 헤드폰 또는 스피커 등) 및 여러 스피커 구성 문제도 있습니다.
가장 좋은 방법은 사용되는 모든 ALSA 장치를 활용하는 것입니다(아마도 hw0
pulseaudio와 같은 사운드 하위 시스템에서 믹싱이 발생하거나 dmix
사운드 하위 시스템이 사용되지 않는 경우). 이는 오디오가 하드웨어에 도달하기 전의 "마지막 단계"이기 때문입니다. . 그렇다면 이것이 가능한지는 모르겠습니다.
사용자가 pulseaudio와 같은 것을 사용하고 있다고 가정하면 작업이 훨씬 쉬워집니다. 다음과 같은 소프트웨어파부 컨트롤이는 다음과 같이 달성되었습니다.재생탭은 물론, 프리파이널 믹스 스테이지까지출력 장치. 기술적으로 여기에는 오디오 스트림 자체를 가져온 다음 이를 주파수 영역으로 변환하는 작업이 포함됩니다(예:스토브) 어떤 방식으로든 이를 시각화하기 위해 실제로 필요한 것은 pulseaudio가 수신기를 통해 제공할 수 있는 오디오 스트림에 대한 액세스입니다(pavucontrol과 마찬가지로).
나는 별로 도움이 될 수 없지, 그렇지? 내가 당신이고 이것을 내 데스크탑에만 사용하고 싶었다면, 그리고 내가 펄스오디오(내가 직접 사용했던)를 사용하고 있었다면, 나의 첫 번째 목표는 최종 혼합 흐름을 얻으려고 시도하는 것입니다. 그 사람들이 여기 있어요이 스레드pactl
just 및 를 사용하여 이 작업을 수행하는 설득력 있는 방법을 찾은 것 같습니다 pacmd
. 이 작업은 프로그래밍 방식으로도 쉽게 수행할 수 있습니다.
오디오 스트리밍을 마스터하면 남은 것은 수학뿐입니다 :-)